最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

最小二乘法实验报告

来源:动视网 责编:小OO 时间:2025-09-25 03:04:45
文档

最小二乘法实验报告

最小二乘法实验报告【实验目的】:观察最小二乘多项式的数值不稳定现象【实验内容】:1在[-1,1]区间上取n=20个等距节点,计算出以相应节点上xe的值做为数据样本,以21,,,,lxxx为基函数作出3,5,7,9,11,13,15l=次的最小二乘多项式,画出2ln(())condA~l之间的曲线,其中A是确定最小二乘多项式的系数矩阵。计算出不同阶最小二乘多项式给出的最小误差21()(())niiilyxyσ==-∑2在[-1,1]区间上取n=20个等距节点,计算出以相应节点上xe的值做为数据样
推荐度:
导读最小二乘法实验报告【实验目的】:观察最小二乘多项式的数值不稳定现象【实验内容】:1在[-1,1]区间上取n=20个等距节点,计算出以相应节点上xe的值做为数据样本,以21,,,,lxxx为基函数作出3,5,7,9,11,13,15l=次的最小二乘多项式,画出2ln(())condA~l之间的曲线,其中A是确定最小二乘多项式的系数矩阵。计算出不同阶最小二乘多项式给出的最小误差21()(())niiilyxyσ==-∑2在[-1,1]区间上取n=20个等距节点,计算出以相应节点上xe的值做为数据样
最小二乘法实验报告

【实验目的】:观察最小二乘多项式的数值不稳定现象

【实验内容】:1 在[-1,1]区间上取n=20个等距节点,计算出以相应节点上x e 的值做为数据样本,以21,,,,l x x x 为基函数作出3,5,7,9,11,13,15l =次的最小二乘多项式,画出

2ln(())cond A ~l 之间的曲线,其中A 是确定最小二乘多项式的系数矩阵。计算出不同阶

最小二乘多项式给出的最小误差2

1

()(())

n

i

i

i l y x y σ==

-∑

2 在[-1,1]区间上取n=20个等距节点,计算出以相应节点上x e 的值做为数据样本,以121,(),(),()l p x p x p x 为基函数作出3,5,7,9,11,13,15l =次的最小二乘多项式,其中,

()i p x 是勒让德多项式。画出2ln(())cond A ~l 之间的曲线,其中A 是确定最小二乘多项式

的系数矩阵。计算出不同阶最小二乘多项式给出的最小误差2

1

()(())

n

i

i

i l y x y σ==

-∑,把结

果与1比较

【实验步骤及结果】:在[-1,1]区间上取n=20个等距节点,步长h=2/19,计算出以相应节点上x

e 的值做为数据样本,数据如表格1。

表格 1 数据样本值

(1)

以21,,,,l

x x x 为基函数拟合x e

在matlab 中编写函数lsmex (x, y, l ),生成最小二乘法的系数矩阵A 、右端向量d ,求

出系数a =[a 0,a 1,a 2,…,a l ]T =A −1d ,得不同阶数下的最小二乘多项式y l x = a i x l

l i =0=a T X ,其中,X =[1,x ,x 2,…,x l ]T 。计算系数a 的结果如下:

0.9955486716942

0.99757900166

0.540351495874469

0.176998749075551

②l=5,a=

1.000038552490093

1.000020023273578

0.499246808308251

0.1697111425869

0.043753810227387

0.0086818882249

③l=7,a=

0.999999832859033

0.999999916830632

0.500005765944358

0.166667853917488

0.0416331725214

0.008328850726684

0.0014385132655

0.0002045690792

④l=9,a=

1.000000000409680

1.000000000193609

0.499999977559871

0.166666662393254

0.041666859391586

0.008333359277458

0.001388319252092

0.000198349327547

0.000025478122502

0.000002822438546

⑤l=11,a=

1.000000000008706

1.000000000002729

0.500000000050966

0.166666666671517

0.041666666004638

0.008333333185874

0.0013881754987

0.000198411522433

0.000024795348762

0.000002756249160

0.000000281543798

0.000000025378540 ⑥ l=13,a = 0.999999999770700 0.999999998584826 0.500000000002793 0.166666666744277 0.041666666993633 0.008333334699273 0.0013884421398 0.000198394060135 0.0000247998846 0.000002682209015 0.000000272755242 0.000000014901161 0.000000003426662 0 ⑦ l=15,a = 1.000000006592917 1.000000012805685 0.500000000015796 0.1666666183140 0.041666662936834 0.008333325386047 0.001388842803919

0.000197768211365

0.000025072928111 0.000001430511475 0.000000863215519 0.000001907348633 0.000000217004981 -0.000002384185791 0.000000011572638

0.000000238418579

计算出不同阶最小二乘多项式的误差并比较得到最小误差,最后计算cond (A )2,

绘出2ln(())cond A ~l 之间的曲线如图1,拟合误差与阶数的关系曲线如图2。

表格 2 不同阶数下的系数矩阵条件数和拟合误差值

最小误差σ 11

1.191342440055042e-018

图 1 系数矩阵A 的谱条件数和阶数的关系

图 2 拟合误差与阶数的关系

(2)以121,(),(),()l p x p x p x 为基函数拟合x

e

在matlab 中编写函数lsmexlgd (x, y, l ),生成最小二乘法的系数矩阵A 、右端向量d ,求出系数a =[a 0,a 1,a 2,…,a l ]T =A −1d ,得不同阶数下的最小二乘多项式y l x =

a i p l (x )l

i =0=a T X ,其中,X =[1,p 1(x ),p 2(x ),…,p l (x )]T 。计算系数a 的结果如下:

①l =3,a =

1.175666152008432 1.103778251135020 0.360234330582979

0.070799499630219 ② l =5,a = 1.1752049173049 1.103639099368339 0.357833382811630 0.070457461559185 0.010000870909119 0.001102461996817

③ l =7,a =

1.175201209747137 1.1036383263283 0.357814********* 0.070455639883299 0.0099652650863 0.001099594726534 0.000099637282407 0.000007629616011 ④

l =9,a =

1.175201193697940 1.103638323523287 0.357814********* 0.070455633687156 0.009965128554402 0.001099586149963 0.000099454781535 0.000007620559433 0.000000506790883 0.000000029722041

⑤ l =11,a =

1.1752011933971 1.103638323514353 0.3578143508158 0.070455633668543 0.009965128150024 0.001099586127269 0.000099454340203 0.000007620541351

0.0000005072467 0.000000029718138 0.000000001560386

0.000000000074146 ⑥

l =13,a =

1.1752011933802 1.103638323514325 0.3578143507374 0.070455633668488 0.009965128148872 0.001099586127206 0.000099454339116 0.000007620541308 0.0000005071976 0.000000029718141 0.000000001560885 0.000000000074202 0.000000000003220 0.000000000000132 ⑦ l =15,a = 1.1752011933800

1.103638323514317 0.3578143507367 0.070455633668470

0.009965128148861

0.001099586127186 0.000099454339106 0.000007620541295 0.0000005071972 0.000000029718142 0.0000000015600 0.000000000074217 0.000000000003233 0.000000000000154

0.000000000000015

0.000000000000020

计算出不同阶最小二乘多项式的误差并比较得到最小误差,最后计算cond (A )2,绘出

2ln(())cond A ~l 之间的曲线如图3,拟合误差与阶数的关系曲线如图4。

表格 3 不同阶数下的系数矩阵条件数和拟合误差值

最小误差σ13 1.528726152656812e-029

图 3 系数矩阵A的谱条件数和阶数的关系

图 4 拟合误差与阶数的关系

【对比与分析】图5为两种方法的系数矩阵条件数与阶数的关系曲线对比,从图看出,用勒让德多项式拟合原函数(方法一)时系数矩阵条件数大大小于以21,,,,l x x x 为基函数拟合原函数(方法二)时系数矩阵的条件数。系数矩阵条件数越大,系数的线性方程组的解误差越大。当l =15时,方法一求出的系数a 出现负值。因此 ,从系数矩阵条件数考虑 ,方法一优于方法二。

图 5 两种方法系数矩阵条件数与阶数的关系曲线对比

图 6 两种方法拟合误差与阶数的关系曲线对比

方法一

方法二

方法一

方法二

图6为两种方法的最小拟合误差与阶数关系曲线对比。在阶数 l ≤8时,两种方法的最小拟合误差相同,当l >8时,方法一的最小拟合误差远远大于方法二的最小拟合误差,且误差逐渐增大,出现误差不稳定现象。对于方法二,当l >13时误差开始增大,出现不稳定现象。因此,从最小拟合误差考虑,方法二优于方法一。

综上,在[-1,1]上拟合函数x e 时,以勒让德多项式为基函数比以21,,,,l x x x 为基函数更好。

附函数源代码:

(1)以21,,,,l x x x 为基函数拟合

function lsmex(x,y,l)

%给定一组数据,以span{1,x,x^2,x^3,...,x^l;l=0,1,2,3,...}基函数,选取不同的l

%用最小二乘法拟合exp (x ),确定相应的最小二乘法系数矩阵A ,画出ln(Cond(A))-l 的 %曲线,计算最小误差delta ,绘制拟合误差与阶数l 的关系曲线。 for m = 1:7 t(m) = l(m)+1 C = ones(20,t(m)) for i = 1:20

for j = 1:t(m)

C(i,j)=x(i)^(j-1)

end end

A = C'*C %生成最小二乘法系数矩阵A d = C'*y' %生成右端向量d a = inv(A)*d %计算系数a %求拟合值yy yy0 = ones(20,t(m)) for i = 1:20

for j = 1:t(m) yy0(i,j) = x(i)^(j-1) end end

yy = yy0*a %求误差delta delta = 0 for k = 1:20

delta = delta +(yy(k)-y(k))^2 end

deltaA(m) = delta

condA(m) = cond(A,2) %计算A 的条件数 end

%求最小误差mindelta mindelta = min(deltaA)

figure(1)

plot(l,log(condA),'k-.o','LineWidth',2)

grid

title('系数矩阵A的谱条件数与阶数的关系')

xlabel('阶数l')

ylabel('ln(cond(A))')

%绘制拟合误差曲线

figure(2)

plot(l,log(deltaA),'k-.p','LineWidth',2)

grid

title('拟合误差与阶数的关系')

xlabel('阶数l')

ylabel('ln(delta)')

end

(2)以勒让德多项式为基函数拟合

function lsmexlgd(x,y,l)

%给定一组数据,以span{1,p1(x),p2(x),p3(x),...,pl(x);l=0,1,2,3,...}为基函数

%(其中p(x)为Legendre多项式),

%选取不同的l用最小二乘法拟合exp(x),确定相应的最小二乘法系数矩阵A,画出%ln(Cond(A))-l的曲线,并计算最小误差delta,绘制拟合误差与阶数l的曲线。

for m = 1:7

t(m) = l(m)+1

for i = 1:20

b = LegendreP(x(i),t(m))

for j = 1:t(m)

C(i,j) = b(j)

end

end

A = C'*C %生成最小二乘法系数矩阵A

d = C'*y' %生成右端向量d

a = A\\d %计算系数a

condA(m) = cond(A,2)

%求拟合值yy

yy = C*a

%求误差delta

delta = 0

for k = 1:20

delta = delta +(yy(k)-y(k))^2

end

deltaA(m) = delta

condA(m) = cond(A,2) %计算A的条件数

end

%求最小误差mindeltamindelta = min(deltaA)

%绘制ln(Cond(A))-l的曲线

figure(1)

plot(l,log(condA),'k-.o','LineWidth',2)

grid

title('系数矩阵A的谱条件数与阶数的关系')

xlabel('阶数l')

ylabel('ln(cond(A))')

%绘制拟合误差曲线

figure(2)

plot(l,log(deltaA),'k-.p','LineWidth',2)

grid

title('拟合误差与阶数的关系')

xlabel('阶数l')

ylabel('ln(delta)')

end

其中LegendreP为勒让德多项式函数,源代码如下:

function LegendreMATRIX=LegendreP(X,N)

if N<2

fprintf('N smaller than needed parameter\\n') ;%可能缺少一个跳出指令end

LegendreMATRIX=ones(size(X,2),N);%生成Legendre多项式矩阵

if N>=2

LegendreMATRIX(:,2)=X';

end

if N>=3

for i=3:N

LegendreMATRIX(:,i)=[(2*(i-1)-1)*X(1,:)'.*LegendreMATRIX(:,i-1)-(i-2) *LegendreMATRIX(:,i-2)]/(i-1);

%注意此时的阶次与矩阵序列号的关系,i与i-1的区别

end

end

end

文档

最小二乘法实验报告

最小二乘法实验报告【实验目的】:观察最小二乘多项式的数值不稳定现象【实验内容】:1在[-1,1]区间上取n=20个等距节点,计算出以相应节点上xe的值做为数据样本,以21,,,,lxxx为基函数作出3,5,7,9,11,13,15l=次的最小二乘多项式,画出2ln(())condA~l之间的曲线,其中A是确定最小二乘多项式的系数矩阵。计算出不同阶最小二乘多项式给出的最小误差21()(())niiilyxyσ==-∑2在[-1,1]区间上取n=20个等距节点,计算出以相应节点上xe的值做为数据样
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top