matlab数值分析程序--高等数学,数值代数的matlab实现-文字版, matlab电子书, 和matlab 有关的电子书:

10.5.2 二阶龙格-库塔方法的MATLAB程序

10.5.2  二阶龙格-库塔方法的MATLAB程序

用二阶龙格—库塔方法求解常微分方程初值问题(10.5)的数值解的MATLAB主程序

function [k,X,Y,fxy,wch,wucha,P]=RK2(funfcn,fun,x0,b,C,y0,h)

x=x0; y=y0;p=128;

n=fix((b-x0)/h);

fxy=zeros(p,1);

wucha=zeros(p,1);

wch=zeros(p,1);

X=zeros(p,1);

Y=zeros(p,length(y));

k=1; X(k)=x; Y(k,:)=y';

% 绘图.

clc,x,h,y

   %计算

%fxy=fxy(:);

for k=2:n+1

  x=x+h;a2=C(3);b21=C(4);

c1=C(1);

c2=C(2);

x1=x+a2*h;

k1=feval(funfcn,x,y);

y1=y+b21*h*k1;

k2=feval(funfcn,x1,y1);

fxy(k)=feval(fun,x);

y=y+h*(c1*k1+c2*k2);

X(k)=x;

Y(k,:)=y;k=k+1;

plot(X,Y,'mh',X,fxy,'bo')

grid,xlabel('自变量 X'),ylabel('因变量 Y')

legend('用二阶龙格-库塔方法计算dy/dx=f(x,y),y(x0)=y0在[x0,b]上的数值解','y/dx=f(x,y),y(x0)=y0的精确解y=f(x)')

end

%计算误差.

for k=2:n+1

wucha(k)=norm(Y(k-1)-Y(k));

wch(k)=norm(fxy(k)-Y(k));

end

X=X(1:k);

Y=Y(1:k,:);

fxy=fxy(1:k,:);

n=1:k;  

wucha=wucha(1:k,:);

wch=wch(1:k,:);

P=[n',X,Y,fxy,wch,wucha];

 

例10.5.1  用二阶龙格—库塔方法求初值问题

的数值解,取,并计算与精确解的误差,画出精确解和数值解的图形.

解  在MATLAB工作窗口输入下面的程序

>> x0=0;b=2;C=[1/4,3/4,2/3,2/3];y0=0;h=1/4;

[k,X,Y,fxy,wch,wucha,P]=RK2(@funfcn,@fun,x0,b,C,y0,h)

④将运行后计算的结果列入(略),画出精确解和数值解的图形.

欢迎转载,转载请注明来自一手册:http://yishouce.com/book/3/3100502.html
友情链接It题库(ittiku.com)| 版权归yishouce.com所有| 友链等可联系 admin#yishouce.com|粤ICP备16001685号-1