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

8.2.2 中心差商公式求导及其MATLAB程序

8.2.2  中心差商公式求导及其MATLAB程序

利用精度为的三点公式计算的近似值和误差估计的MATLAB主程序

function [n,xi,yx,wuc]=sandian(h,xi,fi,M)

n=length(fi); yx=zeros(1,n); wuc=zeros(1,n); x1= xi(1); x2= xi(2); x3= xi(3);

y1=fi(1); y2=fi(2); y3=fi(3); xn= xi(n); xn1= xi(n-1);

xn2= xi(n-2); yn=fi(n); yn1=fi(n-1); yn2=fi(n-2);

for k=2:n-1

yx(1)=(-3*y1+4*y2-y3)/(2*h); yx(n)=(yn2-4*yn1+3*yn)/(2*h);

yx(2)=( fi(3)- fi(1))/(2*h); yx(k)=( fi(k+1)- fi(k-1))./(2*h);

wuc(1)=abs(h.^2.*M./3); wuc(n)=abs(h.^2.*M./3);

wuc(2:n-1)=abs(-h.^2.*M./6);

end

利用精度为的三点公式计算的近似值和误差估计的MATLAB主程序

function [x,yxj, wuc]=sandian3(h,xi,fi,M)

yxj=zeros(1,3); wuc=zeros(1,3); x1= xi(1);

x2= xi(2); x3= xi(3); y1=fi(1); y2=fi(2); y3=fi(3);

for t=1:3

s(t)=((2*t-5)*y1-4*(t-2)*y2+(2*t-3)*y3)/(2*h); x=xi; y=s(t); yxj(t)=y;

if t==2

wuc(2)=abs(-h.^2*M/6);

else

wuc(1:2:3)=abs(h.^2*M/3);

end

end

 

例 8.2.3  设已给出的数据表8–5:

 

表8–5

x

1.000 0   1.100 0   1.200 0   1.300 0   1.400 0   1.500 0   1.600 0

f(x)

0.250 0   0.226 8   0.206 6   0.189 0   0.173 6   0.160 0   0.147 9

M= 0.750 2,试用三点公式计算下列问题:

(1)当h=0.1时,在x=1.000 0,1.100 0,1.200 0,1.300 0,1.400 0,1.500 0,1.600 0处的一阶导数的近似值,并估计误差;

(2)当h=0.2时,在x=1.000 0,1.200 0, 1.400 0,1.600 0处的一阶导数的近似值,并估计误差;

(3)当h=0.3时,在x=1.000 0,1.300 0 ,1.600 0处的一阶导数的近似值,并估计误差;

(4) 表8–5中的数据是函数在相应点的数值,将(1)至(3)计算的一阶导数的近似值与的一阶导数值比较,并求出它们的绝对误差.

 

解 (1)保存M文件sandian.m,sandian3.m;

(2)在MATLAB工作窗口输入如下程序

>> syms x,y=1/((1+x)^2); yx=diff(y,x,1),

yx3=diff(y,x,3),

运行后将屏幕显示的结果为

yx =                  yx3 =

-2/(1+x)^3              -24/(1+x)^5

(3)在MATLAB工作窗口输入如下程序

>>h=0.1; xi=1.0000:h:1.6000;

fi=[0.2500 0.2268 0.2066 0.1890 0.1736 0.1600 0.1479];

x=1:0.001:1.6; yx3 =-24./(1+x).^5; M= max(abs(yx3));

[n1,x1,yx1,wuc1]=sandian(h,xi,fi,M)

yxj1=-2./(1+xi).^3,wuyxj1=abs(yxj1- yx1)

h=0.2; xi=1.0000:h:1.6000; fi=[0.2500  0.2066  0.1736  0.1479];

x=1:0.001:1.6; yx3 =-24./(1+x).^5; M= max(abs(yx3));

[n2,x2,yx2,wuc2]=sandian(h,xi,fi,M)

yxj2=-2./(1+xi).^3,wuyxj2=abs((yxj2- yx2))

h=0.3; xi=1.0000:h:1.6000; fi=[0.2500 0.1890 0.1479];

x=1:0.001:1.6; yx3 =-24./(1+x).^5; M=max(abs(yx3));

[x3,yx3, wuc3]=sandian3(h,xi,fi,M)

yxj3=-2./(1+xi).^3,wuyxj3=abs(yxj3- yx3)

或       >> h1=0.1,

x=[1.0000,1.1000,1.2000,1.3000,1.4000,1.5000,1.6000];

f=[0.2500,0.2268,0.2066,0.1890,0.1736,0.1600,0.1479];

xi=x(1:3);f11=f(1:3); M= 0.7502;

[x11,yxj11,wuc11]=sandian3(h1,xi,f11,M),

xi= x(4:6);f12=f(4:6);

[x12,yxj12,wuc12]=sandian3(h1,xi,f12,M),

xi=x(5:7);f13=f(5:7); [x13,yxj13,wuc13]=sandian3(h1,xi,f13,M),

h2=0.2, xi= x(1:2:5);f21= f(1:2:5);

[x21,yxj21,wuc21]=sandian3(h2,xi,f21,M),

xi= x(2:2:6);f22=f(2:2:6);

[x22,yxj22,wuc22]=sandian3(h2,xi,f22,M),

xi= x(3:2:7);f23=f(3:2:7);

[x23,yxj23,wuc23]=sandian3(h2,xi,f23,M),

h3=0.3, xi= x(1:3:7);f31= f(1:3:7);

 [x31,yxj31,wuc31]=sandian3(h3,xi,f31,M),

将运行的结果(略).

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