求助!Solve命令!图能给出来,但是求解时出错!
mathematica吧
全部回复
仅看楼主
level 1
岩ee 楼主
temp[3] =
196 /5 ((k1d)/(k2d))*Tanh[k1d] + 49/5 Tanh[k2d] -
196 /5 Sqrt[(k1d)/(k2d)* Tanh[k1d]] Sqrt[ Tanh[k2d]] -
49/5 Sqrt[4 (k1d/k2d)^2 + 1 - 4 (k1d/k2d) Cos[a1 - a2]]*
Tanh[k2d* Sqrt[4 (k1d/k2d)^2 + 1 - 4 (k1d/k2d) Cos[a1 - a2]]] //
Expand;
k2d = 3*Pi/5;
a1 = 0;
a2 = Pi/36;
Plot[temp[3], {k1d, 0, 3}]
Solve[temp[3] == 0, k1d]
2016年01月11日 02点01分 1
level 7
temp[k1d_] :=
196/5 ((k1d)/(k2d))*Tanh[k1d] + 49/5 Tanh[k2d] -
196/5 Sqrt[(k1d)/(k2d)*Tanh[k1d]] Sqrt[Tanh[k2d]] -
49/5 Sqrt[4 (k1d/k2d)^2 + 1 - 4 (k1d/k2d) Cos[a1 - a2]]*
Tanh[k2d*Sqrt[4 (k1d/k2d)^2 + 1 - 4 (k1d/k2d) Cos[a1 - a2]]] //
Expand;
k2d = 3*Pi/5;
a1 = 0;
a2 = Pi/36;
gra = Plot[temp[k1d], {k1d, -100, 50}, MeshFunctions -> {#2 &},
Mesh -> {{0.}}, MeshStyle -> Directive[PointSize[0.03], Red]]
Cases[Normal@gra, Point[ptlist_] :> ptlist, Infinity] //
SortBy[#, First] &
Reduce NSolve 都不行,可能是太复杂了;FindRoot 太简陋。只好用 @无影冬瓜 那抄来的奇技淫巧来解决了,然而漏掉了 {0,0} 处的根。
顺便吐槽下,MeshFunction&Mesh 黑箱试错好恶心
2016年01月11日 08点01分 2
啊,Plot的范围自己改一下吧,截图时用的 {k1d,-10,5},忘改了
2016年01月11日 08点01分
@whxhsn 其实这样解出来还是跟findroot还是有点差异的, list = Cases[Normal@gra, Point[ptlist_] :> ptlist[[1]], Infinity]; sol = FindRoot[temp[k1d] == 0, {k1d, #}] & /@ list会精确一点
2016年01月11日 13点01分
后来发现这种情况用带范围的NSolve挺方便的NSolve[{temp[x] == 0, -50 < x < 50}, x],顺便吐槽下每次都被at错ID真是忧伤。。。。
2016年01月11日 14点01分
这样貌似只能解到穿过x轴的解,像x^2,Abs[x]这种mesh不出来哎。
2016年01月11日 14点01分
吧务
level 15
朱军,还记得神奇的RootSearch函数吗?:
http://library.wolfram.com/infocenter/Demos/4482/
2016年10月01日 07点10分 3
@xzcyr 非常感谢
2023年04月06日 03点04分
1