matlab ode45 求解二阶常微分方程

新手想用ode45求解上述二阶三元常微分方程组,几次尝试均未成功,请大神帮忙编写matlab代码,最好有图,谢谢!

function test()
[t,y]=ode45(@func1, [0,1], [0;0;1;2;2;2]);
figure(1);
clf;
plot(t, y);
legend('x','y','z','dx','dy','dz');
grid on;
function f=func1(t,x)
r=(x(1)^2+x(2)^2+x(3)^2)^(1/2);
f=[x(4); x(5); x(6); r*x(1); r*x(2); r*x(3)];追问

您好,是我表述的不清楚,我想要的结果是以(x,y,z)为坐标的点随时间的变化曲线。可以帮帮我么,谢谢了。

追答

运行这段代码, 图形就有了啊.

追问

我想把时间变长一点时,遇到报错:[t,y]=ode45(@func1, [0,10], [0;0;1;2;2;2]);
Warning: Failure at t=1.918541e+000. Unable to meet integration tolerances without reducing the step size...请问有办法解决么,时间t只能设置在[0,1]么?

追答

函数增长太快, 接近t=2时, 已经趋于无穷.
说明这个地方存在一个不连续点.
ode45会失效.
可以在大于这个不连续点的位置重新设置一个初始条件, 就可以继续用ode45了.

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

matlab ode45 求解二阶常微分方程
function test()[t,y]=ode45(@func1, [0,1], [0;0;1;2;2;2]);figure(1);clf;plot(t, y);legend('x','y','z','dx','dy','dz');grid on;function f=func1(t,x)r=(x(1)^2+x(2)^2+x(3)^2)^(1\/2);f=[x(4); x(5); x(6); r*x(1); r*x(2); r...

用matlab的ode45求解二阶微分方程组,没有警告没有报错,但是运算的很 ...
【数值方法的局限性】 :对于某些特殊的微分方程,如包含奇异点或边界条件的方程,ode45 可能难以直接处理。这时可能需要对方程进行预处理或者使用专门的数值方法。【并行计算】:对于规模较大的微分方程组,可以考虑使用并行计算技术来加速求解过程。求解器选择:ode45 是适用于非刚性问题的求解器。如果问题实...

matlab想用ode45求解一个二阶常微分方程
首先,我们需要明确ode45的适用条件。由于二阶常微分方程的解包含两个变量(y和y'),通常情况下,初始条件应为y(0)=某值和y'(0)=某值。这类问题是适合使用ode45求解的。然而,如果题目中给出的初始条件是同一变量的,即y(0)=某值和y(10)=某值,那么就不能使用ode45函数,而应该使用bvp4c函数...

matlab想用ode45求解一个二阶常微分方程
1、首先我们应该理清ode函数应用条件,由于二阶常微分方程的解有两个变量(y和y'),一般来说,给出的初始条件为 y(0)=某值和y'(0)=某值,这类问题是适合用ode函数求解。2、对于题主提出另一种初始条件(同一变量的),即y(0)=某值,y(10)=某值,则不能用ode函数,而...

MATLAB的ode45函数实例求常微分方程数值解
将返回数值解。以二阶微分方程为例,首先定义微分函数,然后在主程序中调用ode45,设置初始条件、时间区间以及微分函数,运行程序后可获得数值解。总之,ode45函数是MATLAB求解常微分方程的有力工具,尤其适用于非刚性常微分方程。通过创建方程函数、调用ode45函数并设置适当的参数,即可得到方程的数值解。

如何用Matlab编程计算二阶常微分方程组的数值解
用Matlab编程计算二阶常微分方程组的数值解的方法有很多种,最常用有ode45函数。ode45函数的使用格式:【t,y】=ode45(odefun,tspan,y0)例如:>> odefun=@(t,y)[y(1)+2*y(2);3*y(1)+2*y(2)]; %自定义函数 >> tspan=[0 20]; %时间 >> y0=[1 1]; %初值 >> [t,y]= ode45...

求matlab ode45求解二阶微分方程组,初始值自设,求高手解答啊..._百...
ode只能求数值解,你大概是想要解析解吧,如果是的话就用符号常微分 syms dsolve('D2y+Dy+y=x','x+Dx+Dy=sin(t)',t)大概是这样,我没试,你稍微查一查,比ode用起来简单,不用单独创建函数。

matlab里的ode45求解二阶微分方程问题!!求大神!!在线等!
新的matlab版本好像不鼓励采用global了。你的全局变量有点多了,哈哈。简单例子:m=2;[t,y]=ode45(@(t,x)f1(t,x,m), [0,10], [2])function dy=f1(t,x,m)y=m-x;

二阶常微分方程联立解
在x从1到10之间求解 编写m文件odex2.m储存 function yy=odex2(x,z)yy=zeros(4,1)yy=[z(2);-exp(z(1))*z(2)-z(1)+z(3);z(4);-z(3)+z(1)-sin(x)]在matlab命令窗口中输入 [x,z]=ode45('odex2',[0,10],[1;0;1;1])plot(x,z(:,1),'r',x,z(:,3))运行之后...

...的MATLAB解法 请告诉一种用ode45来解二阶微分方程组的方法,最好把...
一个二阶微分方程:y''+y'+y=sin(t)初始条件为y(0)=5,y'(0)=6.过程:先降阶为一阶微分方程组 y'=z z'=-z-y+sin(t)编制如下函数m文件 function dy=weifen(t,x)dy=zeros(2,1);y=x(1)z=x(2)dy(1)=x(2);dy(2)=sin(t)-x(2)-x(1);然后用ode45解方程 [t,y]=...

相似回答