文档详情

《矩阵及数值分析》课程数值实验大作业.doc

发布:2018-12-08约6.83千字共17页下载文档
文本预览下载声明
2011级工科硕士研究生 《矩阵与数值分析》课程数值实验 班 级: 学 号: 姓 名: 任课教师: 大连理工大学 2011年12月20日 对于数列,有如下两种生成方式 1、首项为,递推公式为; 2、前两项为,递推公式为; 给出利用上述两种递推公式生成的序列的第50项。 【按第一种递推公式】 clear clc a=1; for i=1:50-1 a=[a a(i)/3]; end disp(数列第50项小数表达为:) format long disp(a(50)) disp(分数表达为:) format rat disp(a(50)) format short [运行结果] 数列第50项小数表达为: 4.178866707295615e-024 分数表达为: 1/239299329230617530000000 【按第二种递推公式】 clear clc a=[1 1/3]; for i=2:50-1 a=[a 10/3*a(i)-a(i-1)]; end format rat disp(数列第50项为:) disp(a(50)) format short [运行结果] 数列第50项为: 2060436 【分析】 第一种算法数值稳定,计算过程舍入误差被严格控制,且按1/3的公差不断缩小。但第二种算法数值不稳定。另外,在第二种算法中,若将递推公式“a=[a 10/3*a(i)-a(i-1)]”中的分母移动位置,改写成“a=[a 10*a(i)/3-a(i-1)]”,则程序运行结果为-4966040,可以舍入误差被放大的十分严重。 利用迭代格式 及Aitken加速后的新迭代格式求方程在内的根 【未经加速的代码】 clc eps=1e-15; i=1; x0=1; format long while i100 x1=sqrt(10/(x0+4)); if abs(x1-x0)=eps break end x0=x1; i=i+1; end disp(方程的解[精度10^(-15)]) disp(x1) disp(未经加速的迭代次数) disp(i) [运行结果] 方程的解[精度10^(-15)] 1.36523001341410 未经加速的迭代次数 18 【经Aitken加速的代码】 clc eps=1e-15; i=1; x0=1; format long while i100 x1=sqrt(10/(x0+4)); y=sqrt(10/(x1+4)); z=sqrt(10/(y+4)); x1=z-(z-y)^2/(z-2*y+x1); if abs(x1-x0)=eps break end x0=x1; i=i+1; end disp(方程的解[精度10^(-15)]) disp(x1) disp(未经加速的迭代次数) disp(i) [运行结果] 方程的解[精度10^(-15)] 1.36523001341410 未经加速的迭代次数 3 【分析】 Aitken加速能对数列{xk}起明显的加速作用,在要求相同方程解精度的条件下,它能将迭代次数显著降低。实际上,Aitken有时甚至能将发散的数列加速后变为收敛。 三、解线性方程组 1.分别Jacobi迭代法和Gauss-Seidel迭代法求解线性方程组 迭代法计算停止的条件为:. 2. 用Gauss列主元消去法、QR方法求解如下方程组: 【1. Jacobi方法】 clc i=1; eps=1e-6; A=[ 6 2 1 -2; 2 5 0 -2; -2 0 8 5; 1 3 2 7]; b=[4 7 -1 0]; x0=zeros(4,1); D=diag(diag(A)); L=-tril(A,-1); U=-triu(A,1); B=inv(D)*(L+U); f=inv(D)*b; while i100 x1=B*x0+f; if norm(x1-x0)=eps break end x0=x1; i=i+1; end disp(方程的解[精度10^(-6)]) disp(x1) disp(迭代次数) disp(i) [运行结果] 方程的解[精度10^(-6)] 0.05204951386229 1.1509433
显示全部
相似文档