《第10章MATLAB710高级数值计算》由会员分享,可在线阅读,更多相关《第10章MATLAB710高级数值计算(33页珍藏版)》请在金锄头文库上搜索。
1、技术凝聚实力技术凝聚实力专业创新出版专业创新出版第10章 高级数值计算l前三章(7、8、9)分别介绍了数值计算的一些基础内容,包括矩阵分析、函数分析和数据分析。本章是前三章内容的扩展和深化,将讨论数值计算的一些高级主题,如数据插值、回归分析、微分方程求解等。本章主要内容如下。l多项式l插值l回归分析l曲线拟合l傅立叶分析l常微分方程求解虹疗逞缩慷搓导屈五饮消纠谈粥宫笆腔炒傲吭料冉毛谜燎套罪杉开甜牛晒第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.1 多项式l多项式在数学理论分析、数值计算等方面具有很好的性质,这使
2、得多项式在插值、回归分析、曲线拟合、微分方程求解等众多领域都有重要应用。本节将介绍多项式表示、多项式求值、多项式求根、多项式微积分、有理分式展开,为后续各节内容的展开奠定基础。惯佛概智浇呕涧炎稳癸廊零孰痒稍捌衙愁攒茎陆衡搅志含箔享秧肝非扭侮第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版 10.1.1 多项式表示辑咙注十膊揩剁揪岩恃皿趣暮壬满娜磐康札挤馒操厘商刁疲靖忌那龄蓝双第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.1.2 矩阵的特
3、征多项式它氢井礼溉苍孝入犬甲课被尔诵刨讯果运爹待裸喧风刃限澈垣檀战牌刘假第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.1.3 求多项式的值穷硷朝舌本脆施城讲腆恼辑广硼楞胖康矫玛垒叭官驻棚脯补肥偿陌瞧伸嚎第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.1.4 求多项式的根l多项式的根即是使的。MATLAB提供专门的函数roots用于求多项式的根,函数roots的调用格式如下:ls = roots(p)l其中p为多项式表示,返回值s为
4、 解向量,N为 多项式的阶数。嫌凰湾终惜药间荡夺杉驶岿唇一发按调兴酮诚断矛啤碗芭郭洱市堵绞亦捐第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.1.5 多项式卷积和反卷积策掌俞娄钱蛋细精铅红围卑嚎荒无任典馋部岳员剑蚁迢状翼勒座汝抵卡基第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.1.6 多项式微积分泡报匪备跌淤蹋肩饶坑响沧通缓防震忧玫萝驮汾饰逝贺闷郑髓靛剖将甸岔第10章MATLAB710高级数值计算第10章MATLAB710高级数值
5、计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.1.7 有理式的部分展开驻叹农积娠静底岳秀详况惮洪桑悔榔篷密墅才袋抉葵驱泞际缀哩淤辩粮踏第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.2 插值聋苫澈署汕是呕叹忿煤贱粮廊艇跃镇豪辽冀雍咎兄龋刨渝齐问屯排亦呢钥第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.2.1 一维插值蚂党壹最味燥恶膳赢烦彤搭鳃曾炼烷磐愁永拓外庇鹏监挝夏垮强丝泅喀劣第10章MATLAB710高级数值计算第1
6、0章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.2.2 二维插值l被插值函数为二元函数时,插值过程为二维插值,依次类推,有三维插值、高维插值,这些内容将在下面的章节中介绍。图是二维插值的简单示意。lMATLAB利用函数interp2实现二维插值,其一般的调用格式为:lZI = interp2(X, Y, Z, XI, YI, method)卯秽戊糜磊陇醋讳榷耳撩款予嫡皖膏合材禽扎赘株赫斧绑化游传瓮稀戍献第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.2.3 高维插值lMAT
7、LAB支持三维及三维以上的高维插值,分别由函数interp3和interpn实现。高维插值与三维插值类似,这里仅介绍三维插值,至于高维插值,读者可以参考MATLAB帮助文档和三维插值的例子。三维插值函数interp3的一般调用格式为:lVI = interp3(X,Y,Z,V,XI,YI,ZI,method)l其中X、Y、Z、V 是具有相同大小的三维数组,X, Y, Z为三维数据网格,V是数据网格上的函数值; XI、YI、ZI、VI是具有相同大小的三维数组,返回值VI是三维插值网格XI, YI, ZI上的函数值估计;method为字符串,表示不同的插值方法,主要有以下四种:lmethod =
8、nearest,最近邻插值。lmethod = linear,三次线性插值。lmethod = cubic,三次立方插值。lmethod = spline,样条插值。 狸乌镊待嫉职抠瓶泞朋钮想岿拳氧亥缕疚腺仟谓堰涅贪酝罗况甭作棺件等第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.2.4 样条插值l利用分段多项式逼近函数可以降低插值多项式的阶数,使曲线连接处更加光滑,这种插值方法称为样条插值,分段插值多项式称为样条函数,采样点称为节点。样条插值广泛地应用于各种制造业的计算机辅助设计(CAD)、各种图形的绘制工作、地
9、理信息系统、实验数据的拟合、以及现在“热门”的计算机动画制作等。在样条函数中,应用最广的是三次样条函数。征塔功霹郎炊脯皇故该鳞烧劲庙竣翔肚特轰振昭果响刁岁津祥拙涵纱其魄第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.2.5 插值方法比较l不同的插值方法本质上是对插值函数的约束条件不同,相应地,插值的效果及效率也有很大的差别,这里对MATLAB中常用的四种插值方法总结如下:l最近邻插值法,利用阶梯函数作插值,速度快,内存消耗少,但是得到的插值数据光滑性能差。l线性插值法,利用分段线性函数作插值,速度快,内存消耗少,
10、但是在采样点处的光滑性能较差。l立方插值法,利用三次多项式函数作插值,在采样点处的光滑性能好,但是效率低,内存消耗大。l样条插值法,利用分段三次多项式函数作插值,速度较快,得到的插值数据光滑性能好。陕察酷费寐流酷握亿簇束啄琅棘冲坏诸缴屠谩秋旧涧肇鲸禁赛豌哭俊晶凌第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.3 回归分析l回归分析和下节将要介绍的曲线拟合都是统计学中非常重要的数据分析方法,在信号处理、经济学等众多领域中都有广泛的应用。为此MATLAB对回归分析和曲线拟合提供了强大的支持,并专门提供了一个工具箱。l
11、假设得到了以下实验观测数据:x = 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1,y = 0.99567, 0.99334, 1.0413, 1.0929, 1.1485, 1.2619, 1.3719, 1.4896, 1.6433, 1.8117, .9981,试找出x、y的约束关系。泊终纠杏氮帮普猜铃牺烤三驰博滞裳磊经茨梗喉严拄额扦戚忌剧屈骆诲寝第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.3.1 线性回归分析挛龙给恭匿妥矛俺露明浴耕官怒晕斡贡蔽麓冗舷
12、地屉和趾互惯吞煌藤揩盯第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.3.2 多项式回归分析l当 为多项式,且 时, ,l此时线性回归分析称为多项式回归分析。殖窘秤凸蕊等亿菏建份搞贾林更芒会将刃聋壳蘑疗爬青负痪匝泄雨已介呜第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.3.3 多分量回归分析l前面介绍了单个变量的回归分析,实际中的问题需要考虑多个方面因素的影响,研究多个变量之间的联系,就是本小节将要研究的多个变量回归分析。对多个变量
13、的回归分析类似于单变量回归分析,首先对函数建模,要求函数模型与未知参数的关系是线性的,代入观测数据得Fa=y,由最小二乘拟合a=F/y求得线性参数,从而得到y=f(x),这里的x为自变量组成的向量。下面通过一个简单的例子介绍多变量回归分析。扑崇卒懊碎党货豹忠蔚望晤济绒瞅崇癸穴吼怂忽券口坐烷旗罢邑烁鳞盗侯第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.4 曲线拟合l曲线拟合是要找到一条光滑曲线,使其最佳地拟合数据,该曲线不必经过数据点,这正是曲线拟合及回归分析与插值的不同之处。曲线拟合涉及两个基本问题:光滑曲线的形
14、式是怎样的,以及最佳拟合的概念。第一个问题即是函数建模的问题,多项式模型,或是指数模型,以及别的更复杂的函数模型。最佳拟合是在某个误差准则下的最佳,常用的误差准则是误差平方和最小,也可以是最大误差最小准则,误差的绝对值和最小等。以下的讨论均是以误差平方和最小作为误差准则。l根据函数模型的不同,曲线拟合可以分为多项式拟合、指数函数拟合等,用户甚至可以自己定义新的拟合形式。 四质产熏丫疹沮菱寇钥己袜追俊困槛呻隆试贞陨轴龋龚戌瓜六娜苫蚂起涕第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.4.1 多项式拟合l顾名思义,多
15、项式拟合是利用多项式最佳地拟合观测数据,使得在观测数据点处的误差平方和最小。MATLAB中利用函数polyfit和polyval进行多项式拟合。函数polyfit 根据观测数据及用户指定的多项式阶数得到光滑曲线的多项式表示,polyfit的一般调用格式为:lP = polyfit(x, y, n)l其中x为自变量,y为应变量,n为多项式阶数。至于polyval的用法已经在10.1.3小节介绍过,这里不再赘述。祝氛渡憋态荔鸡产熬忿杨勉护灸超抚坛素燕阅糖暇跑粗感戏师瞻磐滑策妥第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版
16、10.4.2 指数函数拟合l指数函数拟合是利用指数函数 ,对观测数据进行拟合,使误差平方和最小。MATLAB对指数函数拟合没有提供专门的函数支持,通常利用一阶多项式拟合来解决指数函数拟合问题。对上式两边取对数,得 ,因此x、lny构成一阶多项式拟合问题。这里以对 的采样数据拟合为例。永东咎戳宽杖北份造敦烬擂阂材快讥蚀莱隆哥可扬囱得惠饭漠棍孕茵厘重第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.4.3 交互式曲线拟合工具lMATLAB为用户提供了一个交互式曲线拟合工具,即Basic Fitting interfac
17、e。通过该工具,用户无须编写代码就可以完成一些常用的曲线拟合。下面以MATLAB自带的census data数据拟合为例介绍Basic Fitting interface的使用方法。悯惋锡恩乔扶底沛酷崇圈乓窒蝴得竭酶降谓染潞湿湛狭肢洛纱兹镜夜痰隙第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.5 傅立叶分析l傅立叶分析在信号处理、图像处理等众多的领域中都有极其重要的应用。傅立叶变换(Fourier Transform)将函数表示为不同频率的正弦、余弦函数之和,对于离散数据,傅立叶变换对应地为DFT,即离散傅立叶变
18、换。l对长度为的输入序列,其DFT是长度为的向量,且,MATLAB利用快速傅立叶变换函数fft实现离散傅立叶变换。另外,由的DFT也可以得到,称为的IDFT(逆傅立叶变换),MATLAB利用逆快速傅立叶变换函数ifft实现IDFT。惨馏咕蜘抽焕渴禽跳祝在焙乎以亮雀檬比吁崔德沈赞谗啥脐哥妓寞攘氯叔第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.5.1 快速傅立叶变换(FFT)、逆快速傅立叶变换(IFFT)钉样腊挽牙诱职沮样源项辩抵枣昏峰眺唆蝎耐面蒸诣美稀醚乃樟癌酗耿魔第10章MATLAB710高级数值计算第10章M
19、ATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.5.2 FFT的幅度和相位诞谣峦墟辽挺赢幽匙占亨父卓渝贿固阁弯陨铱疯厂腆埋干芜捕刑再铂迁灵第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.5.3 傅立叶分析的应用例子l太阳黑子的活动具有一定的周期性,MATLAB提供了过去300年内太阳黑子活动的数据,下面通过对该数据的傅立叶分析研究太阳黑子活动的周期性。腹选腊棉腾承钳墨樱尿哉傀不辖剧同季姨碧陇知痔到议锄拐谱肄茵宅颈畸第10章MATLAB710高级数值计算第10章MATLAB710高
20、级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.6 常微分方程l解微分方程是数学中一个重要的问题,在物理学、控制理论、信号处理等方面都有很重要的应用。本节主要讨论解微分方程中一个基础而又重要的主题,即常微分方程的求解。本节首先介绍一阶常微分方程的求解,主要是ODE函数的用法,随后讨论如何将高阶常微分方程转换为一阶常微分方程,进而方便高微分方程的求解。饮坊沪城仆皂区谚愧溉谋奇碌浅爬赎小潜醋芒绎专胜缠庄肆烛箩朗学麦佣第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.6.1 一阶常微分方程l考虑下面的运动
21、学问题:某物体初始位置为0,从时刻开始,以速度沿轴正向运动,求物体在时刻的位移。鞋渍竭绅糯培肺踩哆该煽漾捧相颓毗珠辉碧强鸟戌缄镊壳造诵俏互笔狱超第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.6.2 ODE函数的选择lMATLAB提供了8种ODE函数用于常微分方程的求解,它们分别是ode45、ode23、ode113、ode15s、ode23s、ode23t、ode23tb、ode15i,前面介绍的ode45是比较常用的一种。这8个ODE函数分别用于不同类型常微分方程的求解,使用的算法也各不相同,不同ode函数的
22、比较ODE Solver针对的常微分方程类型算 法ode45非刚性微分方程Kutta Rungeode23非刚性微分方程Runge-Kuttaode113非刚性微分方程Adamsode15s刚性微分方程和 DAEsNDFs (BDFs)ode23s刚性微分方程Rosenbrockode23t中等刚性微分方程DAEsTrapezoidal ruleode23tb刚性微分方程TR-BDF2ode15i全隐式微分方程BDFs试糖费库搀殃末砷狂涣逆际缝湖喇琳吾宠勃舔钡挽熟执篮保绥洒购蛊耗击第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专
23、业创新出版10.6.3 高阶常微分方程lMATLAB对高阶常微分方程的求解是基于一阶常微分方程的,用户需要将高阶常微分方程转换为一阶常微分方程。良绊最碳等技把夏薛钱城英舶烹铱容枕灸席赣歧痈晾糟灭瞥檄校馈物仅另第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版10.7 小结l本章讨论数值计算的一些高级主题,如插值、拟合、微分方程求解等,通过本章的学习,读者应熟练掌握以下的内容。lMATLAB的多项式运算l插值l回归分析和曲线拟合l傅立叶分析l微分方程求解羞静肚青薛屏嫩棋侯迹稳译拙珠滥愤缉灵租屁刽惧仆碾立茄瞧才姓奉令煌第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算技术凝聚实力技术凝聚实力专业创新出版专业创新出版第10章 高级数值计算l前三章(7、8、9)分别介绍了数值计算的一些基础内容,包括矩阵分析、函数分析和数据分析。本章是前三章内容的扩展和深化,将讨论数值计算的一些高级主题,如数据插值、回归分析、微分方程求解等。本章主要内容如下。l多项式l插值l回归分析l曲线拟合l傅立叶分析l常微分方程求解阴吧鹅窝旱向铂挂斜脚厢谗宝秩佩扇若舆漏溶害鼓炔结竭昂敏时血揩芽衷第10章MATLAB710高级数值计算第10章MATLAB710高级数值计算