求助,NDsolve解出来的函数怎么求零点?
mathematica吧
全部回复
仅看楼主
level 5
angry_almond 楼主
用Solve试了一下,应该是不行[泪]
2016年03月26日 13点03分 1
level 9
试一下NSolve
2016年03月28日 09点03分 2
……来,你用NSolve解一个给我看看。
2016年04月02日 05点04分
level 9
FindRoot也行
2016年03月28日 09点03分 3
可以是可以,但是对于多零点问题极不方便。
2016年04月02日 05点04分
吧务
level 15
这个问题最好是在NDSolve里就用WhenEvent给解决掉:
{{xsol, ysol}, {zero}} =
Reap@NDSolveValue[{x'[t] == -y[t] - x[t]^2, y'[t] == 2 x[t] - y[t]^3, x[0] == y[0] == 1,
WhenEvent[x[t] == 0, Sow@t]}, {x, y}, {t, 20}]
Plot[xsol[t], {t, 0, 20}, Epilog -> {Red, PointSize@Large, Point[{#, 0} & /@ zero]}]
如果非要从插值函数开始解决,那么请试试神奇的RootSearch:
http://library.wolfram.com/infocenter/Demos/4482/
或者用MeshFunctions搭配Mesh找出粗略的零点位置(这部分在帮助文档里有例子这里不多说了)再搭配FindRoot精确求值。
顺便这个话题扩展出去其实是个大话题,不过我现在想去吃饭了所以就先到这儿。
2016年04月02日 05点04分 4
感谢大神!!RootSearch真好用啊
2022年05月13日 01点05分
1