版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、首次试做实验记录实验中心(室): 年 月 日实验课程名称数值分析面向专业信息与计算科学总学时数实验项目名称线性方程组的直接解法实验学时一、实验目的、要求目的:掌握解线性方程组直接法(特别是顺序高斯消去法)的基本思想,熟悉其算法,加强编程能力和编程技巧,练习从数值分析的角度看问题。要求:针对给定的实验题目,根据所学的算法,能够熟练地使用某种语言上机编程,给出实验结果,注意上机编程的正确性。二、实验原理用高斯消去法解线性方程组的基本思想是设法消去方程组的系数矩阵A的主对角线下的元素,而将线性方程组化为等价的上三角形方程组,然后再通过回代过程便可获得原方程组的解。三、使用仪器、材料计算机一台,Mat
2、lab、C、Mathematica等软件。四、实验内容:用高斯消去法求解下列方程组Ax=b,其中A =【2 2 2 3 2 4 1 3 9】b =【1.0000 0.5000 2.5000】五、实验过程原始记录(数据、图表、计算等)Matlab源代码:function x =Gauss_solve(A, b)n, n = size(A);for k = 1 : n-1 if A(k,k)=0 disp('A is singular,stop.') end for i = k+1 : n mik = A(i, k) / A(k, k); b(i) = b(i) - mik * b
3、(k); for j=k+1:n A(i, j) = A(i, j) - mik * A(k, j); end endend% back substitutionx=zeros(n,1);x(n)=b(n)/A(n,n);for i=n-1:-1:1 sum=0; for j=i+1:n sum=sum+A(i,j)*x(j); end x(i)=(b(i)-sum)/A(i,i);End六、实验结果及分析在命令窗口输入相关数据,运行上面定义的函数Gauss_solve>>A=2 2 2;3 2 4;1 3 9A = 2 2 2 3 2 4 1 3 9>>b=1;1/2
4、;5/2b = 1.0000 0.5000 2.5000>>x = Gauss_solve(A, b)x = -0.5000 1.0000 0结果分析:根据顺序高斯消去法的算法,使用Matlab编写了程序,对所给的题目进行了求解。利用高等代数中的基本内容,我们可以看出该程序能够成功求解所给的线性方程组。实验中心(室)验收审查意见实验中心(室)主任签字:首次试做实验记录实验中心(室): 年 月 日实验课程名称数值分析面向专业信息与计算科学总学时数实验项目名称线性方程组的迭代解法实验学时一、实验目的、要求目的:掌握解线性方程组几种常见的迭代解法的基本思想,熟悉其算法,练习引入迭代矩阵的
5、形式来解决方程组。要求:针对给定的实验题目,根据所学的算法,能够熟练地使用某种语言上机编程,给出实验结果,注意上机编程的正确性。二、实验原理用迭代法求解方程组的基本思想:首先对A进行分解,A=D-L-U,找出下三角阵L,再找出上对角阵U,还有主对角阵D,于是有 Jacobi迭代法的矩阵形式的迭代公式为x=inv(D)*(L+U)*x+inv(D)*bGauss-Seidel迭代法的矩阵形式的迭代公式x=inv(D-L)*U*x+inv(D-L)*b利用迭代即可在循环中实现的原则来完成此方程组的求解。注意在编程时也可使用分量形式的迭代公式。三、使用仪器、材料计算机一台,Matlab、C、Math
6、ematica等软件。四、实验内容:用Jacobi迭代法和Gauss-Seidel迭代法求方程组: AX=b,其中A =【10 -1 2 0 -1 11 -1 3 2 -1 10 -1 0 3 -1 8】b =【6 25 -1115】五、实验过程原始记录(数据、图表、计算等)Jacobi迭代法的Matlab源代码:function iter,x=Jacobi(A,b,x0,eps,M)n=length(x0);x=x0;iter=0;for k=1:M for i=1:n sum=0; for j=1:n if j=i sum=sum+A(i,j)*x0(j);%x0 stands for x
7、_k end end x(i)=(b(i)-sum)/A(i,i);% x stands for x_k+1 end if norm(x-x0)<eps iter=k; return end x0=x;enddisp('超过最大迭代次数')Gauss-Seidel迭代法的Matlab源代码:function iter,x=GS(A,b,x0,eps,M)n=length(x0);iter=0;for k=1:M x=x0; % x stands for x_k, x0 stands for x_k+1 for i=1:n if i=1 sum=0; for j=2:n s
8、um=sum+A(i,j)*x0(j); end t=(b(i)-sum)/A(i,i); x0(i)=t; end% end i=1 if 1<i<n sum=0; for j=1:i-1 sum=sum+A(i,j)*x0(j); end for j=i+1:n sum=sum+A(i,j)*x0(j); end t=(b(i)-sum)/A(i,i); x0(i)=t; end% end 1<i<n if i=n sum=0; for j=1:n-1 sum=sum+A(i,j)*x0(j); end t=(b(i)-sum)/A(i,i); x0(i)=t; e
9、nd% end i=n end %end i if norm(x-x0)<eps x=x0; iter=k; return endend%end kdisp('超过最大迭代次数')六、实验结果及分析在命令窗口输入相关数据,运行上面定义的函数Jacobi>>A=10 -1 2 0;-1 11 -1 3;2 -1 10 -1;0 3 -1 8A = 10 -1 2 0 -1 11 -1 3 2 -1 10 -1 0 3 -1 8>>b=6;25;-11;15b = 6 25 -11 15>>x0=0;0;0;0x0 = 0 0 0 0>
10、;>M=100M = 100>>eps=1e-4eps = 1.0000e-004>>iter,x=Jacobi(A,b,x0,eps,M)iter = 13x = 1.0000 2.0000 -1.0000 1.0000然后运行上面定义的函数GS>>iter,x=GS(A,b,x0,eps,M)iter = 6x = 1.0000 2.0000 -1.0000 1.0000结果分析:根据Jacobi迭代法和Gauss-Seidel迭代法的算法,使用Matlab分别编写了程序,并对所给的题目进行了求解。利用高等代数中的基本内容,我们可以看出这两个程序都
11、能够成功求解所给的线性方程组。从理论学习中我们知道,本题中的系数矩阵A为按行严格对角占优矩阵,所以理论上来说,Jacobi迭代法和Gauss-Seidel迭代法都应收敛,而且Gauss-Seidel迭代法的收敛速度应该更快。从实验我们可以得到同样的结论,所以理论分析和试验的结果是相吻合的。实验中心(室)验收审查意见实验中心(室)主任签字:首次试做实验记录实验中心(室): 年 月 日实验课程名称数值分析面向专业信息与计算科学总学时数实验项目名称解非线性方程的迭代法实验学时一、实验目的、要求目的:掌握解非线性方程的几种常见的迭代解法的基本思想,熟悉其算法,加深理解迭代法的真谛,掌握其中的规律。要求
12、:针对给定的实验题目,根据所学的算法,能够熟练地使用某种语言上机编程,给出实验结果,注意上机编程的正确性。二、实验原理二分法的基本原理为将给定的初始有根区间逐步分半,直到找到满足一定精度要求的解,其基本思想为:对当前的有根区间,取其中点作为真解的近似值,若满足精度要求则停止计算,否则,从得到的两个小区间中选择一个作为新的有根区间,重复上述过程。程序中重要的是循环语句的使用和有根区间端点的判断。牛顿法是一种非常重要的不动点迭代方法,对于不动点迭代而言,最重要的是迭代函数的构造。Newton法的迭代函数的构造依据是“由当前点的切线来代替原曲线,将该切线与x轴的交点作为下一个迭代点”。编程时注意用循
13、环语句来实现迭代过程。三、使用仪器、材料计算机一台,Matlab、C、Mathematica等软件。四、实验内容:在区间1,3用二分法求。用牛顿法解方程。五、实验过程原始记录(数据、图表、计算等)二分法的Matlab源代码:function f=fun(x)f=2(-x)+exp(x)+2*cos(x)-6;function iter,x=bisection(a,b,eps)funa=fun(a);funb=fun(b);if funa*funb>=0 disp('Error,please give the correct initial points a and b!'
14、);endk=0;% k stands for the iterationwhile 1 c=(a+b)/2; func=fun(c); k=k+1; if (abs(c-a)<=eps)|(abs(func)<=eps) x=c; iter=k; return; end if funa*func<0 b=c; else a=c; endEndNewton法的Matlab源代码:function f=fun(x)f=exp(x)-1.5-atan(x);function f=fun_derivative(x)f=exp(x)-1/(1+x2);function iter,x=
15、newton_equation(x0,M,eps1,eps2)iter=0;v=fun(x0);if abs(v)<eps2 x=x0; returnendfor k=1:M x1=x0-v/fun_derivative(x0); v=fun(x1); iter=iter+1; if (abs(x1-x0)<eps1)|(abs(v)<eps2) x=x1; return end x0=x1; endEnd六、实验结果及分析在命令窗口输入相关数据,运行函数bisection,得>> a=1a = 1>> b=3b = 3>> eps=1e-
16、4eps = 1.0000e-004>> iter,x=bisection(a,b,eps)iter = 15x = 1.8294>> fun(x)ans = 9.4896e-005在命令窗口输入相关数据,运行函数newton_equation得>>x0=-7x0 = -7>>M=20M = 20>>eps1=1e-3eps1 = 1.0000e-003>>eps2=1e-5eps2 = 1.0000e-005>>iter,x=newton_equation(x0,M,eps1,eps2)iter = 4x =
17、 -14.1011>>fun(x)ans = -7.9958e-007 结果分析:根据二分法的算法和牛顿法的算法,使用Matlab分别编写了程序,并对所给的题目进行了求解。从结果我们可以看出,这两种算法都对所给的非线性方程成功地给予了求解,从而说明了这两种算法的可行性与有效性。事实上,我们可以进一步实验,针对同一道题目用两种不同的方法求解,从而进一步明确两种方法各自的特点:二分法简单,有全局收敛性,但收敛速度比较慢;牛顿法解单根问题时可保证局部二阶的收敛性质。实验中心(室)验收审查意见实验中心(室)主任签字:首次试做实验记录实验中心(室): 年 月 日实验课程名称数值分析面向专业信
18、息与计算科学总学时数实验项目名称解非线性方程组的迭代法实验学时一、实验目的、要求目的:掌握解非线性方程组的迭代法(重点是牛顿法)的基本思想,熟悉其算法,加深理解迭代法的真谛,掌握其中的规律。要求:针对给定的实验题目,根据所学的算法,能够熟练地使用某种语言上机编程,给出实验结果,注意上机编程的正确性。二、实验原理解非线性方程组的牛顿法的迭代公式为其中,表示的Jacobi矩阵,即注意用循环语句来实现迭代过程。三、使用仪器、材料计算机一台,Matlab、C、Mathematica等软件。四、实验内容:用牛顿法求解非线性方程组五、实验过程原始记录(数据、图表、计算等)该方程组可等价写成,其中。Matl
19、ab源代码:%程序funf.m给出了非线性方程组所对应的非线性函数function f=funf(x)f=-cos(x(1)/81+x(2)2/9+sin(x(3)/3-x(1); sin(x(1)/3+cos(x(3)/3-x(2);-cos(x(1)/9+x(2)/3+sin(x(3)/6-x(3);%程序发funJ.m给出了非线性函数的雅可比矩阵function J=funJ(x)J=sin(x(1)/81-1 x(2)*2/9 cos(x(3)/3; cos(x(1)/3 -1 -sin(x(3)/3;sin(x(1)/9 1/3 cos(x(3)/6-1;%程序Newton.m为解非
20、线性方程组的牛顿法的主程序function m,r=Newton(x0,eps)% x0 为初始迭代点% eps 为误差容限% r 最终所得的近似解% m 迭代次数n = length(x0);Fx= funf(x0);J=funJ(x0);r=x0;m=0;fprintf('n 第%d次迭代所得x的值: n',m);disp(x0');for i=1:1000 d=-inv(J)*Fx; x=x0+d; x0=x; Fx=funf(x0); J=funJ(x0); fprintf('n 第%d次迭代所得x的值: n',i); disp(x0')
21、; if norm(d)<eps r=x; m=i; return endend六、实验结果及分析实验结果:在命令窗口输入相关数据,运行上面定义的函数Newton>> x0=0;0;0>> eps=1e-4>> m,r=Newton(x0,eps) 第0次迭代所得的x的值: 0 0 0 第1次迭代所得的x的值: -0.0129 0.3290 -0.0017 第2次迭代所得的x的值: -0.0000 0.3333 -0.0000 第3次迭代所得的x的值: 0.0000 0.3333 0.0000m = 3r = 0.0000 0.3333 0.0000结
22、果分析:根据解非线性方程组的牛顿法的算法,使用Matlab分别编写了程序,并对所给的题目进行了求解。从结果我们可以看出,该算法对所给的非线性方程组成功地给予了求解,从而说明了解非线性方程组的牛顿法的可行性与有效性。实验中心(室)验收审查意见实验中心(室)主任签字:首次试做实验记录实验中心(室): 年 月 日实验课程名称数值分析面向专业信息与计算科学总学时数实验项目名称解非线性方程组的迭代法实验学时一、实验目的、要求目的:掌握解非线性方程组的迭代法(重点是牛顿法)的基本思想,熟悉其算法,加深理解迭代法的真谛,掌握其中的规律。要求:针对给定的实验题目,根据所学的算法,能够熟练地使用某种语言上机编程
23、,给出实验结果,注意上机编程的正确性。二、实验原理解非线性方程组的牛顿法的迭代公式为其中,表示的Jacobi矩阵,即注意用循环语句来实现迭代过程。三、使用仪器、材料计算机一台,Matlab、C、Mathematica等软件。四、实验内容:用牛顿法求解非线性方程组五、实验过程原始记录(数据、图表、计算等)该方程组可等价写成,其中。Matlab源代码:%程序funf.m给出了非线性方程组所对应的非线性函数function f=funf(x)f=-cos(x(1)/81+x(2)2/9+sin(x(3)/3-x(1); sin(x(1)/3+cos(x(3)/3-x(2);-cos(x(1)/9+x
24、(2)/3+sin(x(3)/6-x(3);%程序发funJ.m给出了非线性函数的雅可比矩阵function J=funJ(x)J=sin(x(1)/81-1 x(2)*2/9 cos(x(3)/3; cos(x(1)/3 -1 -sin(x(3)/3;sin(x(1)/9 1/3 cos(x(3)/6-1;%程序Newton.m为解非线性方程组的牛顿法的主程序function m,r=Newton(x0,eps)% x0 为初始迭代点% eps 为误差容限% r 最终所得的近似解% m 迭代次数n = length(x0);Fx= funf(x0);J=funJ(x0);r=x0;m=0;f
25、printf('n 第%d次迭代所得x的值: n',m);disp(x0');for i=1:1000 d=-inv(J)*Fx; x=x0+d; x0=x; Fx=funf(x0); J=funJ(x0); fprintf('n 第%d次迭代所得x的值: n',i); disp(x0'); if norm(d)<eps r=x; m=i; return endend六、实验结果及分析实验结果:在命令窗口输入相关数据,运行上面定义的函数Newton>> x0=0;0;0>> eps=1e-4>> m,r=
26、Newton(x0,eps) 第0次迭代所得的x的值: 0 0 0 第1次迭代所得的x的值: -0.0129 0.3290 -0.0017 第2次迭代所得的x的值: -0.0000 0.3333 -0.0000 第3次迭代所得的x的值: 0.0000 0.3333 0.0000m = 3r = 0.0000 0.3333 0.0000结果分析:根据解非线性方程组的牛顿法的算法,使用Matlab分别编写了程序,并对所给的题目进行了求解。从结果我们可以看出,该算法对所给的非线性方程组成功地给予了求解,从而说明了解非线性方程组的牛顿法的可行性与有效性。实验中心(室)验收审查意见实验中心(室)主任签字
27、:首次试做实验记录实验中心(室): 年 月 日实验课程名称数值分析面向专业信息与计算科学总学时数实验项目名称插值多项式的构造实验学时一、实验目的、要求实验目的:已知一组数据,学会如何构造该组数据的插值多项式函数,了解利用插值多项式来逼近函数的重要思想,重点掌握Lagrange插值多项式和牛顿插值多项式的构造方法。要求:针对给定的实验题目,根据所学的算法,能够熟练地使用某种语言上机编程,给出实验结果,注意上机编程的正确性。二、实验原理Lagrange插值多项式的构造原理:我们首先需要构造插值基函数,(注意基函数存在一定的规律性),在此基础之上构造Lagrange插值多项式函数,进而求近似值。牛顿
28、插值多项式的构造具有很强的规律性,我们首先根据所给的数据构造差商表,然后在此基础上构造插值多项式。三、使用仪器、材料计算机一台,Matlab、C、Mathematica等软件。四、实验内容:1、已知函数表xi 1 2 4 5yi 16 12 8 9求出其Lagrange插值多项式,并由此计算x=1.2处的近似值。2、构造适合下列数据表的牛顿插值公式:x-1013y-1135五、实验过程原始记录(数据、图表、计算等)针对习题1的Lagrange 插值多项式的Mathematica源代码:r0x_,x0_,a_,b_,c_:=(x-a)*(x-b)*(x-c)/(x0-a)*(x0-b)*(x0-
29、c)L3x_:=r0x,1,2,4,5*16+r0x,2,1,4,5*12+r0x,4,1,2,5*8+r0x,5,1,2,4*9;L3x/NSimplify% 对结果进行展开L31.2/N 求x=1.2处的近似值针对习题2的Newton插值多项式的Matlab源代码:disp('构造适合下列数据表的牛顿插值公式:')disp(' x -1 0 1 3 ')disp(' y -1 1 3 5')%三次牛顿插值公式为:%P3=f(x0)+fx0,x1(x-x0)+fx0,x1,x2(x-x0)(x-x1)+fx0,x1,x2,x3(x-x0)%(x
30、-x1)(x-x2)X= -1 0 1 3;Y= -1 1 3 5;CS=100,100,100;100,100,100;100,100,100; %构造差商表for i=1:1:3 CS(1,i)=( Y(i+1)-Y(i) )/( X(i+1)-X(i) );endfor i=1:1:2 CS(2,i)=( CS(1,i+1)-CS(1,i) )/( X(i+2)-X(i) );endCS(3,1)=( CS(2,2)-CS(2,1) )/( X(4)-X(1) );CS %构造差商表 %syms P3syms xsyms bP3=Y(1); %构造Newton插植多项式a=0;b=( x
31、-X(1) );for i=1:1:3 a=CS(i,1); P3=P3 + a*(b); b=(b) * ( x-X(i+1) );end %构造Newton插植多项式fprintf('n求得牛顿插值公式为:')P3fprintf('/*/')六、实验结果及分析习题1的实验结果:1.33333 (5. -1. x) (-4.+x) (-2.+x)+2. (-5.+x) (-4.+x) (-1.+x)+1.33333 (5. -1. x) (-2.+x) (-1.+x)+0.75 (-4.+x) (-2.+x) (-1.+x) 0.0833333x3+0.083
32、3333x2-4.83333x+20.6667 15.1307习题2的实验结果:CS= 2.0000 2.0000 2.0000 0 -0.3333 100.0000 -0.0833 100.0000 100.0000P3= 1+2*x-1/12*(x+1)*x*(x-1)结果用图形表示为:结果分析:根据Lagrange插值多项式和牛顿插值多项式的构造方法,分别使用Mathematica和Matlab编写了程序,并对所给的题目进行了求解。从结果我们可以看出,这两种方法可以成功地构造插值多项式。我们还可以针对同一道题目,用这两种不同的方法进行求解,比较结果的一致性。值得注意的是我们可以直接调用M
33、athematica中有函数InterpolatingPolynomial来直接实现插值函数的构造,并利用误差估计公式进行误差估计。实验中心(室)验收审查意见实验中心(室)主任签字:首次试做实验记录实验中心(室): 年 月 日实验课程名称数值分析面向专业信息与计算科学总学时数实验项目名称数值积分实验学时一、实验目的、要求目的:利用各种数值方法近似求定积分。 要求:针对给定的实验题目,根据所学的算法,能够熟练地使用某种语言上机编程,给出实验结果,注意上机编程的正确性。二、实验原理首先给出关于被积函数的表达式,然后根据Simpson公式和梯形公式求值。1. Simpson公式:。2梯形公式: 。三
34、、使用仪器、材料计算机一台,Matlab、C、Mathematica等软件。四、实验内容:已知,用Simpson公式和梯形公式分别求值五、实验过程原始记录(数据、图表、计算等)被积函数的Matlab源代码function y=f(x)y=4/(1+x.2);用Simpson公式和梯形公式近似求解的Matlab源代码:disp('已知 y=4/(1+x.2), ')disp('用辛甫生公式和梯形公式分别求积分值PI=int(y,x,0,1)')%辛甫生公式 f(x)在a,b上的积分为:(b-a)/6*( f(a)+f(b)+4*f( (a+b)/2) );%梯形公
35、式 f(x)在a,b上的积分为:(b-a)/2*( f(a)+f(b) );fprintf('n方法一:辛甫生公式计算n')b=1;a=0;PI=(b-a)/6*( f(a)+f(b)+4*f( (a+b)/2) )fprintf('n方法二:梯形公式计算n')PI=(b-a)/2*( f(a)+f(b) )六、实验结果及分析实验结果:Simpson公式的计算结果为:3.1333梯形公式的计算结果为:3结果分析:本定积分的精确值为PI,我们分别用Simpson公式和梯形公式进行了求解。理论上来说,Simpson公式比梯形公式的精度要高,数值试验的结果也表明Simpson公式的计算结果比梯形公式的计算结果更接近真解,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 家用废品买卖合同模板
- 2024年度版权转让合同服务内容详细
- 包含税费支付的2024年二手房贷款合同3篇
- 道路维修施工采购合同范本
- 二零二四年度设备采购合同标的清单
- 2024年度租赁物维修责任合同条款
- 2024版技术开发与技术秘密许可合同
- 二零二四年度绿色能源项目投资与合作协议
- 2024年度餐饮服务合同:高端餐厅经营管理与食材供应3篇
- 手写纠纷合同范本
- 梅尼埃病学习课件
- 国际人权法与强制劳动保护人权的法律框架
- 防火门的常见问题与维护课件
- 设立绿化养护服务公司商业计划书
- 绿色供应链的构建与管理
- 简易劳动保障管理制度
- 山东省青岛市2023-2024学年高三上学期期末模拟考试政治模拟试题(含答案)
- WTO《补贴与反补贴措施协议》中文翻译全文
- 2024年中煤集团招聘笔试参考题库含答案解析
- 第三单元一《伐檀》公开课一等奖创新教案-【中职专用】(中职语文高教版2023-2024-基础模块上册)
- 某公路改扩建工程施工安全总体风险评估报告
评论
0/150
提交评论