matlab里ode45解决二阶常系数微分方程用法
1、相关常数都没给,这里随便设置一些数值:
m=1;c=2;k=3;
y0=4;yp0=5;
tf=10;
dy=@(t,y)[y(2);-(c*y(2)+k*y(1))/m];
[t,y]=ode45(dy,[0 tf],[y0 yp0]);
plot(t,y(:,1))
2、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)];
扩展资料:
升阶法:
设y''+p(x)y'+q(x)y=f(x),当f(x)为多项式时,设f(x)=a0x^n+a1x^(n-1)+…+a(n-1)x+an,此时,方程两边同时对x求导n次,得
y'''+p(x)y''+q(x)y'=a0x^n+a1x^(n-1)+…+a(n-1)x+an……
y^(n+1)+py^(n)+qy^(n-1)=a0n!x+a1(n-1)!
y^(n+2)+py^(n+1)+qy^(n)=a0n!
令y^n=a0n!/q(q≠0),此时,y^(n+2)=y^(n+1)=0。由y^(n+1)与y^n通过倒数第二个方程可得y^(n-1),依次升阶,一直推到方程y''+p(x)y'+q(x)y=f(x),可得到方程的一个特解y(x)。
参考资料来源:百度百科-二阶常系数线性微分方程
相关常数都没给,这里随便设置一些数值:
m=1;c=2;k=3;
y0=4;yp0=5;
tf=10;
dy=@(t,y)[y(2);-(c*y(2)+k*y(1))/m];
[t,y]=ode45(dy,[0 tf],[y0 yp0]);
plot(t,y(:,1))
就是没给tf和y0、y'0啊,给了我就不用提问了
你的要求是【用ode45运算】,也就是说用数值方法求解。
可以负责任的回答你,不给定这些参数,是不可能用ode45来求解的。这是基本常识。