【求助】使用FindRoot求解方程出错,请帮我看一下什么问题
mathematica吧
全部回复
仅看楼主
level 1
代码如下
f[Subscript[k, i] _,
Subscript[\[Omega],
i] _] = ((\[Omega] - k*I)^2*BesselI[m, Subscript[n, 1]])/(
Subscript[n, 1]*
D[BesselI[m, Subscript[n, 1]], Subscript[n, 1]]) - (
Q*\[Omega]^2*BesselK[m, Subscript[n, 2]])/(
Subscript[n, 2]*D[BesselK[m, Subscript[n, 2]], Subscript[n, 2]]) +
We*(k^2 + m^2 - 1) /. {Subscript[n,
1] -> (k^2 + Subscript[Ma, 1]^2*(\[Omega] - k*I)^2)^0.5,
Subscript[n,
2] -> (k^2 + Subscript[Ma, 2]^2*\[Omega]^2 )^0.5} /. {\[Omega] ->
Subscript[\[Omega], r] + Subscript[\[Omega], i]*I,
k -> Subscript[k, r] + Subscript[k, i]*I}
m = 0;
We = 8*10^-6;
Q = 0.0014;
Subscript[Ma, 1] = 0.2;
Subscript[Ma, 2] = 0.57;
Subscript[\[Omega], r] = 0;
Subscript[k, r] = 150;
FindRoot[{Re[f[Subscript[k, i] _, Subscript[\[Omega], i] _]] == 0,
Im[f[Subscript[k, i] _, Subscript[\[Omega], i] _]] ==
0}, {{Subscript[k, i], 1.5}, {Subscript[\[Omega], i], 160}}]
求解会报错,而且求不出结果,请问这是什么原因?该怎么解决?
2019年02月20日 08点02分 1
吧务
level 15
下标表达式是不能做函数自变量的。函数自变量必须是Symbol。非要用下标可以开Notation程序包。
2019年03月02日 06点03分 2
还有FindRoot里面的也明显是错的。_只在定义函数的时候才加。具体参看_的帮助。
2019年03月02日 06点03分
1