永发信息网

利用MATLAB完成程序编写

答案:1  悬赏:30  手机版
解决时间 2021-05-09 17:10

编写二阶龙格-库塔方法的程序,并求解西门的初值问题,写出程序源代码,输出计算结果.

大概就是这样的了,时间紧急,谢谢了!!!

最佳答案

function z=lkfun(x,y) %f(x,y)部分,可以根据具体的函数修改


z=-0.9*y/(1+2*x);


%求解函数


%四阶龙格库塔常微分方程数值解MATLAB编程


function [y,x]=LK(a,b,y0,N)


%a,b表示数值解的区间


%y0表示初始值


%N表示解的空间密度


x=linspace(a,b,N); %待解x值


h=(b-a)/(N-1); %分成N-1个区间


y=zeros(1,N); %定义长度


y(1)=y0; %初始值


%具体的迭代过程


for i=1:N-1


k1=lkfun(x(i),y(i));


k2=lkfun(x(i)+h/2,y(i)+h*k1/2);


k3=lkfun(x(i)+h/2,y(i)+h*k2/2);


k4=lkfun(x(i)+h,y(i)+h*k3);


y(i+1)=y(i)+h/6*(k1+2*k2+2*k3+k4);


end


disp('常微分方程的数值解:')


disp([x;y])


实例验证

lk(0,1,1,6); %调用已编写的龙格库塔函数LK


常微分方程的数值解:


0 0.2000 0.4000 0.6000 0.8000 1.0000


1.0000 0.8595 0.7676 0.7013 0.6505 0.6099



>> dsolve('Dy=-0.9*y/(1+2*t)','y(0)=1') %matlab自带求解函数dsolve,进行验证


ans =1/(2*t+1)^(9/20)



t=[0:0.2:1];


1./((2*t+1).^(9/20))


ans =


0 0.2000 0.4000 0.6000 0.8000 1.0000


1.0000 0.8595 0.7676 0.7013 0.6505 0.6100


%发现误差非常小



这是以前写的一个四阶的,自己修改一下应该可以用的

我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎么去安慰别人?
我为什么听不见空间里的歌儿了呀
帮我做qq空间相册封面拼图
Nokia5800XpressMusic除了红黑色的还有什么颜
为什么消费券一夜之间没了
花都沿江大道/花都东风大道(路口)这个地址在
怎样关闭QQ农场,牧场,停车位,好友买卖?
边吃饭边喝汤这种习惯好吗
哎呦喂下一句是什么,路见不平一声吼~拿着唐刀
一个不爱自己的人,还去找人家。看了就气 死
如果想一些事情会令自己心情不好???那么!
都說距離產生美!! 我不信?? 誰跟我說說距
QQ飞车和炫舞哪个好玩点,谈谈你们对它的感觉
水桶平面图是什么样子的??
点腾讯qq时输密码时按键盘上的数字,数字却不
推荐资讯
关于崇祯的影视作品
绿色征途中凤凰城怎么没有仓库
联想Y450现卖多少钱?性能怎么样?
帕萨特更换油底壳谁有具体方案?
什么是EP
谁可以帮我点亮腾讯游戏图标?
蓝色JU
求NBA2K10国家队补丁,谢谢
跪求情侣网名有关馒头
描写四季的古诗名句,描写四季景色的名言佳句?
申诉QQ为什么老这样
帮忙…我想买个本,希望是T660处理器,显卡尽
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?