用matlab编程实现四阶龙格库塔解二元二阶微分方程组

来自:    更新日期:早些时候
急!!!求matlab 用四阶龙格-库塔法求解常微分方程~

建立.m文件
---------------------------------------------
function theta=danbai(t,X)
x=X(1);
dx=X(2);
ddx=-sin(x);
theta=[dx;ddx];
----------------------------------------------
命令窗口输入
>> [t,Y]=ode45(@danbai,[0 6],[pi/3 -1/2]);
>> plot(t,Y(:,1),'ro-',t,Y(:,2),'bv-');
>> legend('heta-t','dheta-t')
自编龙格库塔
------------------------------------------------
function [y,z]=Runge_kutta(a,b,y0,z0,h)
x=a:h:b;
y(1)=y0;
z(1)=z0;
n=(b-a)/h+1;
for i=2:n
K(1,1)=f1(x(i-1),y(i-1),z(i-1));
K(2,1)=f2(x(i-1),y(i-1),z(i-1));
K(1,2)=f1(x(i-1)+h/2,y(i-1)+K(1,1)*h/2,z(i-1)+K(2,1)*h/2);
K(2,2)=f2(x(i-1)+h/2,y(i-1)+K(1,1)*h/2,z(i-1)+K(2,1)*h/2);
K(1,3)=f1(x(i-1)+h/2,y(i-1)+K(1,2)*h/2,z(i-1)+K(2,2)*h/2);
K(2,3)=f2(x(i-1)+h/2,y(i-1)+K(1,2)*h/2,z(i-1)+K(2,2)*h/2);
K(1,4)=f1(x(i-1)+h,y(i-1)+K(1,3)*h,z(i-1)+K(2,3)*h);
K(2,4)=f2(x(i-1)+h,y(i-1)+K(1,3)*h,z(i-1)+K(2,3)*h);
y(i)=y(i-1)+h/6*(K(1,1)+2*K(1,2)+2*K(1,3)+K(1,4));
z(i)=z(i-1)+h/6*(K(2,1)+2*K(2,2)+2*K(2,3)+K(2,4));
end
y(2)
plot(y,'r') %θ-t图
hold on
plot(f1(x,y,z),'g') % dθ-t图
hold on
plot(f2(x,y,z),'b-')%d2θ-t图
%f1.m
function f1=f1(x,y,z)
f1=z;
%f2.m
function f2=f2(x,y,z)
f2=-sin(y);
-----------------------------------------
Runge_kutta(0,6,pi/3,-1/2,0.02)

http://wenku.baidu.com/view/fa7ee0ebaeaad1f346933fb7.html 这里有个三阶龙格库塔的程序,可以作为参考

求解二阶微分方程,初始条件还需要给出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);

 

% 微分方程定义 

function dY = ode(t, Y)

L1=5;

L2=0.01;

a0=2;

b0=2;

c0=2;

 

y1=Y(1);y2=Y(3);

dY = [

    Y(2);

    -(a0*y2+b0*y2^2+c0*y2^3) - L1^2*L2*y1 - L1^2*y1;

    Y(4);

    -(a0*y2+b0*y2^2+c0*y2^3) - L1^2*L2*y1;

];

 



function dy=fun(t,y)
a0=2;
b0=2;
c0=2;
lamda1=5;
lamda2=0.01;
dy=zeros(4,1);
dy(1)=y(2);
dy(2)=-(a0*y(2)+b0*y(2)^2+c0*y(2)^3)-lamda1^2*lamda2*y(1)-lamda1^2*y(1);
dy(3)=y(4);
dy(4)=-(a0*y(2)+b0*y(2)^2+c0*y(2)^3)-lamda1^2*lamda2*y(1);
[T,Y]=ode45('fun',[0 100],[0 0 0.1 0]);

matlab解微分方程,函数调用的形式是一样的,把方程转换为代码就可以了。四阶龙格库塔应该是众多解法中的一个。详细参阅help文件。

你也弄毕设呢?

是的,所以很急
我也用MATLAB做毕设,不过你这个比我的可难多了


用matlab编程实现四阶龙格库塔解二元二阶微分方程组视频

相关评论:
  • 19258211381matlab应用二步和四步显示的Adamas方法求解下列微分方程的初值问题(用...
    臧贡宗disp(' 步长 Adams四步四阶显式法 准确值');disp([X',Y',df']);%画图观察效果figure;plot(X,df,'k*',X,Y,'--r');grid on;title('Adams四步四阶显式法解常微分方程');legend('准确值','Adams四步四阶显式法'); 程序运行结果: 步长Adams四步四阶显式法 准确值 0 1.000000000000000 1.00000000...

  • 19258211381用MATLAB分形画龙曲线
    臧贡宗clear;clc;close all w=[0.824074 0.281482 -0.212346 0.864198 -1.882290 -0.110607 0.088272 0.520988 -0.463889 -0.377778 0.785360 8.095795];N=10000;x=zeros(1,N);y=zeros(1,N);x0=0;y0=0;for i=1:N if rand<0.8 j=1;else j=2;end x01=w(j,[1 2 5])*[x...

  • 19258211381用分形迭代法绘龙曲线的matlab程序?
    臧贡宗这段程序是别人的啊。function dragon_curve(n)生成龙曲线 建议n取值为12左右 n=7 global A_add global Rm global Lm axis off;Lm='+L--R'; Rm='L++R-';x0=0; y0=0; anglez0=pi\/2; A_add=pi\/4;ch=A_Iterate(n);run_order(x0,y0,anglez0,ch);clear;--- function ch=A_I...

  • 19258211381如何使用matlab导入INCA的dcm文件?
    臧贡宗inca可以将标定数据存为dcm或csv等格式,但其存储的形式比较复杂。怎么使用matlab将其读取出来,转化为可以导入workspace空间的数据... inca可以将标定数据存为dcm或csv等格式,但其存储的形式比较复杂。怎么使用matlab将其读取出来,转化为可以导入workspace空间的数据 展开  我来答 为你推荐: 特别推荐 如真有龙,...

  • 19258211381MATLAB中出现报错:错误使用 horzcat串联的矩阵的维度不一致。
    臧贡宗MATLAB中出现报错:错误使用 horzcat串联的矩阵的维度不一致。 x=[01234567891013];y=[0.21210.11110.15150.11110.10100.03030.05050.04040.04040.03030.03030.0909];X=[ones(12,1),x];x0=(0:1:13);f=polyfit(x,y,2);f1=polyval(f,x0);plot(x,y,'-... x=[0 1 2 3 4 5 6 7 8 9 10 13];y=[...

  • 19258211381用matlab编程实现龙克库塔法解二阶微分方程
    臧贡宗clear allclc A2=0.1;r0=2;L=10;C1=1\/(1+A2)^0.5;C2=A2\/(1+A2);C3=C1*C2;C4=(4+A2)\/(1+A2)^0.5;B2=8;f=@(t,y)([y(2); 1\/y(1)^3-1\/(2*(1-t\/L*C1+B2*C2\/y(1)^2))*((C1\/L)-16*y(2)*C2\/y(1)^3)*y(2)-r0^2*((t\/L*C3\/y(1)^2)*(...

  • 19258211381请问下面这个程序在matlab上面运行哪儿有问题,自己找不来。得不到答案...
    臧贡宗n=4;Y0=10;Yt=[0 0 0 0];h=0.01;L1=25;T0=0;Tf=10;nout=4;A=diag(P(:,1));B=diag(P(:,2));C=diag(P(:,3));D=diag(P(:,4));m=length(Wij(:,1));W0=zeros(n,1);W=zeros(n,n);for k=1:m if (Wij(k,2)==0)W0(Wij(k,1))=Wij(k,3);%%注意条件...

  • 19258211381dx\/dt=y,dy\/dt=-sinx,求大神帮忙编一个MATLAB的程序,用龙格库塔法解这个...
    臧贡宗function dx=dfun(t,x) %函数名为dfun,参数为t与xdx=[x(2);-sin(x(1))]; %以向量形式表示方程 输入:clearts=-15:0.05:15; %步长取0.05x0=[1,0]; %设定参数初值options=odeset('reltol',1e-6,'abstol',1e-9); %提高精度[t,x]=ode45(@dfun,ts,x0,options...

  • 19258211381matlab冷门小知识
    臧贡宗%%%1题%在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function a=fu(m,f)a=f\/m;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%在Matlab下输入:edit,然后将下面两行百分号之间的内容,复制进去,保存 ...

  • 19258211381使用matlab的fmincon优化,一直提示变量“x”未定义,请教问题所在?_百度...
    臧贡宗[x fval]= fmincon(@(x) CostObj(x),x0,A,B,Aeq,Beq)

  • 相关主题精彩

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

    Copyright © 喜物网