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

10.8.2 有限差分方法及其MATLAB程序

10.8.2  有限差分方法及其MATLAB程序

用有限差分方法求解线性边值问题(10.95)数值解的MATLAB主程序

function [k,A,B1,X,Y,y,wucha,p]=yxcf(q1,q2,q3,a,b,alpha,beta,h)

n=fix((b-a)/h); X=zeros(n+1,1);

Y=zeros(n+1,1); A1=zeros(n,n);

A2=zeros(n,n); A3=zeros(n,n); A=zeros(n,n);B= zeros(n,1);

for k=1:n

X=a:h:b;

k1(k)=feval(q1,X(k)); A1(k+1,k)=1+h*k1(k)/2;

k2(k)=feval(q2,X(k));

A2(k,k)=-2-(h.^2)*k2(k);

A3(k,k+1)= 1-h*k1(k)/2; k3(k)=feval(q3,X(k));

end

for k=2:n

B(k,1)=(h.^2)*k3(k);

end

B(1,1)=(h.^2)*k3(1)-(1+h*k1(1)/2)*alpha;

B(n-1,1)=(h.^2)*k3(n-1)-(1+h*k1(n-1)/2)*beta;

A=A1(1:n-1,1:n-1)+A2(1:n-1,1:n-1)+A3(1:n-1,1:n-1);

B1=B(1:n-1,1);

Y=A\B1;Y1=Y'; y=[alpha;Y;beta];

for k=2:n+1

wucha(k)=norm(y(k)-y(k-1)); k=k+1;

end

X=X(1:n+1); y=y(1:n+1,1); k=1:n+1;

wucha=wucha(1:k,:); plot(X,y(:,1),'mp')

xlabel('轴\it x'); ylabel('轴\it y'),legend('是边值问题的数值解y(x)的曲线')

title('用有限差分法求线性边值问题的数值解的图形'),

p=[k',X',y,wucha'];

 

例10.8.3  用有限差分方法求边值问题

的数值解,将分别平均分成等份和等份,说明对数值解的误差的影响,并与精确解比较,画出它们的图形.

解  n = 6 时,输入程序

>> n=6;a=0;b=1;alpha=1;beta=2;h=(b-a)/n;

[k,A,B,X,Y,y,wucha,p]=yxcf(@q1,@q2,@q3,a,b,alpha,beta,h),

x=0:h:1;y1=1+x.^3,wu=y1'-y; [k',X',y,y1',wucha',wu],hold on

plot(x,y1,'bo')

legend('边值问题的数值解y(x)的曲线','边值问题的精确解y(x)的曲线')

title('n=6,用有限差分法求线性边值问题的数值解及其精确解的图形')

hold off

将运行后屏幕显示n = 6 时的计算结果和图形.

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