利用MATLAB求解微分方程初值问题

现在我已经利用matlab求出了dM/dt的解
但是怎么样解出M=0时候的t,和t=0时候的M?
我看matlab的HELP,觉得应该可以利用:
[T,Y,TE,YE,IE] = solver(odefun,tspan,y0,options)
以及
sol = solver(odefun,[t0 tf],y0...)
但是具体用法我不是很懂,希望达人能帮忙
答得好有加分。

朋友,要根据初值积分对dM/dt积分求得M,才能求解M(t)=0或t(M)=0。
solver(积分函数,积分时间,初值,设置)也是这样的数学方法。
简单的求解
[时间,解]=solver(积分函数,积分时间,初值);追问

恩,我按照你说的已经解出M了,再怎么求M(t)=0和t(M)=0?

追答

你是符号求解还是数值求解?符号求解可再用solve();
数值解你应该得到了数组M,和一个时间序列T,如果点不较少,精度不高,所以以序列T,M差值,找到其与0之差绝对值最小的就行。例如

X=linspace(min(T),max(T),N);%N自己幅值,X是新的时间序列
Y=interp1(T,M,X,'cubic');%差值方法自己确定
[a b]=min(abs(Y));%如果Y是单调的话
T0=T(b);%T0为M(t)=0的解
当然,这里把问题直接简单化了,但方法可行,针对你的具体问题相应调整就行。

温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答