利用MATLAB求解微分方程初值问题
来源:学生作业帮 编辑:神马作文网作业帮 分类:综合作业 时间:2024/11/10 16:04:00
利用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...)
但是具体用法我不是很懂,希望达人能帮忙
答得好有加分.
现在我已经利用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的解 当然,这里把问题直接简单化了,但方法可行,针对你的具体问题相应调整就行。
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的解 当然,这里把问题直接简单化了,但方法可行,针对你的具体问题相应调整就行。