y=[359.26 165.60 59.17 41.66 25.92 22.37 13.47
12.87 11.87 6.69 14.87 24.22];
Y=log(y); a=polyfit(x,Y,1); B=a(1);A=a(2); b=B,a=exp(A) n=length(x); X=8:-0.01:1; Y=a*exp(b.*X); f=a*exp(b.*x); plot(x,y,'r*',X,Y,'b-'), xlabel('x'),ylabel('y') legend('数据点(xi,yi)','拟合曲线y=f(x)')
title('例3.4.1 的数据点(xi,yi)和拟合曲线y=f(x)的图形') fy=abs(f-y); fy2=fy.^2; Ew=max(fy), E1=sum(fy)/n, E2=sqrt((sum(fy2))/n)
bx运行后屏幕显示y?ae的系数b =0.624 1,a =2.703 9,数据(xi,yi)与拟合函数f的最大误差Ew =67.641 9,平均误差E1=8.677 6和均方根误差E2=20.711 3及其数据点(xi,yi)和拟合曲线f(x)?2.7039e
0.6241x的图形(略).
3.5 函数逼近及其MATLAB程序
最佳均方逼近的MATLAB主程序
function [yy1,a,WE]=zjjfbj(f,X,Y,xx)
m=size(f);n=length(X);m=m(1);b=zeros(m,m); c=zeros(m,1); if n~=length(Y)
error('X和Y的维数应该相同') end
for j=1:m for k=1:m b(j,k)=0; for i=1:n
b(j,k)=b(j,k)+feval(f(j,:),X(i))*feval(f(k,:),X(i));
end end
c(j)=0; for i=1:n
c(j)=c(j)+feval(f(j,:),X(i))*Y(i); end end a=b\\c; WE=0;
for i=1:n ff=0;
for j=1:m
ff=ff+a(j)*feval(f(j,:),X(i)); end
WE=WE+(Y(i)-ff)*(Y(i)-ff); end
if nargin==3 return; end yy=[]; for i=1:m l=[];
for j=1:length(xx)
l=[l,feval(f(i,:),xx(j))]; end
yy=[yy l']; end
yy=yy*a; yy1=yy'; a=a';WE;
2例3.5.1 对数据X和Y, 用函数y?1,y?x,y?x进行逼近,用所得到的逼近函
110.
数计算在x?6.5处的函数值,并估计误差.其中
X=(1 3 4 5 6 7 8 9); Y=(-11 -13 -11 -7 -1 7 17 29). 解 在MATLAB工作窗口输入程序
>> X=[ 1 3 4 5 6 7 8 9]; Y=[-11 -13 -11 -7 -1 7 17
29];
f=['fun0';'fun1';'fun2']; [yy,a,WE]=zjjfbj(f,X,Y,6.5)
运行后屏幕显示如下
yy =
2.75000000000003 a =
-7.00000000000010 -4.99999999999995 1.00000000000000 WE =
7.172323350269439e-027
y?cosx,y?e,例3.5.2 对数据X和Y,用函数y?1,y?x,y?x2,y?sinx进行逼近,其中X=(0 0.50 1.00 1.50 2.00 2.50 3.00),Y=(0 0.4794 0.8415 0.9815 0.9126 0.5985 0.1645).
解 在MATLAB工作窗口输入程序
>> X=[ 0 0.50 1.00 1.50 2.00 2.50 3.00];
Y=[0 0.4794 0.8415 0.9815 0.9126 0.5985 0.1645];
f=['fun0';'fun1';'fun2';'fun3';'fun4';'fun5'];xx=0:0.2:3; [yy,a,WE]=zjjfbj(f,X,Y, xx), plot(X,Y,'ro',xx,yy,'b-')
运行后屏幕显示如下(图略)
yy = Columns 1 through 7
-0.0005 0.2037 0.3939 0.5656 0.7141 0.8348
0.9236
Columns 8 through 14
0.9771 0.9926 0.9691 0.9069 0.8080 0.6766
0.5191
Columns 15 through 16 0.3444 0.1642
a = 0.3828 0.4070 -0.3901 0.0765 -0.4598 0.5653 WE = 1.5769e-004
即,最佳逼近函数为
y=0.3828+0.4070*x-0.3901*x^2+0.0765*exp(x) -0.4598*cos(x) +0.5653*sin(x).
x 111.