mathematica使用findroot解方程组出错
代码如下f _,
Subscript[\,
i] _] = ((\ - k*I)^2*BesselI])/(
Subscript*
D], Subscript]) - (
Q*\^2*BesselK])/(
Subscript*D], Subscript]) +
We*(k^2 + m^2 - 1) /. {Subscript[n,
1] -> (k^2 + Subscript^2*(\ - k*I)^2)^0.5,
Subscript[n,
2] -> (k^2 + Subscript^2*\^2 )^0.5} /. {\ ->
Subscript[\, r] + Subscript[\, i]*I,
k -> Subscript + Subscript*I}
m = 0;
We = 8*10^-6;
Q = 0.0014;
Subscript = 0.2;
Subscript = 0.57;
Subscript[\, r] = 0;
Subscript = 150;
FindRoot[{Re _, Subscript[\, i] _]] == 0,
Im _, Subscript[\, i] _]] ==
0}, {{Subscript, 1.5}, {Subscript[\, i], 160}}]
求解会报错,而且求不出结果,请问这是什么原因?该怎么解决?(很抱歉图片传不上来,报错如下)
FindRoot::nlnum: 在 {Subscript,Subscript[\, i]} = {1.5,160.} 处,函数值 {-0.471847-35.84 Re^0.5]/(BesselK] ((22497.8 +<<1>>)+<<1>>)^0.5)],0.210846 -35.84 Im/(BesselK <<1>>)]} 不是由数字组成的维度为 {2} 的列表. 软件有bug不正常吗? mathematica 发表于 2019-2-21 08:48
软件有bug不正常吗?
那该怎么解决?怎么才能算出结果? 这应该是中间结果有表的维度不匹配。自己仔细检查一下。 hujunhua 发表于 2019-2-21 10:45
这应该是中间结果有表的维度不匹配。自己仔细检查一下。
好像只是方程组这里有表,另外我把{3,160}代入原函数,理论上应该得到一个数,但结果却是一个表达式,请问这是什么原因?是不是这个问题导致上面的报错? 代码太乱了。函数f的定义里 Subscript _ 这个不是Pattern,而是乘积 wayne 发表于 2019-2-21 20:37
代码太乱了。函数f的定义里这个不是Pattern,而是乘积
什么意思。。。我这里是这样的 按道理Mathematica的语法高亮会起作用的,你的下划线会导致前面的变量 变颜色,没有变颜色说明Mathematica的解释器就是按照乘法解释了【因为 有空格 隔开】
这个是语法问题。带有下标的实际上是一个Subscript函数,而不是表达式。
可以不必函数的,直接用变量
m=0;
We=8*10^-6;
Q=14/10^4;
Subscript=2/10;
Subscript=57/100;
Subscript[\,r]=0;
Subscript=150;
fff=((\-k*I)^2*BesselI])/(Subscript*D],Subscript])-(Q*\^2*BesselK])/(Subscript*D],Subscript])+We*(k^2+m^2-1)/.{Subscript->(k^2+Subscript^2*(\-k*I)^2)^(1/2),Subscript->(k^2+Subscript^2*\^2)^(1/2)}/.{\->Subscript[\,r]+Subscript[\,i]*I,k->Subscript+Subscript*I};
FindRoot[{Re==0,Im==0},{{Subscript,3},{Subscript[\,i],160}},WorkingPrecision->100]
{Subscript->3.327053339450944610195029892563089265167289827915281452890687358908902031079265845904909468842704783
,Subscript[\, i]->149.6716262510162998687133461054467696048408225279457142116181855022206759477681954516776447786470369}
wayne 发表于 2019-2-22 20:25
可以不必函数的,直接用变量
谢谢谢谢,终于解决了,不过那个下划线判别为乘法我还是不太理解,我输入的时候也没有加空格,下去我再多学习吧,还是很感谢你
页:
[1]