单步龙格库塔比例导引弹道计算matlab源程序
本程序特别适合于弹道计算等方面使用。比ODE45函数的速度加快了很多,且程序充分展示了Matlab向量运算的强大功能,以及编程的简单快捷。
但愿本程序,可以为大家提高工作效率提高帮助。
一、rightF.m文件(调用的时候,要根据自己的应用,改变右函数值)
%右函数定义的,用于单步龙格库塔法计算。
%如果需要使用全局变量,要使用global定义。
%这种格式的,也完全可以被ode45函数调用。
function dy=rightF(t,y)%right functions
dy=zeros(2,1);%a column vector
dy(1)=y(2);
dy(2)=3*y(2)/t-4*y(1)/(t^2);
二、stepRK.m文件(本函数任何情况都不用变的)
%函数说明,t表示自变量(一般为时间),y表示变量的初值(是一个行向量),h表示步长
%运行的结果,也是一个行向量
function dy=stepRK(t,y,h)
K1=rightF(t,y);
K2=rightF(t+h/2,y'+h*K1/2);
K3=rightF(t+h/2,y'+h*K2/2);
K4=rightF(t+h,y'+h*K3);
dy=y'+(K1+2*K2+2*K3+K4)*h/6;
dy=dy';
三、示例程序(rk_test.m)
%龙格库塔法测试程序,与欧阳联渊书一致
t=1.;
a=[10];
h=0.1;
for i=1:10
b=stepRK(t,a,h)
t=t+h;
a=b;
arrayT(i)=i;
array1(i)=b(1);
end
plot(arrayT,array1,'*')