《数值计算方法》课程实验指导书_第1页
《数值计算方法》课程实验指导书_第2页
《数值计算方法》课程实验指导书_第3页
《数值计算方法》课程实验指导书_第4页
《数值计算方法》课程实验指导书_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、数值计算方法课程实验指导书课程名称:数值计算方法英文名称:Numerical Calculation Method一、实验的性质、目的和任务本实验是与本专业基础课数值计算方法相配套的,旨在巩固专业课内容和学生编程的能力。通过实验加强对数值方法的理解和掌握,编制出适用的程序。同时,在理论教学的基础上,注意方法处理的技巧及其与计算机的结合,要重视误差分析、收敛性的理论;其次要通过例子,学习使用各种数值方法解决实际计算问题。要求学生应用高级计算机语言编程完成实验。二、实验基本要求要求熟悉高级计算机语言,以及相关上机操作说明;上机时要遵守实验室的规章制度,爱护实验设备;记录调试过程及结果,记录并比较与

2、手工运算结果的异同;程序调试完后,须由实验辅导教师在机器上检查运行结果;给出每次实验的实验报告。 三、实验原理应用高级计算机语言实现数值计算方法课程中的各种算法。四、设备及器材配置主机:微机操作系统:WINDOWS 98以上软件:高级计算机语言五、考核与报告每个实验完成后交一份实验报告。本课程的评分方法是考查,作为平时成绩占学期期末总成绩的20%,全部独立完成实验且表现良好得平时成绩的满分20分。六、适用对象信息与计算科学专业七、主要参考书数值计算方法林成森 科学出版社 1998数值分析李庆扬 王能超 易大义清华大学出版社 2001计算机数值方法施吉林 刘淑珍 陈桂芝 高等教育出版社 1999

3、 C程序设计 谭浩强. 北京:清华大学出版社。1991.7第一版数据结构 严蔚敏、吴伟民. 北京:清华大学出版社。1997.4第一版八、数值计算方法课程实验项目名称和实验目的及实验内容实验1 非线性方程求根(4学时)实验目的:1、 掌握计算机上常用的一些求非线性方程的近似根的数值方法(二分法、迭代法、牛顿法、割线法),并能比较各种方法的异同点;2、 掌握迭代法的收敛性定理,局部收敛性、收敛阶的概念,并学会使用加速收敛方法、如(Aitken)加速法。3、正确应用所学方法求出给定的非线性方程满足一定精度要求的数值解。实验内容:编写二分法、不动点迭代法、牛顿法、割线法的通用程序,自己选择实例验证。实

4、验2 解线性方程组的直接方法(4学时)实验目的:1、 掌握解线性方程组的几种基本常用的直接法,并能比较它们各自的优缺点;2、 能熟练地对方阵A进行三角分解;3、 会用追赶法求解三对角方程组。实验内容:编写GAUSS消去法及列主元解法、三角分解、追赶法的通用程序,自己选择实例验证。实验3 插值法(4学时)实验目的:1、掌握多项式插值的概念、存在唯一性;2、能熟练地应用构造几种常用方法,如Lagrange插值、Newton插值、带导数的Hermite插值及三次样条插值。实验内容:编写Lagrange插值、Newton插值、Hermite插值及三次样条插值的通用程序(二选一),自己选择实例验证。实验

5、4 数值积分(4学时)实验目的:1、熟练掌握复化梯形公式、复化Simpson公式及其截断误差的分析2、了解求积公式外推思想、Romberg公式及Romberg积分法。实验5 解线性方程组的迭代法(4学时)实验目的:1、掌握用迭代法求解线性方程组的基本思想和计算步骤;2、能熟练地写出Jacobi迭代法、Gauss-Seidel迭代法、SOR迭代法的迭代格式的分量形式,并能比较它们各自的特点及误差估计;3、了解半迭代法、共轭斜量法。实验内容:编写Jacobi迭代法、Gauss-Seidel迭代法、SOR迭代法、共轭斜量法的通用程序,自己选择实例验证。实验6 线性最小二乘问题(4学时)实验目的:1、

6、掌握线性方程组最小二乘解的概念、存在性及相应的解法;2、熟练掌握Gram-Schmidt直交化方法;3、掌握最小二乘原理,会求拟合函数及超定方程组的最小二乘解实验内容:根据算法编写Gram-Schmidt直交化方法、数据拟合、最小二乘法的通用程序实验7 矩阵特征值问题(4学时)实验目的:1、掌握求矩阵主特征值及相应特征向量的幂法和求按模最小特征值及相应特征向量的逆迭代法;2、用Geivens-Householder方法化实对称矩阵为实对称三对角矩阵。实验内容:编写乘幂法、逆迭代法,Givens-Householder方法的通用程序,自己选择实例验证。实验8 常微分方程初值问题的数值解法(4学时

7、)实验目的:1、了解常微分方程初值问题数值解法的一些基本概念,如单步法和多步法,显式和隐式、方法的阶数,整体截断误差和局部截断误差的区别和关系等;2、了解常微分方程初值问题的Euler方法、改进Euler方法、经典Runge-kutta方法和Adams方法。实验内容:编写Euler方法、改进Euler方法、经典Runge-kutta方法和Adams方法的通用程序,自己选择实例验证。实验9 解常微分方程边值问题(4学时)实验目的:1、了解打靶法的构造原理;2、能用打靶法求解常微分方程边值问题法。实验内容:编写试射法(打靶法)的通用程序,自己选择实例验证。九、样例实验1 实验目的: 练习动手构造二

8、分法的能力,加深理解二分的真谛。实验内容:编写二分法的通用程序二分法:function y=erfen(fun,a,b,esp)if nargin<4    esp=1e-4;endif feval(fun,a)*feval(fun,b)<0    n=1;    c=(a+b)/2;    while c>esp        if feval(fun,a)*feval(fun,c)<0     &#

9、160;      b=c;            c=(a+b)/2;        elseif feval(fun,c)*feval(fun,b)<0            a=c;            c=(a+b)/2;  

10、0;     else            y=c;            esp=10000;        end        n=n+1;    end    y=c;elseif feval(fun,a)=0  

11、60; y=a;elseif feval(fun,b)=0    y=b;else disp('these,may not be a root in the intercal.');endnfunction y=fc(x)y=x2-x-1>> erfen(fc,0,10,0.05) n= 56ans= 16180实验2实验目的: 掌握解线性方程组的高斯列选主元素法实验内容:编写高斯列选主元素法的通用程序Gauss列主元法:function X,det=myGauss(A) %列主元 sign=1; n,m=size(A); if n=m-1 &#

12、39;error' break end for k=1:n-1 l,m=max(abs(A(k:n,k); if A(k+m-1,k)=0 'error' break end if m=1 T=A(k,:); A(k,:)=A(k+m-1,:); A(k+m-1,:)=T; sign=-sign; end for i=k+1:1:n A(i,:)=A(i,:)-A(k,:)*A(i,k)/A(k,k); end if A(n,n)=0 'error' break else X(n)=A(n,n+1)/A(n,n); end for k=n-1:-1:1

13、X(k)=(A(k,n+1)-dot(A(k,k+1:n),X(k+1:n)/A(k,k); end end det=A(1,1); for i=2:n det=det*A(i,i); end实验3实验目的: 能熟练地应用构造Lagrange插值实验内容:编写Lagrange插值法的通用程序Lagrange插值:function X,Y=myLagrange(A,B,C)syms xl=length(A);m=length(B);n=length(C);if l=m 'error'endfor k=1:n for i=1:m L(i)=1; M(i)=sym('1

14、9;); for j=1:m if j=i L(i)=L(i)*(C(k)-A(j)/(A(i)-A(j); M(i)=M(i)*(x-A(j)/(A(i)-A(j); end end end Y(k)=sum(B.*L); X=simple(sum(B.*M);end实验4实验目的:熟练掌握Romberg公式及Romberg积分法实验内容:编写Romberg积分法的通用程序,自己选择实例验证Romberg积分法:function s,n=rbg1e(a,b,esp)if nargin<3,esp=1e-6;ends=10;s0=0;k=2;t(1,1)=(b-a)*(f(a)+f(b)

15、/2;while (abs(s-s0)>eps)h=(b-a)/2(k-1);w=0;if(h=0)for I=1: (2(k-1)-1)w=w+f(a+I*h);endt(k,1)=h*(f(a)/2+f(b)/2);for I=1: (k-1+1)t(i,1)=(4(1-1)*t(I+1,I-1)-t(I,1-1)/(4(1-1)-1);endends=t(1,k);s0=(t(1,k-1);k=k+1;n=k;else s=s0;n=-kendendfunction f=f(x);f=x.3;rbg(0,2)ans= 4实验5实验目的: 能熟练地写出Jacobi迭代法的迭代格式的分

16、量形式实验内容:编写Jacobi迭代法的通用程序Jacobi方法:function x=myJacobi(A,ep)if nargin<2 ep=1.0e-5;endn,m=size(A); x=zeros(n,1); y=zeros(n,1); k=0; while 1 for i=1:1:n s=0.0; for j=1:1:n if j=i s=s+A(i,j)*x(j); end y(i)=(A(i,n+1)-s)/A(i,i); end end xmx=0.0; for i=1:1:n xmx=max(xmx,abs(x(i)-y(i); end if xmx<=ep f

17、or i=1:1:n x(i)=y(i); end return; end for i=1:1:n x(i)=y(i); y(i)=0.0; end k=k+1; if k>30 error('failure'); return; end end实验6实验目的:熟练掌握Gram-Schmidt直交化方法实验内容:编写Gram-Schmidt直交化方法的通用程序,自己选择实例验证1. 改进的Gram-Schmidt直交化方法#include"math.h"#define m 5#define n 4main()int i,j,k; float amn,r

18、nn,s; for(i=1;i<m;i+) for(j=1;j<n;j+) scanf("%f",&aij); for(k=1;k<n-1;k+) for(s=0,i=1;i<m;i+)s+=aik*aik; rkk=sqrt(s); for(i=1;i<m;i+) aik=aik/rkk; for(j=k+1;j<n;j+) for(i=1;i<m;i+) rkj=aki*aij; aij=aij-rkj*aik; s=0; for(i=1;i<m;i+) s+=ain*ain; rnn=sqrt(s); ain=a

19、in/rnn; for(i=1;i<m;i+) for(j=1;j<n;j+) printf("%f",aij); printf("n%f",rij); 实验7实验目的: 1、掌握求矩阵主特征值及相应特征向量的幂法实验内容:编写幂法的通用程序乘幂法:# define N 3# define M 10float fanshu3(float fN )int i ; float f3=0.0; for(i=0;i<N;i+)if(fi<0) fi=-fi; if(f3<fi) f3=fi; return f3;main()int

20、i,j,k; float aNN=2,3,2,10,3,4,3,6,1; float vN,wN,uN; float u0N=0,0,1; float b,t,tol=0.001,err; k=1; for(i=0;i<N;i+)ui=u0i; while(k<=M) for(i=0;i<N;i+) t=0.0; for(j=0;j<N;j+) t+=aij*uj; vi=t; b=fanshu3(v); if(b=0)printf("eigenvecter",u);break; else for(i=0;i<N;i+)wi=vi/b; ui=

21、ui-wi; err=fanshu3(u); for(i=0;i<N;i+)ui=wi; if(err<tol)printf("%f ",b) ; for(i=0;i<N;i+) printf("%f ",ui); break; else k+; if(k>M)printf("Maximun number of iterations exceeded"); 实验8实验目的: 掌握常微分方程初值问题的Euler方法实验内容:编写Euler方法的通用程序Euler方法:function Eulersingleclc

22、%Euler single step method : y'=f(t,y), a<=t<=b, y(a)=muprompt='a=','b=','N=','h=','mu='dlg_title ='Set for Euler single .'num_lines=1;def2='1','2','0','0.1','0'inM1=inputdlg(prompt,dlg_title,num_lines,d

23、ef2);a=str2num(cell2mat(inM1(1);b=str2num(cell2mat(inM1(2);N=str2num(cell2mat(inM1(3);h=str2num(cell2mat(inM1(4);mu=str2num(cell2mat(inM1(5);syms t y%dy=f(t,y) see dy.mif N=0 h=(b-a)/N;else N=(b-a)/h;endt=a;y=mu;t,yfor i=1:N y=y+h*dy(t,y); t=a+i*h; t,yend实验9实验目的: 1、了解打靶法的构造原理;2、能用打靶法求解常微分方程边值问题法。实验内

24、容:编写试射法(打靶法)的通用程序,自己选择实例验证。打靶法:#include <iostream.h>#include <math.h>#include <iomanip.h>#include <stdlib.h>#include <fstream.h>#include <string>#include <process.h># include <malloc.h># include <stdio.h># include <float.h>double x;double h

25、h,h6,xh;/,dydx1,yout1;int i,j,n;double d,h=0.0;double y1,z1,dydx1,dzdx1,yout1,zout1,yding1,zding1;void derivs(double x,double y,double z,double dydx,double dzdx) dydx0=z0;/y'=z0 dzdx0=1.5*y0*y0;/z'=f(x,y,z)=1.5*y*y/ 子过程RK4void rk4(int n,double h,double x,double y,double z,double dydx,double

26、dzdx,double yout,double zout) double zt2,dzt2,dzm2,dzf2,yt2; hh=h*0.5; h6=h/6; xh=x+hh; derivs(x,y,z,dydx,dzdx); for(i=0;i<n;i+) zt=z+hh*dzdx;/z(n)+h/2*L1 yt=y+hh*z; derivs(xh,yt,zt,dydx,dzt);/x+h/2,y(n)+h/2*zn,zn+h/2*L1,L2 for(i=0;i<n;i+) yt=y+hh*z+h*h/4*dzdx; zt=z+hh*dzt;/z(n)+h/2*L2 derivs(

27、xh,yt,zt,dydx,dzm);/dzm=L3 for(i=0;i<n;i+) yt=y+h*z+h*h/2*dzt;/dzt=L2 zt=z+h*dzm;/z(n)+h/2*L3 /dym=dyt+dym;/K2+k3 derivs(x+h,yt,zt,dydx,dzf);/x+h*dzf=L4 for(i=0;i<n;i+) yout=y+h*z+h*h/6*(dzdx+dzt+dzm); y=yout; zout=z+h6*(dzdx+2.0*dzt+2.0*dzm+dzf); /h/6=h6 / cout<<zout<<endl;/yout从这

28、里输出,切记!/ cout<<h6; z=zout; for(i=0;i<n;i+) dzm=0.0; dzt=0.0; yt=0.0; zt=0.0; dzf=0.0; void main() double F1,Fs1,zjia1,dlts=0.00001; double Fpie1,dltF; n=1; x=0; y0=4; z0=-1.0000; /dydx0=z0;/y'=z0 /dzdx0=1.5*y0*y0;/z'=f(x,y,z)=1.5*y*ydo for(j=0;j<5;j+) if(j<1) zding0=z0;/zding0=z0.0 yding0=y0

温馨提示

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

评论

0/150

提交评论