数值实验word版教材.docx
《数值实验word版教材.docx》由会员分享,可在线阅读,更多相关《数值实验word版教材.docx(21页珍藏版)》请在冰豆网上搜索。
数值实验word版教材
实验2.3迭代的加速方法
实验目的:
对线性方法(或不收敛的方法)进行加速,考察Steffensen迭代法、Aitken迭代法的加速效果。
实验内容:
求解方程,适当选取初值,采用如下迭代格式:
(1).
(2).
(3)由格式
(2)得到的Steffensen迭代法。
(4)牛顿迭代法。
实验要求:
(1)对4种迭代格式编程计算,并比较计算的结果(包括收敛速度)。
(2)对前两种迭代格式产生的迭代数列,分别用Aitken迭代法进行加速,并与原来的结果进行比较。
算法:
(一)功能:
用迭代公式求方程的根;
形参:
迭代函数g,初值,精度e;
条件:
对初值迭代收敛.
结果:
返回方程的根,相邻两次近似值相差不超过e.
说明:
函数abs表示,即
若迭代对某范围内任一初值都收敛,则可取消形参,而由程序选取。
若对初值迭代格式未必收敛,则有下面算法。
迭代结果:
x=fun1(inline('sqrt(x.^2-0.8)'),0.5,1e-5)
Warning:
已达迭代次数上限
Infun1at15
k=500
x=0+19.9937i
(二)功能:
用迭代公式求方程的根;
形参:
迭代函数g,初值,精度e,最大迭代次数m;
说明:
用逻辑变量L表示迭代成功或失败,若迭代成功,则x为根的近似值,否则x没有意义。
迭代的最大次数可为形参,也可由算法选定。
迭代失败并不说明迭代发散,只表示迭代制定次数未达到精度要求。
若迭代格式收敛较慢,精度要求高,则因适当取较大的m。
迭代结果:
x=fun1(inline('(x.^2-0.8).^(1/3.0)'),0.5,1e-5)
k=22
x=0.8442+0.6705i
(三)Steffensen迭代
功能:
用Steffensen迭代法求方程的根;
条件:
迭代每一步,公式中的分母非零,迭代收敛;
形参:
迭代函数g,初值,精度e;
结果:
返回方程的根,相邻两次近似值相差不超过e.
说明:
x^2表示;
迭代初值可由程序确定或由形参传入;
若迭代可能发散,则可对此算法做适当修改。
迭代结果:
(2)x=XCSteffensen(inline('(x.^2-0.8).^(1/3.0)'),0.5,1e-5,500)
k=3
Warning:
ImaginarypartsofcomplexXand/orYargumentsignored.
>InXCaitkenat22
x=0.8442+0.6705i
(四)Newton迭代
功能:
用Newton迭代求解方程的根;
形参:
函数,倒数,初值,根x,精度e,最大迭代次数m
结果:
返回迭代是否成功,若迭代成功,则x返回方程的一个根。
说明:
形参f和f1可和为一个形g,;形参可合并为一个形参。
formatlong
fun=inline('x.^3-x.^2-0.8');
dfun=inline('3*x.^2-2*x');
x=XCnewton(fun,dfun,1.0,1e-5,500)
k=5
x=1.40516702210213
(五)Aitken迭代
功能:
用Aitken迭代法求方程的根;
条件:
迭代每一步,公式中的分母非零,迭代收敛;
形参:
迭代函数g,初值,精度e;
结果:
返回方程的根,相邻两次近似值相差不超过e.
(1)x=XCaitken(inline('sqrt(x.^2-0.8)'),0.5,1e-5,500)
Warning:
Dividebyzero.
>InXCAitkenat14
Warning:
已达迭代次数上限
>InXCAitkenat20
k=500
Warning:
ImaginarypartsofcomplexXand/orYargumentsignored.
>InXCAitkenat22
x=NaN+NaNi
(2)x=XCaitken(inline('(x.^2-0.8).^(1/3.0)'),0.5,1e-15,500)
k=20
x=1.40516702210234
实验3.2方程组的性态和条件数实验
实验目的;
理解条件数的意义和方程组的性态对解向量的影响。
实验内容:
已知两个方程组和,其中
,
实验要求:
对,取下面均用Matlab函数“”计算方程组的解。
(1)取n=4,6,8,分别求出的条件数,判别它们是否是病态阵?
岁n的增大,矩阵的性态变化如何?
(2)取n=5,分别求出两个方程组的解向量.
(3)取n=5,b不变,对的元素分别加一个扰动,分别求出第一个方程组的解向量;若不变,对b的元素加一个扰动,求出
(4)取n=6,b不变,对的元素分别加一个扰动,分别求出第三个方程组的解向量.
(5)观察和分析和b的微小扰动对解向量的影响,得出你的结论.
(6)求.
解答:
(1)取n=4,6,8,求出A1的条件数分别为3.5740e+005、8.7385e+007、2.2739e+010,求出A2的条件数分别1.5514e+004、1.4951e+007、1.5258e+010,从而说明A1,A2是病态矩阵,N越大,A1、A2病态问题越严重;
(2)取n=5,分别求出两个方程组的解向量(对应M文件为f1,f2):
X1=’X2=;
(3)取n=5,b不变,对的元素分别加一个扰动(对应M文件为f131),得,若不变,对b的元素加一个扰动(对应的M文件为f132),;
(4)取n=6,b不变,对的元素分别加一个扰动(对应的M文件为f4),
实验4.2Hermite插值
实验目的:
掌握Hermite插值.
实验内容:
(1)已知4次多项式满足:
输出多项式系数,并计算.
(2)已知函数的数据,求的Hermite插值多项式.
实验要求:
(1)编程Hermite实现插值多项式的算法.
(2)用数学软件绘制函数曲线.
Hermite差值:
功能:
计算差商;
形参:
整型n,插值结点数组x[0..n],结点重数m[0..n],函数值及导数值y[0..N]:
其中,数组a[0..N].
条件:
数组x的元素各不相同.
结果:
返回数组差商,。
实验5.2自动变步长辛普森方法和自适应辛普森方法
实验内容:
计算下列积分:
(1);(3).
实验要求:
(1)分别用复化辛普森公式、自动变步长辛普森公式和自适应辛普森公式计算,要求绝对误差限,输出每种方法所需要的节点数和积分近似值.对于自适应方法,显示实际计算节点上离散函数的分布图.
(2)分析比较计算结果.
复化辛普森公式:
功能:
用复化Simpson方法求的近似根;
形参:
被积函数f,区间端点a,b,区间分割数n;
结果:
返回积分的近似值。
求解:
(1)
自动变步长辛普森公式
功能:
用自动变步长辛普森公式求的近似根;
形参:
区间端点a,b,精度要求e;
结果:
返回积分的近似值。
*实验6.4.4预处理方法与Krylov子空间方法简介
实验6.2SOR迭代法
实验目的:
掌握迭代法,考察松弛因子对迭代收敛性与收敛速度的影响.
实验内容;
用SOR迭代法求解方程组,取迭代初值,分别取松弛因子,迭代30次或满足时停止计算.
实验要求:
(1)编程求解,并与数学软件求解的结果对比.
(2)考察迭代是否收敛,若收敛,松弛因子取何值时收敛最快.与有关定理的结论对照,看结果是否一致.
算法:
功能:
用SOR迭代法求解方程组Ax=b;
形参:
阶数n,系数矩阵A,向量b,精度e,最大迭代次数m,松弛因子w,向量x.
条件:
A的对角元素非零,0结果:
返回迭代是否成功,若成功则向量x返回方程组的解。
解答:
(1)x=XCsor(A,b,1.05)k=25,x=[1.5000,-1.6667,0.8333]’,其中A=,b=[1,-5,3]’,
(2)很明显,迭代是收敛的,因为特征值eig(A)=[0.8377,4.000,7.1623],按照定理,当松弛因子为1.28时收敛最快,而计算得,当松弛因子为1.30时收敛最快,需迭代12次,说明结果和定理是一致的。
实验6.3共轭梯度法
实验目的:
掌握共轭梯度法,并研究其收敛性.
实验内容:
用共轭梯度法和G-S迭代法分别就求解下面的方程组:
(1).迭代20次或满足时停止计算.
(2).迭代20次或满足时停止计算.
(3),A是1000阶三对角矩阵,迭代10次。
(4),A是1000接的矩阵,用G-S迭代法迭代1000次,共轭梯度法迭代500次.记,输出。
实验要求:
(1)编程求解,并与用数学软件求解的结果对比.
(2)观察的变化规律,对比共轭梯度法和G-S迭代法的不同特点.
G-S迭代:
功能:
用G-S迭代法求解方程组Ax=b;
形参:
阶数n,系数矩阵A,向量b,精度e,最大迭代次数m,向量x;
条件;矩阵A对角元素非零;
结果:
返回迭代是否成功,成功则用向量x返回方程组的解。
(1)取x0=[1,1,1],使用G-S迭代的法x=XCseidel(A,b,x0,1e-5,500),得迭代次数k=23,解为x=[1.5000,1.0000,0.5000]
共轭梯度法:
功能:
用共轭梯度法求解方程组Ax=b;
形参:
阶数n,系数矩阵A,向量b,精度e,最大迭代次数m,向量x0,x;
条件;矩阵A正定;
结果:
向量x返回方程组的解。
实验7.2用正交化方法求解方程组
实验目的:
掌握用正交化方法求极小最小二乘解的方法.
实验内容:
分别用Gram-Schmidt正交化方法、Householder正交化方法、Givens正交化方法求解下列方程组的极小最小二乘解;
(1);
(2);
(3)
实验要求:
(1)编程求解上述问题,注意这3个方程的不同点,算法应考虑系数矩阵是否是列满秩,若不是列满秩,设秩为r,考虑矩阵的前r列是否线性无关.
(2)用数学软件求解,对比计算结果.
(3)程序中添加统计计算的语句,比较这三种正交化方法的计算量.
实验结果:
(1)Gram-Schmidt正交化方法:
功能:
用Gram-Schmidt正交化方法求Ax=b的最小二乘解;
形参:
矩阵A的行数m列数n,A的秩r,矩阵A,向量b,向量x;
条件:
A的前r列线性无关;
结果:
向量返回方程组的最小二乘解。
(3)Householder变换:
功能:
用Householder变换将化为上梯形矩阵,b同时变换;
形参:
矩阵A的行数m列数n,A的秩r,矩阵A,向量b,向量x;
结果:
变换后,得到,任用表示。
A为上梯形矩阵。
(4)Givens变换
功能:
用Givens变换将化为上梯形矩阵,b同时变换;
形参:
矩阵A的行数m列数n,A的秩r,矩阵A,向量b,向量x;
结果:
变换后,得到,任用表示。
A为上梯形矩阵。