现代数值计算-全套PPT课件.pptx
《现代数值计算-全套PPT课件.pptx》由会员分享,可在线阅读,更多相关《现代数值计算-全套PPT课件.pptx(747页珍藏版)》请在冰豆网上搜索。
第一章科学计算与MATLAB,AdvancedNumericalComputing现代数值计算,目录/Contents,第一章科学计算与MATLAB,第一节科学计算的意义第二节误差基础知识第三节MATLAB软件,科学计算的出现利用现代计算机辅助,解决实际问题计算的挑战:
基因测序,全球天气模拟科学计算问题的主要步骤数学建模数值算法评价科学计算软件MATLAB,http:
/Mathematica,http:
/Maple,http:
/Python,http:
/www.python.org,实际问题数学问题(模型误差)计算问题(截断误差、观测误差)结果(舍入误差),1.2.1误差的来源,实际问题,模型误差观测误差,舍入误差,数学模型数值算法截断误差编程处理,比较检验结果,设有真值,及近似值,称,为该近似值的绝对误差,1.2.2误差度量,若,称为绝对误差限称为相对误差,称为相对误差限由于真值难以求出,通常也使用后者更加合理,十进制数的标准形式(其中,),1.2.3有效数字,四舍五入保留位:
因此有误差限称为有效数字,称为有效数问题:
有效数字和相对误差限有什么关系?
有效数的误差限是末位数单位的一半,其本身就体现了误差界有效数末尾不可以随便增减零,1.2.4计算机的浮点数系单精度实数由32位二进制的浮点数表示:
1位符号,23位尾数,8位阶数(本身也有符号),和,.,最近的是,则在机器中记为,即,.,机器所能表示的数中,离因此若相对误差限,最大数,最小数,上溢,下溢,1.2.5一个实例有一艘驳船,宽度为5米,欲驶过一个河渠.该河渠有一个直角弯道,形状和尺寸如图所示.试问,要驶过这个河渠,驳船的长度不能超过多少米?
驳船的长度有如下关系,极小化问题,1.2.5一个实例,这个过程中有多少处有误差?
或者求零点问题,可证,对任意并可求得,1.2.6数值计算中应注意的几个问题,计算容易推导出因此,调用MatLab程序nademo1,1.2.6数值计算中应注意的几个问题,计算,其中,保留四位有效数字.,其它的例子:
避免大数和小数相加减,1.2.6数值计算中应注意的几个问题,计算中间步骤简化计算步骤,Horner算法或秦九韶算法,Matlab软件,1.3.1简介,全称:
MatrixLaboratory功能:
科学计算、符号计算、图形处理等数据类型:
数、字符串、矩阵、单元型数据和结构型数据集成界面:
命令窗口、命令历史窗口、当前路径窗口、工作空间变量窗口等提示符,换行符.,注释符%,默认变量ans,Matlab软件,1.3.2向量和矩阵的基本运算,矩阵A=13;24向量a=123456冒号a=1:
6a:
s:
b列向量A=1;2;3字符串A=hellomatlabA=Thissmatlabsworld.,Matlab软件,1.3.2向量和矩阵的基本运算,常量:
在运行过程中不能变化的量科学记数法:
显示方式:
format(只影响显示)变量:
保存在内存(地址),可随时变化内置变量:
i,j,pi,Inf,NaN(NotaNumber)Inf及NaN的运算规律,Matlab软件,1.3.2向量和矩阵的基本运算,矩阵的加(+)、乘(*)、数乘(*)、幂()矩阵的点乘(.*)、点除(./)、点幂(.)矩阵的左除(X=AB即求解AX=B)矩阵的右除(X=A/B即求解A=XB),Matlab软件,1.3.2向量和矩阵的基本运算,x=0pi/6pi/4pi/3pi/2;sin(x)ans=00.50000.70710.86601.0000向量功能其他初等函数:
三角反三角、指数对数、根号、绝对值等等,Matlab软件,1.3.2向量和矩阵的基本运算,sqrt(91011)=pians=011a=2300;b=-1010;a&bans=1000a|bans=1110bans=0101,Matlab软件,1.3.2向量和矩阵的基本运算,矩阵运算A=magic(3)A(2,1:
3)A(2:
end,1end),816357492,B=23;C=12;34;D=57;A=B9;CDA(A=4)=0v=1:
9;v(abs(v-5)=2)=,Matlab软件,1.3.3流程控制,基本语法ifvalue1,statement1,elseifvalue2,statement2,elsestatement3end,Matlab软件,1.3.3流程控制,例如(判别闰年)ifmod(year,400)=0,fprintf(%disaleapyear.n,year);elseifmod(year,100)=0,fprintf(%disnotaleapyear.n,year);elseifmod(year,4)=0,fprintf(%disaleapyear.n,year);elsefprintf(%disnotaleapyear.n,year);end,Matlab软件,1.3.3流程控制,基本语法forloopvalue=value,statement,end和whilevalue,statement,end,Matlab软件,1.3.3流程控制,例如(利用计算圆周率的近似值)s=0;fork=1:
10000,s=s+1/k2;ends=sqrt(6*s),Matlab软件,1.3.3流程控制,Collatz猜想:
输入一个正整数n,如果是偶数就除以2,是奇数就乘3加1,如此一直变换,最后会变成1.n=input(n=);whilen=1,ifmod(n,2)=1,n=n*3+1;elsen=n/2;enddisp(n);end,Matlab软件,1.3.3流程控制冒泡排序:
把一列数想象为垂直存放,数值大的在下方,每轮比较时从上到下依次比较相邻的两个数,若是上面的数大,把它们对调,否则不动。
直至没有对调为止。
arowvector:
1863975024,done=0;k=1;v=input(arowvector:
);whiledone,done=1;forp=1:
length(v)-k,ifv(p)v(p+1),tmp=v(p);v(p)=v(p+1);v(p+1)=tmp;%ORv(pp+1)=v(p+1p);done=0;endendk=k+1;end,Matlab软件,1.3.4脚本文件和函数文件,把一系列命令收集在一个文件里,保存为以.m为后缀的文件.执行时只需要键入文件名,不需键入后缀.例:
mysortarowvector:
1863975024v=0123456789,Matlab软件,1.3.4脚本文件和函数文件,一种封装的文件,具有特定的头格式:
functionout1,out2,.=funname(in1,in2,.)函数名必须和文件名一致与脚本文件的比较例:
文件mysort2.m,Matlab软件,1.3.4脚本文件和函数文件,函数头functionv,s=mysort3(v)调用d=53421;r,w=mysort3(d)传值方式:
在输出或输入列表中的位置列表不一样长的情形命令global的用法,Matlab软件,1.3.4脚本文件和函数文件,变量nargin和nargout的含义用法(例如:
根据输入计算面积)functions=zhouchang(a,b,c)ifnargin=1,s=2*pi*a;elseifnargin=2,s=2*(a+b);elseifnargin=3,s=a+b+c;end,Matlab软件,1.3.4脚本文件和函数文件,直接或间接地用到了自己例如:
Fibonacci数列定义为functionf=fib(n)ifn=3,f=fib(n-1)+fib(n-2);elseifn=1|n=2,f=1;end,Matlab软件,1.3.5帮助系统,Help:
查看工具箱,函数可以自己书写文件的帮助,写在function之后其他查看系统命令用法的工具:
doc,lookfor其他帮助命令:
which,who等辅助命令:
clc,home,clear,Matlab软件,1.3.6画图功能,x=0:
0.01:
10;y=1./(1+x.2)+sin(x).*exp(x/3);,plot(x,y,g*-)画函数hold命令命令plot中的参数选项,的图像,plot(x,y1,yo-,x,y2,g*,x,y3,r+:
x,y4,bp:
);其他类似命令:
loglog,semilogx,semilogy,Matlab软件,1.3.6画图功能,三维线图t=linspace(0,10*pi,2000);plot3(sin(t).*t,cos(t).*t,t,r-);view(-17,66),Matlab软件,1.3.6画图功能,三维面图:
命令meshgridx=1:
4;y=5:
3:
11;X,Y=meshgrid(x,y)X=,Y,Matlab软件,1.3.6画图功能,三维面图:
命令surf及contour例如:
画下面函数的图像及等高线,x=linspace(-10,10,200);X,Y=meshgrid(x);Z=exp(-abs(X)+cos(X+Y)+1./(X.2+Y.2+1);surf(X,Y,Z);contour(X,Y,Z,20),Matlab软件,1.3.6画图功能,标注:
坐标轴xlabel,曲线legend,图形标题title窗口控制:
打开figure,关闭close,清除clf坐标轴控制:
axis(equal,off,-1327)或者axisequal;axisoff,Matlab软件,1.3.7数据操作,文本方式x=0:
0.1:
1;y=x;exp(x);fid=fopen(exp.txt,wt);fprintf(fid,%sn,%-exp.txt-);fprintf(fid,%6.2f%12.8fn,y);fclose(fid);fid=fopen(exp.txt);s=fscanf(fid,%c,117)s=%-exp.txt-A=fscanf(fid,%6f%12fn,2inf);,A=A,转置关系,Matlab软件,1.3.7数据操作,二进制方式loadclown.matwhoYourvariablesare:
Xcaptionmapimage(X);colormap(map)savea.matx*A,Matlab软件,1.3.7数据操作,A=120;030;0-16;A=sparse(A)A=,或者,Matlab软件,1.3.7数据操作,i=11233;j=12223;s=123-16;A=sparse(i,j,s)A=,指明阶数A=sparse(i,j,s,200,100);找出非零元i,j,s=find(A);,Matlab软件,1.4评注,Matlab参考书目:
MatLab与科学计算(第2版),王沫然,电子工业出版社,2007年8月MatLab工程数学应用,许波、刘征,清华大学出版社,2000年4月MatLab数学实验,胡良剑、孙晓君,高等教育出版社,2006年6月MatLab高等数学实验,章恩栋、马玉兰、徐美萍、李双,电子工业出版社,2008年11月,AdvancedNumericalComputing,第二章线性代数方程组的直接法,现代数值计算,目录/Contents,第二章线性代数方程组的直接法,第一节高斯消去法第二节矩阵的三角分解第三节正交矩阵与奇异值分解,求解大规模线性方程组:
如何利用计算机来快速、稳定、有效地求解该问题是科学计算的核心问题之一直接法和迭代法由于浮点运算的精度的影响,直