范德堡方程的龍格庫塔算法求解
精選優(yōu)質(zhì)文檔-----傾情為你奉上
龍格庫塔算法:
function [x,y]=lgkt(f,x0,xf,y0,h)
h=0.1;
n=fix((xf-x0)/h);
x(1)=x0;
y(:,1)=y0;
for i=1:n-1
x(i+1)=x(i)+h;
k1=f(x(i),y(:,i));
k2=f(x(i)+h/2,y(:,i)+h*k1/2);
k3=f(x(i)+h/2,y(:,i)+h*k2/2);
k4=f(x(i)+h,y(:,i)+h*k3);
y(:,i+1)=y(:,i)+h*(k1+2*k2+2*k3+k4)/6;
end
函數(shù)化簡:
function f=f(t,y)
f=[y(2);(1-y(1).^2).*y(2)-y(1)];
Command Window的輸入:
x0=input(' x0=');
xf=input(' xf=');
while x0>=xf
disp('輸入不合邏輯,請重新輸入')
x0=input(' x0=');
xf=input(' xf=');
end
y0=[1 8];
h=0.1;
[t,F1]=lgkt(@f,x0,xf,y0,h)
plot(t,F1)
grid
title('范德堡的龍格庫塔算法之求解')
legend('y原函數(shù),y的一階導')
專心---專注---專業(yè)