数值分析上机作业修改讲义
- 格式:doc
- 大小:238.50 KB
- 文档页数:13
西南交通大学
数值分析2015上机实习报告
2015年11月
数值分析2015上机实习报告
目录
第2题 (1)
1. 程序 (1)
2. 结果分析 (2)
第3题 (5)
1. 程序 (6)
2. 结果分析 (7)
第5题 (8)
1. 程序 (8)
2. 结果分析 (9)
第2题
2. 某过程测涉及两变量x 和y, 拟分别用插值多项式和多项式拟合给出其对应规律的近似多项式,已知xi与yi之间的对应数据如下,xi=1,2,…,10
yi = 34.6588 40.3719 14.6448 -14.2721 -13.3570 24.8234 75.2795
103.5743 97.4847 78.2392
(1)请用次数分别为3,4,5,6的多项式拟合并给出最好近似结果f(x)。
(2)请用插值多项式给出最好近似结果
下列数据为另外的对照记录,它们可以作为近似函数的评价参考数据。
xi =
Columns 1 through 7
1.5000 1.9000
2.3000 2.7000
3.1000 3.5000 3.9000
Columns 8 through 14
4.3000 4.7000
5.1000 5.5000 5.9000
6.3000 6.7000
Columns 15 through 17
7.1000 7.5000 7.9000
yi =
Columns 1 through 7
42.1498 41.4620 35.1182 24.3852 11.2732 -1.7813 -12.3006
Columns 8 through 14
-18.1566 -17.9069 -11.0226 2.0284 19.8549 40.3626 61.0840
Columns 15 through 17
79.5688 93.7700 102.3677
1. 程序
(1)多项式拟合程序
n=input('输入所要拟合的阶数n=');
hold on;
x=1:10;
y=[34.6588 40.3719 14.6448 -14.2721 -13.3570 24.8234 75.2795 103.5743 97.4847 78.2392];
P=polyfit(x,y,n)
xi=1:.2:10;
yi=polyval(P,xi);
plot(xi,yi,x,y,'r*');
legend('拟合曲线','原始数据')
(2)拉格朗日插值多项式拟合程序
clc;
x=1:10;
y=[34.6588 40.3719 14.6448 -14.2721 -13.3570 24.8234 75.2795 103.5743 97.4847 78.2392]; plot(x,y,'r*');
hold on;
syms t;
n=length(x);
f = 0.0;
for i =1:n
l = y(i);
for j = 1:i-1
l = l*(t-x(j))/(x(i)-x(j));
end;
for j = i+1:n
l = l*(t-x(j))/(x(i)-x(j));
end;
f = f + l;
simplify(f);
f = collect(f);
f = vpa(f,6);
end
ti=1.0:0.4:10;
f=subs(f,'t',ti);
plot(ti,f)
legend('拟合曲线','原始数据')
title '拉格朗日插值多项式拟合'
2. 结果分析
(1)请用次数分别为3,4,5,6的多项式拟合并给出最好近似结果f(x)。
图2-1 3次多项式拟合结果
图2-2 4次多项式拟合结果
图2-3 5次多项式拟合结果
图2-4 6次多项式拟合结果
从绘制的图形来看,当采用6次多项式拟合的时候,拟合的曲线已经与所给出的点非常逼近了。
6次多项式拟合曲线为:f(x)=0.0194x6-0.5408x5+5.1137x4-16.8973x3-0.8670x2+66.3750x-18.6991(2)拉格朗日插值多项式给出最好近似结果
图1-4 拉格朗日插值多项式拟合
第3题
3.用雅格比法与高斯-赛德尔迭代法解下列方程组Ax=b,研究其收敛性,上机验证理论分析是否正确,比较它们的收敛速度,观察右端项对迭代收敛有无影响。
(1)A行分别为A1=[6,2,-1],A2=[1,4,-2],A3=[-3,1,4];b1=[-3,2,4]T, b2=[100,-200,345]T,
(2) A行分别为A1=[1,0,8,0.8],A2=[0.8,1,0.8],A3=[0.8,0.8,1];b1=[3,2,1]T, b2=[5,0,-10]T,
(3)A行分别为A1=[1,3],A2=[-7,1];b=[4,6]T, 1. 程序
(1)雅格比法程序
function jacobi( )
clc;
clear;
A=[6 2 -1;1 4 -2;-3 1 4];
B=[-3;2;4];
Err_user=0.01;
N=500;
[m,n]=size(A);
X=zeros(n,1);
k=1;
while k<=N;
Xk=X;
for i=1:n
for j=1:n
if i~=j
AX(j)=A(i,j)*Xk(j);
end
end
Sum_AX=sum(AX);
AX=0;
X(i)=(B(i)-Sum_AX)/A(i,i);
end
E=max(abs(Xk-X));
if E break; end k=k+1; end disp(X); %显示迭代结果 disp(k); %显示迭代次数 (2)高斯-赛德尔迭代法程序