计算方法作业31.docx
《计算方法作业31.docx》由会员分享,可在线阅读,更多相关《计算方法作业31.docx(15页珍藏版)》请在冰豆网上搜索。
计算方法作业31
《计算方法》上机指导书
实验1MATLAB基本命令
1.掌握MATLAB的程序设计
实验内容:
对以下问题,编写M文件。
(1)生成一个5×5矩阵,编程求其最大值及其所处的位置。
(2)编程求
。
(3)一球从100米高度自由落下,每次落地后反跳回原高度的一半,再落下。
求它在第10次落地时,共经过多少米?
第10次反弹有多高?
2.掌握MATLAB的绘图命令
实验内容:
对于自变量
的取值属于[0,
],在同一图形窗口画出如下图形。
(1)
;
(2)
;
实验2插值方法与数值积分
1.研究人口数据的插值与预测
实验内容:
下表给出了从1940年到1990年的美国人口,用插值方法推测1930年、1965年、2010年人口的近似值。
美国人口数据
年
1940
1950
1960
1970
1980
1990
人口(千人)
132,165
151,326
179,323
203,302
226,542
249,633
1930年美国的人口大约是123,203千人,你认为你得到的1965年和2010年的人口数字精确度如何?
2.最小二乘法拟合经验公式
实验内容:
某类疾病发病率为
‰和年龄段
(每五年为一段,例如0~5岁为第一段,6~10岁为第二段……)之间有形如
的经验关系,观测得到的数据表如下
1
2
3
4
5
6
7
8
9
0.898
2.38
3.07
1.84
2.02
1.94
2.22
2.77
4.02
10
11
12
13
14
15
16
17
18
19
4.76
5.46
6.53
10.9
16.5
22.5
35.7
50.6
61.6
81.8
(1)用最小二乘法确定模型
中的参数
和
。
(2)利用MATLAB画出离散数据及拟合函数
图形。
3.复化求积公式
实验内容:
对于定积分
。
(1)分别取利用复化梯形公式计算,并与真值比较。
再画出计算误差与
之间的曲线。
(2)取[0,1]上的9个点,分别用复化梯形公式和复化辛普森公式计算,并比较精度。
实验3非线性方程与线性方程组
1.矩阵的范数与条件数
实验内容:
已知矩阵
求
,
,
和
。
2.研究高斯消去法的数值稳定性
实验内容:
设方程组
,其中
(1)
,
(2)
,
分别对以上两个方程组
(1)计算矩阵的条件数,判断系数矩阵是良态的还是病态的?
(2)用列主元消去法求得L和U及解向量
;
(3)用不选主元的高斯消去法求得L和U及解向量
;
(4)观察小主元并分析对计算结果的影响。
3.求解非线性方程,比较不同方法的计算量
实验内容:
比较求
的根到三位小数所需的计算量:
(1)在区间[0,1]内用二分法;
(2)用迭代法
,初值
;
(3)用牛顿迭代法,取初值
。
《计算方法》上机实验报告
姓名:
陶成川学号:
U*********班级:
机械09
一、问题
1.矩阵的范数与条件数
实验内容:
已知矩阵
求
,
,
和
。
2.研究高斯消去法的数值稳定性
实验内容:
设方程组
,其中
(1)
,
(2)
,
分别对以上两个方程组
(1)计算矩阵的条件数,判断系数矩阵是良态的还是病态的?
(2)用列主元消去法求得L和U及解向量
;
(3)用不选主元的高斯消去法求得L和U及解向量
;
(4)观察小主元并分析对计算结果的影响。
3.求解非线性方程,比较不同方法的计算量
实验内容:
比较求
的根到三位小数所需的计算量:
(1)在区间[0,1]内用二分法;
(2)用迭代法
,初值
;
(3)用牛顿迭代法,取初值
。
二、Matlab程序
1.
A=[1111;
-11-11;
-1-111;
1-1-11];
a1=norm(A,1);
a2=norm(A);
a3=norm(A,inf);
B=inv(A);
a4=norm(B);
a5=a2*a4;
fprintf('||A||1is%d\n',a1);
fprintf('||A||2is%f\n',a2);
fprintf('||A||is%d\n',a3);
fprintf('cond2(A)is%f\n',a5);
2.
(1)A=[3e-1659.4131;
5.291-6.130-12;
11.2952;
1211];
aA=cond(A,2)
B=[10-701;
-32.09999999999999962;
5-15-1;
0102];
aB=cond(B,2)
(2)%构造函数
functionx=gauss1(A,b)
A=[A';b]',
n=length(b);
fork=1:
n-1
s=A(k,k);
p=k;
fori=k+1:
n
ifabs(s)s=A(i,k);
p=i;
end
end
p
s
ifp~=k
forj=k:
n+1
t=A(k,j);
A(k,j)=A(p,j);
A(p,j)=t;
end
end
A
fori=k+1:
n
m=A(i,k)/A(k,k);
fprintf('m%d%d=%f\n',i,k,m);
forj=k:
n+1
A(i,j)=A(i,j)-m*A(i,j);
end
end
fprintf('A%d=\n',k+1);
A
end
A(n,n+1)=A(n,n+1)/A(n,n);
fori=n-1:
-1:
1
s=0;
forj=j+1:
n
s=s+A(i,j)*A(j,n+1);
end
A(i,n+1)=(A(i,n+1)-s)/A(i,i);
end
A(:
n+1)
%运算方程
A=[3e-1659.4131;
5.291-6.130-12;
11.2952;
1211];
B=[10-701;
-32.09999999999999962;
5-15-1;
0102];
b1=[59.1746.7812];
b2=[85.9000000000000151];
x1=gauss1(A,b1)
x2=gauss1(B,b2)
3.
(1)%构造二分法函数
function[xstar,k]=fen(fun,a,b,ep)
ifnargin<4,ep=1e-5;end
fa=feval(fun,a);
fb=feval(fun,b);
iffa*fb>0
xstar=[fa,fb];
k=0;return;
end
k=1;
whileabs(b-a)/2>ep
x=(a+b)/2;
fx=feval(fun,x);
iffx*fa<0
b=x;fb=fx;
else
a=x;fa=fx;
end
k=k+1;
end
xstar=(a+b)/2;
end
%计算
fun=inline('exp(x)+10*x-2');
[xstar,k]=fen(fun,0,1,0.001)
(2)%构造迭代函数
function[xstar,k]=diedai(fun,x0,ep,nmax)
ifnargin<4nmax=500;end
ifnargin<3ep=1e-5;end
x=x0;x0=x+2*ep;k=0;
whileabs(x0-x)>ep&kx0=x;
x=feval(fun,x0)
k=k+1;
end
xstar=x;
ifk==nmaxwarning('get');
end
End
%计算
fun2=inline('0.1*(2-exp(x))');
[xstar2,k2]=diedai(fun2,0)
(3)%构造牛顿迭代函数
function[xstar,k]=newtown(fname,dfname,x0,ep,nmax)
ifnargin<5nmax=500;end
ifnargin<4ep=1e-5;end
x=x0;x0=x+2*ep;k=0;
whileabs(x0-x)>ep&&kk=k+1;x0=x;x=x0-feval(fname,x0)/feval(dfname,x0);
end
xstar=x;
ifk==nmaxwarning('enough');end
End
%运算
fname=inline('exp(x)+10x-2');
dfname=inline('exp(x)+10');
[xstar,k]=newtown(fname,dfname,1)
三.实验结果
1.
||A||1is4
||A||2is2.000000
||A||is4
cond2(A)is1.000000
2.
(1)aA=
68.7205
aB=
8.9939
根据条件数,A为病态,B为病态
(2)
A=
0.000059.41003.00001.000059.1700
5.2910-6.1300-1.00002.000046.7800
11.20009.00005.00002.00001.0000
1.00002.00001.00001.00002.0000
p=
3
s=
11.2000
m21=0.472411
m31=0.000000
m41=0.089286
A2=
A=
11.20009.00005.00002.00001.0000
2.7915-3.2341-0.52761.055224.6806
0.000059.41003.00001.000059.1700
0.91071.82140.91070.91071.8214
p=
3
s=
59.4100
m32=-0.054437
m42=0.030659
A3=
A=
11.20009.00005.00002.00001.0000
2.791559.41003.00001.000059.1700
0.0000-3.4102-0.55631.112626.0242
0.91071.76560.88280.88281.7656
p=
4
s=
0.8828
m43=-0.630170
A4=
A=
11.20009.00005.00002.00001.0000
2.791559.41003.00001.000059.1700
0.0000-3.41020.88280.88281.7656
0.91071.7656-0.90691.813842.4238
ans=
0.0893
0.9960
2.0000
23.3900
A=
10.0000-7.000001.00008.0000
-3.00002.10006.00002.00005.9000
5.0000-1.00005.0000-1.00005.0000
01.000002.00001.0000
p=
1
s=
10
m21=-0.300000
m31=0.500000
m41=0.000000
A2=
A=
10.0000-7.000001.00008.0000
-3.90002.73007.80002.60007.6700
2.5000-0.50002.5000-0.50002.5000
01.000002.00001.0000
p=
2
s=
2.7300
m32=-0.183150
m42=0.366300
A3=
A=
10.0000-7.000001.00008.0000
-3.90002.73007.80002.60007.6700
2.5000-0.59162.9579-0.59162.9579
00.633701.26740.6337
p=
3
s=
2.9579
m43=0.000000
A4=
A=
10.0000-7.000001.00008.0000
-3.90002.73007.80002.60007.6700
2.5000-0.59162.9579-0.59162.9579
00.633701.26740.6337
ans=
0.8000
2.8095
1.0000
0.5000
3.
(1)
xstar=
0.0908
k=
10
(2)
x=
0.1000
x=
0.0895
x=
0.0906
x=
0.0905
x=
0.0905
x=
0.0905
xstar2=
0.0905
k2=
6