利用MATLAB求解微分方程初值问题
现在我已经利用matlab求出了dM/dt的解但是怎么样解出M=0时候的t,和t=0时候的M?我看matlab的HELP,觉得应该可以利用:[T,Y,TE,YE,IE]=...
现在我已经利用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...)
但是具体用法我不是很懂,希望达人能帮忙
答得好有加分。 展开
但是怎么样解出M=0时候的t,和t=0时候的M?
我看matlab的HELP,觉得应该可以利用:
[T,Y,TE,YE,IE] = solver(odefun,tspan,y0,options)
以及
sol = solver(odefun,[t0 tf],y0...)
但是具体用法我不是很懂,希望达人能帮忙
答得好有加分。 展开
1个回答
展开全部
朋友,要根据初值积分对dM/dt积分求得M,才能求解M(t)=0或t(M)=0。
solver(积分函数,积分时间,初值,设置)也是这样的数学方法。
简单的求解
[时间,解]=solver(积分函数,积分时间,初值);
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的解
当然,这里把问题直接简单化了,但方法可行,针对你的具体问题相应调整就行。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询