网站大量收购闲置独家精品文档,联系QQ:2885784924

教学课件 MATLAB程序设计基础教程(刘国良).ppt

教学课件 MATLAB程序设计基础教程(刘国良).ppt

  1. 1、本文档共1397页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
  如果设置了opts属性,linsolve()函数解算速度比mldivide()函数快,因为linsolve()函数不需要执行任何测试操作去确定A的性质。在三角矩阵上,使用mldivide()函数与使用 linsolve()函数在速度效益上区别不大。   7.7 微分方程的数值解 7.7.1 微分方程的数值解法   联系着自变量、未知函数及其导数的关系式,称为微分方程。如果未知函数是一元函数,称为常微分方程。常微分方程的一般形式为 F(x, y, y‘, y“,…,y(n)=0) (7.7.1)   若方程中未知函数及其各阶导数都是一次的,则称为线性常微分方程。微分方程中出现的未知函数的导数的最高阶解数称为微分方程的阶。一般表示为 (7.7.2)   若上式中的系数bi(t)(i=1, 2, 3, …, n)均与t无关,则称之为常系数。   如果未知函数是多元函数,则成为偏微分方程。联系一些未知函数的一组微分方程组称为微分方程组。   除常系数线性微分方程可用特征根法求解、少数特殊方程可用初等积分法求解外,大部分微分方程无实际解析解,应用中主要依靠数值解法。数值算法的主要缺点是它缺乏物理解释。   考虑一阶常微分方程初值问题: (7.7.3)   所谓数值解法,就是寻求y(t)在一系列离散节点t0t1?…?tn≤tf上的近似值yk(其中k=0, 1, …, n),称hk=tk+1-tk为步长,通常取为常量h。   常用的微分方程的数值求解方法有欧拉法(Euler)和龙格-库塔法(Runge-Kutta)法,最简单的数值解法是Euler法。Euler法的思路也极其简单:在节点处用差商近似代替导数 (7.7.4)   这样导出计算公式(称为Euler格式) (7.7.5) 它能求解各种形式的微分方程。Euler法也称折线法,是最简单的单步法。   单步法不需要附加初值,所需存储量小,容易改变步长,但线性单步法的最高阶数是2。   Euler方法只有一阶精度,Runge-Kutta法是非线性高阶单步法,改进方法有二阶Runge-Kutta法、四阶Runge-Kutta法、五阶Runge-Kutta-Felhberg法和先行多步法等,这些方法可用于解高阶常微分方程(组)初值问题。边值问题采用不同方法,如差分法、有限元法等。 7.7.2 MATLAB求解微分方程的数值解   在MATLAB中,使用Runge-Kutta法,针对不同性质的微分方程已编制出微分方程的系列求解命令函数ODE系统,包括ode23、ode45、ode113、ode15s、ode23s等,其语法如下:   (1) ?[T,Y] = solver(odefun,tspan,y0)   (2) ?[T,Y] = solver(odefun,tspan,y0,options)   (3) ?[T,Y,TE,YE,IE] = solver(odefun,tspan,y0,options)   (4) ?sol = solver(odefun,[t0 tf],y0...)   1.diff()函数   diff()函数可用于数值微分和符号微分,在数值微分中diff()函数的语法如下:   (1) ?Y = diff(X):计算X的邻近元素之间的微差,[X(2)-X(1)X(3)-X(2)…X(n)-X(n-1)],如果X是一个向量,则diff(X) 返回一个向量。例如:    x = [1 2 6 4 7];    y = diff(x)   y = 1 4 -2 3   如果X是一个矩阵,则diff(X)返回一个行矩阵,元素为[X(2:m,:)-X(1:m-1,:)]。例如:    xx = [1 2 3 4 5;9 8 7 6 4];    yy = diff(xx)   yy = 8 6 4 2 -1    xxx = [1 2 3 4 5;9 8 7 6 4;1 3 5 7 9];    yyy = diff(xxx)   yyy =    8 6 4 2 -1    -8 -5 -2 1 5   (2) ?Y = diff(X,n):n 次调用函数计算微分,因此diff(X,2)等同于diff(diff(X))。   (3) ?Y = diff(X,n,dim):调用函数计算n 次微分。参数dim控制行向或列向差分,dim=1为行向(默认值),dim=2为列向。   由于diff计算数组元素间的差分,所以输出比原数组少了一个元素。这样,画微分曲线时,必须舍弃x数组中的一个元素。当舍弃x的第一

文档评论(0)

pehalf + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:7201060146000004

1亿VIP精品文档

相关文档