急!!!求matlab 用四阶龙格-库塔法求解常微分方程

用matlab~~2θ/dt2+sinθ=00<t<=6初始条件:θ(0)=π/3,dθ/dt=-1/2输出图形:θ-t图,dθ-t图要编译能通过的~~要算法~~不是直接... 用matlab~~
2θ/dt2 +sin θ=0 0<t<=6
初始条件:θ(0)=π/3,
dθ/dt=-1/2
输出图形: θ-t图, dθ-t图

要编译能通过的 ~~
要算法~~不是直接从matalb里面的函数库调用函数~
展开
 我来答
dbb627
2010-07-05 · TA获得超过1.2万个赞
知道大有可为答主
回答量:2127
采纳率:88%
帮助的人:1364万
展开全部

建立.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('\theta-t','d\theta-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)

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式