数值分析实验题和程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、实验3.1
编制以函数{}
n k
k x
=危机的多项式最小二乘拟合程序,并用于对表3.11中的数据作3次
取权数1i w ≡,求拟合曲线3
*
k
k k a x
φ==
∑中的参数{}k a 、平方误差2
σ,并作离散数据
{},i i x y 的拟合曲线*()y x φ=的图形。
程序代码: x0=-1:0.5:2;
y0=[-4.447 -0.452 0.551 0.048 -0.447 0.549 4.552]; n=3;
alph=polyfit(x0,y0,n) %参数{a k } y=polyval(alph,x0);
r=(y0-y)*(y0-y)' %平方误差2
σ=r y=polyval(alph,x); x=-1:0.01:2; y=plot(x,y,'k--'); xlabel('x');
ylabel('y0 * and polyfit.y--'); hold on;
plot(x0,y0,'*');
title('离散数据的3项拟合') gridon;
实验结果:
拟合函数*
()y x φ=的图形:
拟合曲线
3
*
k
k
k
a x
φ
=
=∑中的参数{}k a中3210
,,,
a a a a依次为alph中的四个数值。
alph =
1.9991 -
2.9977 -0.0000 0.5491
平方误差2
σ=r。
r =
2.1762e-005
实验分析:
最小二乘曲线拟合是在离散情形下的最佳平方逼近,拟合的曲线很光滑,而且所有的7个数值点均在曲线上,拟合效果很好;拟合的平方误差很小,为10-5量级。
二、实验3.2
编制正交化多项式最小二乘拟合程序,并用于求解上题中的3次多项式最小二乘拟合问题,作拟合曲线的图形,计算平方误差,并与上题结果进行比较。
程序代码:
x=-1:0.5:2;
y=[-4.447 -0.452 0.551 0.048 -0.447 0.549 4.552];
n=3;
result=inputdlg({'请输入权向量w:'},'charpt-3',1,{'[1 1 1 1 1 1 1]'});
w=str2num(char(result));
m=length(x)-1;
s1=0;s2=ones(1,m+1);v2=sum(w);
d(1)=y*w';c(1)=d(1)/v2;
for k=1:n
xs=x.*s2.^2*w';a(k)=xs/v2;
if(k==1)
b(k)=0;
else
b(k)=v2/v1;
end
s3=(x-a(k)).*s2-b(k)*s1;
v3=s3.^2*w';
d(k+1)=y.*s3*w';c(k+1)=d(k+1)/v3;
s1=s2;s2=s3;v1=v2;v2=v3;
end
r=y.*y*w'-c*d'
alph=zeros(1,n+1)
T=zeros(n+1,n+2);
T(:,2)=ones(n+1,1);T(2,3)=-a(1);
if(n>=2)
for k=3:n+1
for i=3:k+1
T(k,i)=T(k-1,i)-a(k-1)*T(k-1,i-1)-b(k-1)*T(k-2,i-2);
end
end
end
for i=1:n+1
for k=i:n+1
alph(n+2-i)=alph(n+2-i)+c(k)*T(k,k+2-i);
end
end
xmin=min(x);xmax=max(x);dx=(xmax-xmin)/(25*m);
t=(xmin-dx):dx:(xmax+dx);
s=alph(1);
for k=2:n+1
s=s.*t+alph(k);
end
plot(x,y,'x',t,s,'-');
xlabel('x');
ylabel('y');
grid on;
disp(alph);
disp(r);
实验结果:
拟合曲线图形:
参数{}k a 中3210,,,a a a a 依次为alph 中的四个数值:1.9991 -2.9977 -0.0000 0.5491 平方误差2
σ=r :2.1762e-005
实验分析:
比较实验3.1和3.2的结果发现:对于同一个数据表,两种方法的拟合参数、误差均是相等的,表示这两种方法的拟合效果是一样的。因为这个数据表不是病态的法方程组,所以没有体现出正交多项式曲线拟合的优点。根据这两个实验代码和运算时间来看,我们在做曲线拟合时可以先初步判断数据点是否病态,若否,就直接用最小二乘法拟合。以避免不必要的程序复杂化。
三、实验5.1 常微分方程性态和R-K 法稳定性试验
实验目的:考察下面微分方程右端项中函数y 前面的参数对方程性态的影响(它可以使方程为好条件的或坏条件的)和研究计算步长对R-K 法计算稳定性的影响。 实验题目:常微分方程初值问题
'1,01,(0)1,
y ay ax x y ⎧=-+<<⎨
=⎩其中,5050a -≤≤.其精确解为()ax
y x e x =+。 实验要求:本实验题都用4阶经典R-K 法计算。
(1)对参数a 分别取4个不同的数值:一个大的正值,一个小的正值,一个绝对值小的负值和一个绝对值大的负值。取步长h=0.01,分别用经典的R-K 法计算,将四组计算结果画在同一张图上,进行比较并说明相应初值的性态。
(2)取参数a 为一个绝对值不大的负值和两个计算步长,一个步长使参数ah 在经典R-K 法的稳定域内,另一个步长在经典R-K 法的稳定域外。分别用经典R-K 法计算并比较结果。取全域等距的10个点上的计算值,列表说明。
程序代码(1): function charp5_1 clf;