四阶龙格库塔法精度为4,属于单步递推法,单步递推法的基本思想是从(x(i),y(i))点出发,以某一斜率沿直线达到(x(i+1),y(i+1))点,从上述定义可以看出,龙格库塔实质上是求一阶微分方程,对其进行排列后就可以进入Matlab进行编程。
但是如果将一阶导看作变量,则二阶导也不过是这个变量的一阶导而已,对于下述二阶方程:基本思想如下令位移为q的一阶导,即位移的一阶导(速度)为q的二阶导。
是用一个简单的迭代式来画分叉混沌图的,从这个例子里,不难学到如何如何画分叉图,其原理不难,两个循环来在2维平面作图,一个if筛选迭代的结果。
还是类似上面那个例子,这里给出不一样的代码实现方法。没看懂的可以再看一遍,里面主要的还是两个for循环,下面这个代码是用第三个for循环来实现对迭代结果的筛选的,这里不必纠结细节,功能实现用if或者for都可以。
依次类推,如果在区间[xi,xi+1]内多预估几个点上的斜率值K1、K2、……Km,并用他们的加权平均数作为平均斜率K*的近似值,显然能构造出具有很高精度的高阶计算公式。经数学推导、求解,可以得出四阶龙格-库塔公式,也就是在工程中应用广泛的经典龙格-库塔算法这样就完成了matlab的编程。
用matlab的四、五阶龙格库塔方法(ode45)可以求得其数值解。设定其微分方程组的初始条件X(0)=0,S(0)=0。解决方法:
1、常微分方程组的自定义函数odefun(t,y),其主要内容
dy(1)=3*y(2)/(60+y(2))*y(1)-0.16*y(1)
dy(2)=4*250-4*y(2)-5*y(2)/(60+y(2))*y(1)-0.06*y(1)
2、t、y1、y2的求解
[t,y]=ode45(@odefun,[0 10],y0)
3、计算结果及t与S、X的关系图,S与X的关系图
四阶龙格-库塔是求解常微分方程(常微分方程组)精度最高的一种数值方法。四阶龙格-库塔迭代公式为
根据四阶龙格-库塔迭代公式,可用matlab软件编写得到如下计算代码:
调用方法:
clcclose all
y0=1
h=0.1a=0b=1
[x,y] = runge_kutta(@func,y0,h,a,b)
disp(' x y')
[x',y']
x=0:0.1:1
plot(x,y,':'),grid on
xlabel('x'),ylabel('y(x)/y’(x)')
title('函数图')
function f = func(x,y)
f=sqrt(x+y)
end
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)