数值计算期末报告书.doc_第1页
数值计算期末报告书.doc_第2页
数值计算期末报告书.doc_第3页
数值计算期末报告书.doc_第4页
数值计算期末报告书.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数值计算期末报告书 学 院 专 业 年级班别 1 学 号 学生姓名 指导教师 2013 年 11 月 1 日一、 编写Gauss-Seidel迭代法求解线性方程组的程序,要求附有算例。答:(1)问题描述:由Jacobi迭代法中,每一次的迭代只用到前一次的迭代值,每一次迭代充分利用当前最新的迭代值,即在计算第个分量时,用最新分量,代替旧分量,。这样就是解方程组的Gauss-Seidel迭代法。(2)算例:5X1+2X2+X3=-12 -X1+4X2+2X3=20 2x1-3X2+10X3=3(3)计算程序:%Gauss_Seidel.m% A为方程的增广矩阵clc;format long;A=5 2 1 -12;-1 4 2 20;2 -3 10 3;n,m=size(A);%最多进行50次迭代Maxtime=100;%控制误差Eps=10E-5;%初始值迭代值x=zeros(1,n);disp(x=);%迭代次数小于最小最大迭代次数,进入迭代for k=1:Maxtime disp(x); for i=1:n s=0.0; for j=1:n if i=j s=s+A(i,j)*x(j);%计算和 end end x(i)=(A(i,n+1)-s)/A(i,i);%求出此时迭代的值 end%因为方程的精确解为整数,所以这里将迭代结果向整数靠近的误差作为判断迭代是否停止的条件 if sum(x-floor(x).2) x0=2 5 7; x =0; fun =(x) sqrt(x); y=fun(x0); cyLagrange(x,x0,y)(4)计算结果:插值结果:S = 0.72813、 编写分段梯形积分方法的程序,要求附有算例。(1)问题描述:梯形积分法是将被积函数近似看成由无数多个小梯形组成,即将无数小梯形的面积之和近似成被积函数的积分值。梯形法数值积分采用的梯形公式是最简单的数值积分公式,函数在区间a,b上计算梯形法数值积分表达式为 .由于用梯形公式来求积分十分粗糙,误差也比较大,后来改进后提出了复合梯形公式:,其中,n为积分区间划分的个数;h为积分步长。所以给出被积函数后要知道积分上下限、知道要将积分区间分割的段数就可以利用梯形积分法求出被积函数的积分。(2)计算程序:%用来就数值积分-Trapezia(a,b,fx,E,step);分段函数积分 function Trapezia(a,b,fx,E,step);%fx是由syms定义的函数表达式%a b 是被积函数的上下限%E是精度%step是积分区间的分割线disp(*start*) %开始标志位h=(b-a)/2;a=a+E/10; % 将积分下限加一个非常小的数 使之不等于零 %用来减少出现除数为零的情况 %比如对含有1/x的函数积分且积分区间从0开始 %在梯形公式及Simpson公式算法中必然出现除数为零的情况 %当然我们可以在这之前就对被积函数做一定变形处理 比如分部积分将分母移走 %这种处理方法对于精度要求几乎没有影响T0=h*(subs(fx,a)+subs(fx,b);T=0;for m=1:step F=0; for k=1:2(m-1) F=F+subs(fx,a+(2*k-1)*h);%subs是替换fx中的变量 end T=0.5*T0+h*F; if abs(det(T-T0) Trapezia(1,pi,sin(x),eps,9)(4)计算结果:*start*k=1h=0.535398I=1.390234k=2h=0.267699I=1.503331k=3h=0.133850I=1.531093k=4h=0.066925I=1.538002k=5h=0.033462I=1.539727k=6h=0.016731I=1.540159k=7h=0.008366I=1.540266k=8h=0.004183I=1.540293k=9h=0.002091I=1.540300n*end*积分结果S =1.5403四、编写隐式Euler方法求常微分方程初值问题的程序,要求附有算例。(1)问题描述:欧拉(Euler)方法是解初值问题的最简单的数值方法。初值问题的解y=y(x)代表通过点的一条称之为微分方程的积分曲线。积分曲线上每一点的切线的斜率等于函数在这点的值。 给出自变量的定义域,初始值及步长。隐式Euler公式如下:。(2)程序:function = CY(h,x0,y0,X,Y)format longh=input(h=);x0=input(x0=);y0=input(y0=);disp(输入的范围是:);X=input(X=);Y=input(Y=);n=round(Y-X)/h); i=1;x1=0;yp=0;yc=0;for i=1:1:n x1=x0+h;yp=y0+h*(-x0*(y0)2);%yp=y0+h*(y0-2*x0/y0);%yc=y0+h*(-x1*(yp)2);%yc=y0+h*(yp-2*x1/yp);%y1=(yp+yc)/2;x0=x1;y0=y1;y=2/(1+x02);%y=sqrt(1+2*x0);%fprintf(结果=%.3f,%.8f,%.8fn,x1,y1,y);end end(3)运算结果:CYh=0.3x0=0y0=2输入的范围是:X=2Y=5(4)运行结果:结果=0.300,1.82000000,1.83486239结果=0.600,1.46249022,1.47058824结果=0.900,1.11325764,1.10497238结果=1.200,0.83681731,0.81967213结果=1.500,0.63384233,0.61538462结果=1.800,0.48802803,0.47169811结果=2.100,0.38303022,0.36968577结果=2.400,0.30641416,0.29585799结果=2.700,0.24951595,0.24125452结果=3.000,0.20646538,0.20000000五、编写简单迭代法求非线性方程的程序,要求附有算例。(1)问题描述:迭代法是求解非线性方程近似根的一种方法,这种方法的关键是确定迭代函数j(x),简单迭代法 用直接的方法从原方程中隐含的求出x,从而确定迭代函数j(x),这种迭代法收敛速度较慢,迭代次数多,因此常用于理论中,Newton迭代法采用另一种迭代格式, 具有较快的收敛速度,由牛顿迭代法可以得到很多其他迭代格式。简单迭代法又称逐次迭代法,基本思想是构造不动点方程,以求得近似根。即由方程f(x)=0变换为x=j(x), 然后建立迭代格式,当给定处值x0 后, 由迭代格式可求得数列xk。如果xk收敛于x*,则它就是方程的根。因为:(2)算例: 已知非线性方程组如下3*x1-cos(x2*x3)-1/2=0x12-81*(x2+0.1)2+sin(x3)+1.06=0exp(-x1*x2)+20*x3+(10*pi-3)/3=0求解要求精度达到0.00001(3)程序:(a)建立函数fun:function f=fun(x);%定义非线性方程组如下%变量x1 x2 x3%函数f1 f2 f3syms x1 x2 x3f1=3*x1-cos(x2*x3)-1/2;f2=x12-81*(x2+0.1)2+sin(x3)+1.06;f3=exp(-x1*x2)+20*x3+(10*pi-3)/3;f=f1 f2 f3;(b)建立函数dfun:function df=dfun(x);%用来求解方程组的雅克比矩阵储存在dfun中f=fun(x);df=diff(f,x1);diff(f,x2);diff(f,x3);df=conj(df);(c)编程牛顿法求解非线性方程组将newton.m:function x=newton(x0,eps,N);con=0;%其中x0为迭代初值eps为精度要求N为最大迭代步数con用来记录结果是否收敛for i=1:N;f=subs(fun(x0),x1 x2 x3,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论