计算方法实验指导书
河北大学电子信息工程学院
2007年9月
目录
计算方法实验教学计划…………………………………………………………2
实验一MATLAB基本操作……………………………………………………、、3
实验二插值法…………………………………………………………………、、5
实验三线性方程组得直接解法………………………………………………、、7
实验四线性方程组得迭代方法………………………………………………10
实验五函数逼近与曲线拟合……………………………………………、…、12
计算方法实验教学计划
指导教师:李昆仑
学时数:10学时周4学时2次实验,共3周6次实验,第7—9教学周,
每次实验2学时
所用仪器设备:MATLAB7、0实验软件系统
实验指导书:Matlab实验指导书自编
实验参考书:
《计算方法》, 徐萃薇等编著,高等教育出版社,2003、7
《数值分析与实验》,薛毅编著,北京工业大学出版社,2005、3
实验项目:
A,MATLAB基本操作
内容:矩阵操作,基本数学函数,逻辑函数操作等;
要求:完成一些基本练习题
B,插值法
内容:Lagrange插值、分段线性插值、三次样条在计算机上用MATLAB软件实现
要求:完成一些基本练习题
C, 线性方程组得求解——直接解法
内容:高斯消元法,列主元素法及其误差分析等在计算机上用MATLAB软件实现。
要求:用实例在计算机上计算与作图。
D,线性方程组得求解——迭代法
内容:向量与矩阵得范数,雅可比迭代法,高斯-赛德尔迭代法及其收敛性等在计算机上用MATL AB软件实现。
要求:用实例在计算机上计算。
E, 函数逼近与曲线拟合
内容:曲线拟与与最小二乘方法在计算机上用MATLAB软件实现,并用实例在计算机上计算与作图。
要求:用实例在计算机上计算。
实验一MATLAB基本操作
实验目得
熟悉MATLAB得使用方法及特点;学会建立MATLAB搜索路径;熟悉MATLAB工作空间、MATLAB集成环境、命令窗口;掌握MATLAB得通用命令、管理命令与函数、管理变量与工作空间得使用方法;
掌握MATLAB基本操作及矩阵基础知识,包括:输入矩阵、矩阵得转置、矩阵元素求与、矩阵下际、矩阵连接、矩阵行列删除、矩阵产生与操作、逻辑与关系运算、操作符与特殊字符、
基本矩阵与矩阵操作、基本矩阵与阵列;掌握特殊变量与常数;掌握基本数学函数。
二、实验内容
利用基本矩阵产生3x3与15x8得单位阵,全1阵,全0阵,均匀分布得随机阵([-1,1]之间),正态分布随机阵(方差4,均值1)
2.利用diag()函数与rot90()产生下列矩阵:
0 0 8 2 0 4
a= 0 -7 5 b= 0 5 0
2 3 0 708
然后求解a阵得逆矩阵aa及b阵得特征值与对应特征向量,并利用reshape将aa阵变换成行向量。
产生一均匀分布在(-5,5)随机阵(50x2),精确到小数点后一位。
4.编程实现当α∈[-π,π],间隔为1o时,求解正弦与余弦得值,并利用plot()函数绘制正弦,余弦曲线。
5.利用rand函数产生(0,1)间均匀分布得10x10随机矩阵a,然后统计a中大于等于0、6得元素个数。
6.利用randn函数产生均值为0,方差为1得10x10正态分布随机阵,然后统计其中大于-0、5,小于0、5得元素个数。
7.编程实现下表功能:
ab
b<=0、5
b>0、5
a<1
显示‘case 1’
显示‘case2’
a>=1
显示‘case3’
显示‘error’
8.有一矩阵a,找出矩阵中其值大于1得元素,并将她们重新排列成列向量b。
9.在一保定市区9月份平均气温变化测量矩阵temp_Baoding_sep中(48x30),存在有奇异值(大于42o C,小于0o C),编程实现删除奇异值所在得行。
10.在给定得100x100矩阵中,删除整行内容全为0得行,删除整列内容全为0得列。
三、实验要求
要求在实验前必须预习,将实验内容事先准备好,否则不允许上机。
上机过程中由指导老师检查结果后方可做其她内容。每次实验结束后完成实验报告并在下次实验之前由学委统一交给指导教师。
实验二插值法
一、实验目得与要求
(1)学会Langrange插值、Newton插值与Hermite插值等基本插值方法.
(2)学会Matlab提供得插值函数得使用方法,会用这些函数解决实际问题
(3) 按照题目要求完成实验内容、写出相应得Matlab程序给出实验结果.
(4)对实验结果进行分析讨论.
(5)写出相应得实验报告.
实验内容
1、Lagrange插值公式、
Matlab程序:
按照Lagrange插值公式编写Matlab程序(函数名:Lagrange、m)
function yi=agrange(x,y,xi)
%Lagrange插值多项式,其中,
%x为向量,全部得插值节点;
%y为向量,插值节点处得函数值;
%xi为标量,被估计函数得自变量:
%yi为xi处得函数估计值.
n=length(x);m=1ength(y);
%输入得插值点与它得函数值应有相同得个数
ifn~=m
error('The length of X must be equal!');
return;
end
p=zeros(1,n);
for k=1:n
t=ones(1,n);
for j=1:n
ifj~=k
%输入得插值节点必须互异
if abs(x(k)—x(j))< eps
error('the DATA iserroe!');
return;
end
end
p(k)=prod(t);
end
yi=sum(y、*p);
练习1:已知,,,利用Lagrange插值法求得值。
练习2:已知,,,利用Newton插值法求得值,并与上题得结果进行比较。
三、实验要求
要求在实验前必须预习,将实验内容事先准备好,否则不允许上机。
上机过程中由指导老师检查结果后方可做其她内容。每次实验结束后完成实验报告并在下次实验之前由学委统一交给指导教师。
实验三线性方程组得直接解法
实验目得
(1)学会用Gauss消去法与Matab函数求线性方程组解。
(2)学会对矩阵进行各种分解,如LU分解、Cholskey分解等,并研究相应得Matlab函数。(3)按照题日要求完成实验内容,写出相应得Matlab程序,给出实验结果.对实验结果进行分析讨论.写出相应得实验报告.
二、实验内容
1、按照Gauss列主元消去法得算法写出其Matlab程序(Gauss、m)。
Matlab程序
function[x,det,index]=Gauss(A,b))
%求线性方程组得列主元Gauss消去法,其中,
% A为方程组得系数矩阵;
% b为方程组得右瑞项;
%x为方程组得解;
%det为系数矩阵A得行列式得值;
% index为指标变量, index=0表示计算失败,index=1表示计算成功、[n,m]=size(A);nb=length(b);
%当方程纽行与列得维数不相等时,停止计算,并输出出错信息、
ifn~ = m
error('Therows and columns of matrix A must beequal');
return
end
%当方程组与右瑞项得维数不匹配时,停止计算,并输出出错信息
if m~ = nb
error('Thecolumns of A mustbeequal thelengthof b!');
return;
end
%开始计算,先赋初值
index=1;det=1;x=zeros(n,1);
fork=1:n-1
%选主元
a_max=0
for i=k:n
if abs(A(i,k))>a_max
a_max=abs(A(i,k));r=i;
end
end
ifa_max<1e-10
index=0;return;
end
%交换两行
if r>k
for j=k:n
z=A(k,j);A(k,j)=A(r,j);A(r,j)=z;
end
%消元过程
fori=k+11:H
m=A(i,k)/A(k,L);
for i=k十1:n
m=A(i,k)/A(k,k);
for j=k+1:n
A(i,j)=A(i,j)-m*A(k,j);
end
b(i)=b(i)-m*b(k);
end
det=det*A(k,k);
end
det=det*A(n,n);
% 回代过程
if abs(A(n,n))<1e-10
index=0;return;
end
fork=n:-1:1
for j=k+1:n
b(k)=b(k)-A(k,j)*x(j)
end
x(k)=b(k)/A(k,k)
end
练习题1:用列主元法求解线性方程组
注意:在Matlab函数中,求解线性方程组得命令非常简单。只需使用矩阵除法。如X=A\b,或利用矩阵得逆X=inv(A)*b。而求行列式得函数为det(A)、请同学自行比较计算结果。练习题2:编写Matlab程序,求列矩阵得LU分解。
三、实验要求
要求在实验前必须预习,将实验内容事先准备好,否则不允许上机。
上机过程中由指导老师检查结果后方可做其她内容。每次实验结束后完成实验报告并在下次实验之前由学委统一交给指导教师。
实验四线性方程组得迭代解法
实验目得
(1) 学会用Jacobi迭代法、Gauss- Seidel迭代法与超松弛迭代法求线性方程组解
(2) 学会对各种迭代法作收敛性分析,研究求方程组解得最优迭代方法.
(3)按照题目要求完成实验内容,写出相应得Matlab程序,给出实验结果.
(4)对实验结果进行分析讨论.
(5) 写出相应得实验报告.
二、实验内容
1、熟悉Jacobi迭代法,并编写Matlab程序
matlab程序
按照算法(Jacobi迭代法)编写Matlab程序(Jacobi、m)
function[x,k,index]=Jacobi(A,b,ep,it_max)
% 求解线性方程组得Jacobi迭代法,其中,
%A为方程组得系数矩阵;
% b为方程组得右端项;
% ep为精度要求,缺省值1e-5;
%it_max为最大选代次数,缺省值100;
%x为方程组得解;
% k为迭代次数;
% index为指标变量index=1表示迭代收敛到指定要求,
%, index=0表示迭代失败、
if nargin<4 it_max=100;end
if nargin<3 ep=1e-5;end
n=length(A);k=0;
x=zeros(n,1);y=x;index=1;
while l
for i=1:n
y(i)=b(i)
for j=1:n
if j = i
y(i)=y(i)-A(i,j)*x(j);
end
end
ifabs(A(i,i))<1e-10|k==it_max
index=0;return;
end
y(i)=y(i)/A(i,i);
end
if norm(y-x,inf)<ep
break;
end
e=y;k=k+1;
end
2、熟悉Gauss-Seidel迭代法,并编写Matlab程序
3、练习
练习题1、用Jacobi迭代法求方程组
得解。
练习题2、用Gauss-Seidel迭代法求解上题得线性方程组,取。
三、实验要求
要求在实验前必须预习,将实验内容事先准备好,否则不允许上机。上机过程中由指导老师检查结果后方可做其她内容。每次实验结束后完成实验报告并在下次实验之前由学委统一交给指导教师。
实验五函数逼近与数据拟合
实验目得
(1) 学会函数得最佳平方逼近,理解最佳平方逼近得意义.
(2)学会数据得最小二乘拟合.
(3)按照题目要求完成实验内容,写出相应得Matlab程序,给出实验结果.
(4)对实验结果进行分析讨论.
(5)写出相应得实验报告.
二、实验内容
1.最小二乘算法Matlab程序
算法:
(1) 输入数据与权系数选择函数逼近系。
(2) 求解法方程组。
(3)求出最小二乘逼近。
Matlab程序:
编写成Matlab程序(函数名:square_least、m)计算数据最小二乘拟合系数、function S=square_least(x,y,n,w)
%数据得最小二乘拟合,其中
%x,y为数据得(x,y)坐标;
%n为数据拟合得次数,缺省时n=1;
%w为权值,缺省值w=1;
%S为数据拟合得系数;
%需要另写得外部函数、
%phi(x)为基函数,通常为多项式1,x,x^2,、、、
global;global;
if nargin< 4w= 1; end
if nargin <3n=1;end
phi2=zeros(n+1);
fori=0:n
for i=0:n
phi2(i+1,j+1)=sum(w、* phi_k(x,i))、*phi_k(x,j);
end
end
phiF= zeros(n+1,1);
end
S=phi\phiF
1.数据得最小二乘拟与
假定某天得气温变化记录如表所示
时间(t)
1
2
3
4
5
6
7
8
9
10
11
12
温度(x(t))
15
14
14
14
14
15
16
18
20
22
23
25
28
时间(t)
13
14
15
16
17
18
19
20
21
22
23
24
温度(x(t))
31
32
31
29
27
25
24
22
20
18
17
16
试用最小二乘法确定这一天得气温变化规律。
三、实验要求
要求在实验前必须预习,将实验内容事先准备好,否则不允许上机。
上机过程中由指导老师检查结果后方可做其她内容。每次实验结束后完成实验报告并在下次实验之前由学委统一交给指导教师。