用matlab解二元二阶微分方程(用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*x(3)];

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)。
参考资料来源:百度百科-二阶常系数线性微分方程


function dy=dong22(t,y)

m=1;

k=2;

g=    %注意输入g l0

l0=

dy=[y(2);

    y(1)*y(4)^2+g*cos(y(3))-(k/m)*(y(1)-l0);

    y(4);

    -(2/y(1))*y(2)*y(4)-(g/y(1))*sin(y(3))];

    然后和一次微分方程的一样。



那我在命令框里面输入
y0=[1;0;5*3.14/180;0];
[t,y]=ode45('dong22',[0,200],y0];
这里就开始说有错误了
还有一句还没输入
plot(t,y(:,1))
请帮我看一下哪里错误了 谢谢
function dy=dong22(t,y)
里面的g和l0要给出的·。

我已经给出了,可不可以加我qq373605738 谢谢 感激不尽
已经加了。


用matlab解二元二阶微分方程(用ode45)视频

相关评论:
  • 13978214203用matlab解二元二阶微分方程(用ode45)
    毕垄尹-(2\/y(1))*y(2)*y(4)-(g\/y(1))*sin(y(3))];然后和一次微分方程的一样。

  • 13978214203matlab解二阶微分方程 方程:y''=680000(y-60)\/(46.05*(1.5-x)) 边界...
    毕垄尹matlab解二阶微分方程 方程:y''=680000(y-60)\/(46.05*(1.5-x)), 边界条件:y(0)=70; y'(1.5)=0。可以用数值方法来求解,如变步长的Runge——Kutta法。求解思路:1、自定义微分方程函数 function f = ode_fun(x,y)f=[y(2);680000*(y(1)-60)\/(46.05*(1.5-x))];end ...

  • 13978214203MATLAB怎样用simulink求解解二阶微分方程d2x\/dt2-u*(1-x^2)*dx\/dt+...
    毕垄尹clear;clc [t,x]=ode45(@(t,x)[x(2);(1-x(1)^2)*x(2)-x(1)],[0 10],[1 0]);plot(t,x(:,1))例:把你要积分的函数编写出来 function dy = rigid(t,y)dy = zeros(3,1); % a column vector dy(1) = y(2) * y(3);dy(2) = -y(1) * y(3);dy(3) = ...

  • 13978214203二元二阶微分方程组求数值解的matlab程序
    毕垄尹原因:如果按照现在的初始条件,则第一个微分方程各项为0,方程不起作用。而且就算法而言,二阶(最高阶)导数的系数为0,会导致数值积分算法无法启动。参考代码大致如下:m=1;g=9.8;k=100;l0=1.1;x0=[0.1 0 0 0];% 定义x1=l, x2=l', x3=a, x4=a'dx=#(t,x)[x(2); (m*...

  • 13978214203如何用matlab求解二阶微分方程,以及程序实例
    毕垄尹conds]=solve(sin(x)==1,'ReturnConditions', true),按回车键可以得到方程解。3、转换一下,可以看到sin(x)=1方程的解是如下图所示 。4、也可以求解下面的一个方程。5、输入symsabcyx;[x,y]=solve([a*x^2+b*y+c==0,a*x+2*y==4],[x,y])。6、按回车键可以得到方程解。

  • 13978214203如何用matlab求二阶微分方程?
    毕垄尹Simulink是matlab下基于框图的用于复杂动态系统建模的工具。今以 y"+4y'+4y=cos2t(0≤t≤10),y(0)=1,y'(0)=-2 二阶微分方程为例,用Simulink求解的步骤如下:第一步、分析微分方程的特点确定模块 我们将y"+4y'+4y=cos2t方程改写成y"=cos2t-4y'-4y,从右边可知,式子是由cos2t外加载...

  • 13978214203用matlab编程实现四阶龙格库塔解二元二阶微分方程组
    毕垄尹求解二阶微分方程,初始条件还需要给出y1'(0)和y2'(0)。这里暂时按照0处理。function zd530003514 a=0.1;b=0.1;Y0 = [b-1; 0; b; 0];解方程 [t,Y]= ode45(@ode,[0 10],Y0);y1=Y(:,1);y2=Y(:,3);绘图 subplot 211 plot(t,y1);subplot 212 plot(t,y2);微分方程定义...

  • 13978214203matlab 求解二阶微分方程
    毕垄尹该二阶微分方程可以使用dsolve()函数直接求解。求解过程如下:>> syms x(t)>> D2x=diff(x,2);Dx=diff(x,1);>> x=dsolve(7*D2x+4*Dx+5*x+7==6*sin(8*t))运行结果为

  • 13978214203matlab解微分方程组
    毕垄尹matlab解微分方程组方法是:1、首先,在matlab中解常微分方程有两种方法,一种是符号解法,另一种是数值解法。在本科阶段的微分数学题,基本上可以通过符号解法解决。2、用matlab解决常微分问题的符号解法的关键命令是dsolve命令。该命令中可以用D表示微分符号,其中D2表示二阶微分,D3表示三阶微分,以此...

  • 13978214203matlab用三种方法求解二阶微分方程x''+0.2x'=0.4x=0.2u(t),u(t...
    毕垄尹然后,你查Laplace Transform 表即可。或者用MAtlab 求解,代码如下:F=0.2\/(s^3+0.2*s^2-0.4*s);x(t)=ilaplace(F,s,t)然后,x(t)的表达式就出来了。2.令x1=x,x2=x1'=x',把原方程转化成微分方程组:x1'=x2 x2'=0.4*x1-0.2*x2+0.2u(t),(x1(0),x2(0))=(0,0)...

  • 相关主题精彩

    版权声明:本网站为非赢利性站点,内容来自于网络投稿和网络,若有相关事宜,请联系管理员

    Copyright © 喜物网