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

7.3 函数r_k(x)的选取及其MATLAB程序

7.3  函数的选取及其MATLAB程序

 

例7.3.1  给出一组实验数据点的横坐标向量为x=(-8.5,-8.7,-7.1,-6.8,-5.10,-4.5,-3.6,-3.4,-2.6,-2.5, -2.1,-1.5, -2.7,-3.6),纵横坐标向量为y=(459.26,52.81,198.27,165.60,59.17,41.66,25.92, 22.37,13.47, 12.87, 11.87,6.69,14.87,24.22),试用线性最小二乘法求拟合曲线,并用(7.2),(7.3)和(7.4)式估计其误差,作出拟合曲线.

解  (1)在MATLAB工作窗口输入程序

>>x=[-8.5,-8.7,-7.1,-6.8,-5.10,-4.5,-3.6,-3.4,-2.6,-2.5, -2.1,-1.5, -2.7,-3.6];

y=[459.26,52.81,198.27,165.60,59.17,41.66,25.92, 22.37,13.47, 12.87, 11.87,6.69,14.87,24.22];

plot(x,y,'r*'),legend('实验数据(xi,yi)')

xlabel('x'), ylabel('y'),

title('例7.3.1的数据点(xi,yi)的散点图')

运行后屏幕显示数据的散点图(略).

(3)编写下列MATLAB程序计算处的函数值,即输入程序

>> syms a b

x=[-8.5,-8.7,-7.1,-6.8,-5.10,-4.5,-3.6,-3.4,-2.6,-2.5,-2.1,-1.5,-2.7,-3.6]; fi=a.*exp(-b.*x)

运行后屏幕显示关于a和b的线性方程组

fi =

[  a*exp(17/2*b), a*exp(87/10*b), a*exp(71/10*b),  a*exp(34/5*b), a*exp(51/10*b),   a*exp(9/2*b),  a*exp(18/5*b),  a*exp(17/5*b),  a*exp(13/5*b),   a*exp(5/2*b), a*exp(21/10*b),   a*exp(3/2*b), a*exp(27/10*b),  a*exp(18/5*b)]

编写构造误差平方和的MATLAB程序如下

>>y=[459.26,52.81,198.27,165.60,59.17,41.66,25.92,22.37,13.47,12.87, 11.87, 6.69,14.87,24.22];

fi =[ a*exp(17/2*b), a*exp(87/10*b), a*exp(71/10*b),  a*exp(34/5*b), a*exp(51/10*b),   a*exp(9/2*b),  a*exp(18/5*b),  a*exp(17/5*b),  a*exp(13/5*b),   a*exp(5/2*b), a*exp(21/10*b),   a*exp(3/2*b), a*exp(27/10*b),  a*exp(18/5*b)];

fy=fi-y;

fy2=fy.^2;

J=sum(fy.^2)

运行后屏幕显示误差平方和如下

J =

(a*exp(17/2*b)-22963/50)^2+(a*exp(87/10*b)-5281/100)^2+(a*exp(71/10*b)-19827/100)^2+(a*exp(34/5*b)-828/5)^2+(a*exp(51/10*b)-5917/100)^2+(a*exp(9/2*b)-2083/50)^2+(a*exp(18/5*b)-648/25)^2+(a*exp(17/5*b)-2237/100)^2+(a*exp(13/5*b)-1347/100)^2+(a*exp(5/2*b)-1287/100)^2+(a*exp(21/10*b)-1187/100)^2+(a*exp(3/2*b)-669/100)^2+(a*exp(27/10*b)-1487/100)^2+(a*exp(18/5*b)-1211/50)^2

为求使达到最小,只需利用极值的必要条件,得到关于的线性方程组,这可以由下面的MATLAB程序完成,即输入程序

>> syms a b

J=(a*exp(17/2*b)-22963/50)^2+(a*exp(87/10*b)-5281/100)^2+(a*exp(71/10*b)-19827/100)^2+(a*exp(34/5*b)-828/5)^2+(a*exp(51/10*b)-5917/100)^2+(a*exp(9/2*b)-2083/50)^2+(a*exp(18/5*b)-648/25)^2+(a*exp(17/5*b)-2237/100)^2+(a*exp(13/5*b)-1347/100)^2+(a*exp(5/2*b)-1287/100)^2+(a*exp(21/10*b)-1187/100)^2+(a*exp(3/2*b)-669/100)^2+(a*exp(27/10*b)-1487/100)^2+(a*exp(18/5*b)-1211/50)^2;

Ja=diff(J,a); Jb=diff(J,b);

Ja1=simple(Ja), Jb1=simple(Jb),

运行后屏幕显示J分别对的偏导数如下

Ja1 =

2*a*exp(3*b)+2*a*exp(17*b)+2*a*exp(87/5*b)+2*exp(68/5*b)*a+2*exp(9*b)*a+2*a*exp(34/5*b)-669/50*exp(3/2*b)-1487/50*exp(27/10*b)-2507/25*exp(18/5*b)-22963/25*exp(17/2*b)-5281/50*exp(87/10*b)-19827/50*exp(71/10*b)-2237/50*exp(17/5*b)-1656/5*exp(34/5*b)-1347/50*exp(13/5*b)-5917/50*exp(51/10*b)-1287/50*exp(5/2*b)-2083/25*exp(9/2*b)-1187/50*exp(21/10*b)+4*a*exp(36/5*b)+2*a*exp(26/5*b)+2*a*exp(71/5*b)+2*a*exp(51/5*b)+2*a*exp(5*b)+2*a*exp(21/5*b)+2*a*exp(27/5*b)

Jb1 =

1/500*a*(2100*a*exp(21/10*b)^2+8500*a*exp(17/2*b)^2+6800*a*exp(34/5*b)^2-10035*exp(3/2*b)-40149*exp(27/10*b)-180504*exp(18/5*b)-3903710*exp(17/2*b)-459447*exp(87/10*b)-1407717*exp(71/10*b)-76058*exp(17/5*b)-1126080*exp(34/5*b)-35022*exp(13/5*b)-301767*exp(51/10*b)-32175*exp(5/2*b)-187470*exp(9/2*b)-24927*exp(21/10*b)+7100*a*exp(71/10*b)^2+5100*a*exp(51/10*b)^2+4500*a*exp(9/2*b)^2+7200*a*exp(18/5*b)^2+3400*a*exp(17/5*b)^2+2600*a*exp(13/5*b)^2+2500*a*exp(5/2*b)^2+1500*a*exp(3/2*b)^2+2700*a*exp(27/10*b)^2+8700*a*exp(87/10*b)^2)

用解二元非线性方程组的牛顿法的MATLAB程序求解线性方程组Ja1 =0,Jb1 =0,得

a =            b=

2.811 0        0.581 6

故所求的拟合曲线(7.13)为

e.                  (7.14)

(4)根据(7.2),(7.3),(7.4)和(7.14)式编写下面的MATLAB程序估计其误差,并做出拟合曲线和数据的图形.输入程序

>> xi=[-8.5 -8.7  -7.1  -6.8  -5.10  -4.5 -3.6 -3.4 -2.6 -2.5 -2.1  -1.5  -2.7  -3.6];

y=[459.26  52.81  198.27  165.60   59.17   41.66   25.92 22.37   13.47   12.87    11.87    6.69   14.87   24.22];

n=length(xi); f=2.8110.*exp(-0.5816.*xi); x=-9:0.01: -1;

F=2.8110.*exp(-0.5816.*x); fy=abs(f-y); fy2=fy.^2; Ew=max(fy),

E1=sum(fy)/n, E2=sqrt((sum(fy2))/n), plot(xi,y,'r*'), hold on

plot(x,F,'b-'), hold off,

legend('数据点(xi,yi)','拟合曲线y=f(x)')

xlabel('x'), ylabel('y'),

 title('例7.3.1的数据点(xi,yi)和拟合曲线y=f(x)的图形')

运行后屏幕显示数据与拟合函数f的最大误差Ew = 390.141 5,平均误差E1=36.942 2和均方根误差E2=106.031 7及其数据点和拟合曲线y=f(x)的图形(略).

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