龙格-库塔方法求解三阶常微分方程

不需要写MATLAB代码,只想知道此方法操作的步骤,最好举个一般的例子说明,不胜感激!... 不需要写MATLAB代码,只想知道此方法操作的步骤,最好举个一般的例子说明,不胜感激! 展开
 我来答
lhmhz
高粉答主

推荐于2016-12-01 · 专注matlab等在各领域中的应用。
lhmhz
采纳数:7263 获赞数:16991

向TA提问 私信TA
展开全部

第一步:将高阶常微分方程转换成常微分方程组,func(t,x)

第二步:调用runge_kutta(@func,y0,h,a, b)

例如:二阶常微分方程

func。m

function z = func(t,y)

z =[y(2);(1-y(1)^2)*y(2)-y(1)];

main。m

clear all;close all;clc

y0 = [0.25;0];

h = 0.1;

a = 0;

b = 20;

[t1 y1] = runge_kutta(@rhs_7,y0,h,a,b)

追问
不是很懂你说的,比如随便写一个复杂点的微分方程:cosy·y'''+2y·y''-(y/x)·y'+y'^2=0,请问四阶龙格-库塔公式里面的f(xi,yi)是什么?
追答

为了方便解答,例题选用教材上的题目。

func。m

function dy = func(x,y)

dy=zeros(3,1);

dy(1)=y(2);

dy(2)=y(3);

dy(3)=2*y(3)/x^3+3*y(2)/x^3+3*exp(2*x)/x^3;

main。m

x0 = 1;

xt =10;

y0=[1;10;30];

N= 100;

h=(xt-x0)/N;%linspace(x0,xt,N)

[x,yR] = runge_kutta(@func,y0,h,x0,xt);

plot(x,yR(1,:),'r-',x,yR(2,:),'k-',x,yR(3,:),'g-');

grid

legend('y','y一阶导数','y二阶导数');

xlabel('x');ylabel('y(y',y'')');

title('三阶常微分方程求解结果');

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式