解非线性方程涉及金额

1视图(30天)
Tiku
Tiku 2021年6月29日
你好,
我试图解决一个非线性方程。
代码
信谊 g y z n
x = 0.0585;
y = 0.01;
π=符号(π);
eqn = 1 / g-sqrt (1 + z。^ 2 / ((2 * n + 1) *π* y + 4.4 *π* x * g) ^ 2) = = 0;
索尔=解决(eqn g, “returnconditions” ,真的, “maxdegree” 4);
G =简化(sol.g)
我的代码来解决非线性方程
sumArg4 = @ (n z) 2 *ππ* (2 * n + 1) * * (G (4) 1) / ((2 * n + 1) * pi + 4.4 *π* x / y) / ((2 * n + 1) * pi + 4.4 *π* x * G (4) / y) + 0.6431;
这里只有一个以上的四根满足所以我把第四根(做那些计算 Mathematica)
mytrial4 = @ (z) symsum (sumArg4, n, 0, 10000)
解决非线性方程z %
zsol = fsolve (mytrial4, 2.28)
我读了一些文章,他们说fsolve不能用于符号表达式。
运行以上代码给了我一个错误
function_handle与价值:
@ (z) symsum (sumArg4, n, 0, 10000)
错误使用fsolve(第309行)
FSOLVE要求所有由函数返回值的数据类型的两倍。
错误solveg_new_gz(24)行
zsol = fsolve (mytrial4, 2.28)
所以你能建议我如何照顾这个错误吗?
我做了在Matlab数学但想尝试。
谢谢你!

答案(1)

ILDEBERTO DE LOS SANTOS鲁伊斯
这将花很长时间来评估从n = 0到n = 10000。
你可以在短时间内解决它只考虑从n = 0到n = 10,虽然也是必要的方程定义为一个数值函数处理。
%……
mytrial4 = @ (z)双(eval (symsum (sumArg4, n, 0, 10)))
zsol = fsolve (mytrial4, 2.28)
1评论
沃尔特·罗伯森
沃尔特·罗伯森 2021年7月22日
不eval()符号表达式。符号表达式的语言显示给用户不是MATLAB和不是MuPad(内部象征引擎)。如果你必须使用潜艇()。
在某些情况下,您可以使用matlabFunction加快计算速度。

登录置评。

类别

找到更多的在非线性优化帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!