1、计算方法上机实验报告计算方法上机实验报告班 级:XXXXXX小组成员:XXXXXXXXXXXXXXXXXXXXXXXXXXXX任课教师:XXX二0八年五月二十五日刖言通过进行多次的上机实验,我们结合课本上的内容以及老师对我 们的指导,能够较为熟练地掌握 Newton迭代法、Jacobi迭代法、Gauss-Seidel 迭代法、Newt on 插值法、Lagra nge 插值法和 Gauss求积公式等六种算法的原理和使用方法,并参考课本例题进行了MATLAB程序的编写。以下为本次上机实验报告,按照实验内容共分为六部分。实验一:一、实验名称及题目:Newton迭代法X3 I XI 1例2.7(P3
2、8)应用Newton迭代法求在-=1附近的数值解:,并使其满足 二、解题思路:设X是f(x) 0的根选取X。作为X初始近似值,过点Xo,f(Xo)做曲线y f (x)的切线L丄的方程为y f (Xo) f(x)(x x。),求出L与x轴交点的横坐标X1 xo鴿称X1为X的一次近似值过点风心)做曲线y f(x)的切线,求该切线与X轴的横坐标X2 Xi卫称X2为X的二次 f(Xi)近似值重复以上过程,得X的近似值序列Xn ,把Xni Xn 竺称为xf(Xn)的n 1次近似值,这种求解方法就是牛顿迭代法。三、Matlab程序代码:function newton_iteration(xO,tol) s
3、yms z %定义自变量 format long %定义精度 f=z*z*z-z-1;f1=diff(f); %求导 y=subs(f,z,x0);y1=subs(f1,z,x0); %向函数中代值 x1=x0-y/y1; k=1;while abs(x1-x0)=tolx0=x1;y=subs(f,z,x0); y1=subs(f1,z,x0); x1=x0-y/y1;k=k+1;endx=double(x1)K四、运行结果: tlevfn-n_itezatinnll.O. 00000001)x =1. 47L7B7244746实验二:一、实验名称及题目:Jacobi迭代法例3.7 (P74
4、):试利用Jacobi迭代公式求解方程组要求数值解为方程组的精确解.二、解题思路:首先将方程组中的系数矩阵A分解成三部分,即:A L D U, D为对角阵,L为下三角矩阵,U为上三角矩阵。之后确定迭代格式, X(k1)b* x(k) f, ( k 0,1,2 , k即迭代次数),B称为迭代矩阵。最后选取初始迭代向量X(0),开始逐次迭代。最后验证精度。(迭代 阵:X(k 1) D UX(k) D 1b。)雅克比迭代法的优点明显,计算公式简单,每迭代一次只需计算 一次矩阵和向量的乘法,且计算过程中原始矩阵A始终不变,比较容 易并行计算。然而这种迭代方式收敛速度较慢,而且占据的存储空间 较大。三、
5、Matlab程序代码:function jacobi(A,b,xO,eps,x1)D = diag(diag(A); %求 A 的对角矩阵L = -tril(A,-1); %求 A的下三角矩阵U = -triu(A,1); %求 A的上三角矩阵B = D(L+U);f = Db;x = B*xO+f;n = 1; %迭代次数while norm(x-x1)=epsx = B*x+f;n = n+1;endformat longnxjingdu=norm(x-x1)四、运行结果:-1 -I -L-l 14 -I -l.-l -1 -1 WW IS -4, I 2 3*实验三:一、实验名称及题目:
6、Gauss-Seidel 迭代法例3.8 ( P75):试利用Gauss-Seidel迭代公式求解方程组并 使 其数 值 解为方程组的精确解解题思路:Gauss-Seidel迭代法与Jacobi迭代法思路相近,首先将方程组中 的系数矩阵A分解成三部分,即:A L D U,D为对角阵,L为下 三角矩阵,U为上三角矩阵。之后确定迭代格式,X(k1) B*X(k) f, (k 0,1,2 , k即迭代次数),B称为迭代矩阵。最后选取初始迭代向量X0,开始逐次迭代。最后验证精度。(迭代阵: X(k 1) (D L) 1UX (k) (D L) 1b。)Gauss-Seidel迭代法与Jacobi迭代法
7、相比速度更快,但不全如 此。有例子表明:Gauss-Seidel迭代法收敛时,Jacobi迭代法可能不 收敛;而Jacobi迭代法收敛时,Gauss-Seidel迭代法也可能不收敛。三、Matlab程序代码:function gauss_seidel(A,b,xO,eps,x1) D = diag(diag(A); %求 A 的对角矩阵L = -tril(A,-1); %求 A的下三角矩阵U = -triu(A,1); %求A的上三角矩阵B = (D-L)U;f = (D-L)b;x = B*xO+f;n = 1; %迭代次数while norm(x1-x)=epsx = B*x+f; n =
8、 n+1;endformat longnxjingdu=norm(x1-x)四、运行结果: ME.sndflKCB -1 -3 -l.-l 10 -1 -1;-1 -1 B -1 -1 -1 -1 10R -4.12.8.34, O.OjO.OL 10- 1.3 j;4) n -8x 0.躬曲討;E刃灯2開 M9BlB1194SL0i2. H972eiW3Uj inc du =实验四:一、实验名称及题目:Lagrange 插值法例4.1 ( P88):给定函数I - - 丄沁及插值节点_ 71 _ 7L _ 37T _ 71 - 1 J 一斗三一 J r _丄试构造Lagrange插值多项式,
9、给出其误差估计,并由此计算匸)及其误差.二、解题思路:一般来说,如果我们有n个点x1, y1 ,., xn,yn ,各人互不相同。那 么应用拉格朗日插值公式所得到的拉格朗日插值多项式为:nL(x) yjlj(x),其中每个lj(x)为拉格朗日基本多项式(或称插值基函j 0数),其表达式为:lj(x)Xi 。i 0,i j XjXi三、Matlab程序代码:function y=lagrange(xO,x) n=length(xO); %向量长度 s=0;for k=1:n %k从1至U n的循环 p=1.0; for j=1:nif j=k %= ”不等于的意思p=p*(x-x0(j)/(x0
10、(k)-x0(j);endend y0=x0(k)*(1+cos(x0(k); s=p*y0+s;endformat longswucha=abs(x*(1+cos(x)-s)四、运行结果: lagrngt(0 pi/8 pi/4 3*pi/8 pi/2 3*pi/16) =.0791*wucha -3. 33S58S31BL7o972-04五、Lagrange插值图像绘制%Lagra nge插值图像算法x=linspace(0,1002,200);s=linspace(0,1000,200);x0=0;pi/8;pi/4;3*pi/8;pi/2;n=length(x0);s=0;for k=
11、1:np=1.0;for j=1:nif j=kp=p.*(x-x0(j)/(x0(k)-x0(j);endendy0=x0(k)*(1+cos(x0(k);s=p*y0+s;endplot(x,s,r );grid on;title(Lagrange2?ui ?)xlabel(X),ylabel(Y);axis normal;实验五:一、实验名称及题目:Newton 插值法例4.3 (P96):已知 ,试取插值节点Xq = 0.35j= O.SOj%2 = 0=65丸寻 崔=0 J ini4rpAl Bllifrnt 39. 0. SQL AL 49. 0. HOL 0. 0 T)4亠 Ou
12、 44B2aTaU03tl i4 0. 34LZftII3220D- i5Zl!7riT4SEE25 O. G21Qu “th iaTMi3LlS!l443 aHTH00332S30 Q0 01.M4I319T 13173747ru cHa IB IS42S-07五、Newton插值图像绘制实验六:一、实验名称及题目:Gauss求积公式例5.7 (P140):试构造Gauss型求积公式 At(I + O3fMdx I ylo/Uo) + 血 f 伽)+ 如 f g)并由此计算积分解题思路:AJ 0A2f1设高斯-勒让德求积公式是:if(x)dx Agf-1依次代入f(x) 1,x,x2,解得A
13、0 A2 9,A 8。利用换元公式宁x专dx变换原式的积分上下限在套用高斯-勒让德求积公式求得积分三、Matlab程序代码:function gauss(a,b)syms t f=sqrt(t)/(1+t)A2;P=-sqrt(3/5) 0 sqrt(3/5);A=5/9 8/9 5/9;s=0;for i=1:3;x=P(i);y=subs(f,t,(b-a)*x/2+(a+b)/2); s=s+A(i)*y;endformat longS=double(a-b)/2*s)四、运行结果: 1-、iauss 1, 0)结束语在本学期的计算方法课程学习中,我们感受到了巧妙的数学 计算方法在解决实际问题中带来的便利与高效, 借助计算机解决科学 计算问题也是我们当代大学生应当掌握的必要技能。在本课程的上机实验过程中,我们亲自体验了课本中所学到的算 法在计算机上的使用,使用计算机语言,如 MATLAB和C语言等进行编程,加深了我们对各类算法及其理论的理解, 并进一步激发了我 们对计算方法这门课程进行持续学习的学习兴趣