Matlab第4章 解数值计算

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第四章 数值计算
4.1 数值微积分 4.2 矩阵和代数方程 4.3 多项式运算和卷积
4.1 数值微积分
4.1.1 近似数值极限及导数
4.1.2 数值求和与近似数值积分
4.1.3 计算精度可控的数值积分
4.1.4 函数极值的数值求解
4.1.5 常微分方程的数值解
4.1.1 近似数值极限及导数
MATLAB提供了与“求导”概念 有关的“求差分”指令: dx=diff(X) FX = gradient(F) [FX,FY] = gradient(F)
i 1
i 1 m
j
Sct=cumtrapz(x, y)
采用梯形法沿列方向求函数y关于自变量x 的累计积分
〖说明〗 假如X是 (m n) 的数组,那末sum(X)的计算结果Sx是一个 (1 n) 的数组,其中Sx(k),就是X第k列全体元素的和。而cumsum(X)的计 算结果Scs仍是 (m n) 数组,它第( i, k)元素,就是X数组第k列前i个元素
输入量options用于配置优化参数。在没有特殊需求情况下, 一般不必自行设置。 输出量exitflag若给出大于0的数,说明成功搜索到极值点。 输出量output给出具体的优化算法和迭代次数。 注意:7.x版“泛函”指令不能通过输入量传递优化函数中的 参数。 求一元函数极小值时,数值计算获得的区间收敛容差不会比
( N n) 矩阵。输出量Y行中第k列Y(:,k),就是向量y第k分量的解。
【例 4.1-10】
4.2 矩阵和代数方程
4.2.1 4.2.2 4.2.3 4.2.4
矩阵运算和特征参数 矩阵的变换和特征值分解 线性方程的解 一般代数方程的解
4.2.1
矩阵运算和特征参数
术 语 矩阵 加减 标量与矩阵 加减 矩阵 乘积 标量与矩阵 相乘 矩阵的转置
【例4.1-1】 【例4.1-2】 【例4.1-3】
4.1.2 数值求和与近似数值积分
Sx=sum(X) Scs=cumsum(X) St=trapz(x, y) 采用梯形法沿列方向求函数y关于自变量x 的积分 列方向求和 Sx(k ) X mn (i, k ) 沿列方向求累计和 Scs( j, k ) Xmn (i, k )
MATLAB数值计算中,没有专门求 极限和导数的指令。原因是:有限 精度。但这不意味:数值计算不能 应用于与“导数”等函数邻域概念 有关的问题。事实上,数值计算是 解各类微分方程的最主要途径。
求(两点前向)差分 求一元(函数)梯度(三点中心差分) 求二元(函数)梯度
〖说明〗 •当X是向量时,dx = X(2:n) - X(1:n-1);当X是矩阵时,dx = X(2:n, : ) - X(1:n-1, : )。注意:dx的长度 •当F是向量时,FX(1) = F(2) - F(1),FX(end) = F(end) - F(end-1), FX(2:end-1) = ( F(3:end) - F(1:end-2) )/2。梯度采用“内点中心差 分”计算。注意:Fx的长度与F相同。 •当F是矩阵时,FX, FY是与F同样大小的矩阵。FX的每行给出F相应行元素 间的“梯度”;FY的每列给出F相应列元素间的“梯度”。
数 学 含 义
Amn Bmn [aij bij ]mn
MATLAB表达 A+B, A-B a+B, a-B A*B a*B A'
a Bmn [a]mn [bij ]mn [a bij ]mn
Cmn [cij ]mn aij ml bij ln l aik bkj A ml Bln k 1 mn
aBmn [a bij ]mn
B AH
(bkj ) R i (bkj ) I (a jk ) R i (a jk ) I
【例 4.2-1】
eps 更好。 求多元函数极小值时,数值计算的精度极限是 x

f ( x) eps
【例4.1-8】 【例4.1-9】
x

eps ,
4.1.5 常微分方程的数值解
MATLAB为解决常微分方程初值问题提供一组配套齐全、结构严整的指令
[t,Y] = ode45(odefun,tspan,y0) 采用4阶Runge-Kutta数值积分法解微分方程 〖说明〗 第一输入量odefun是待解微分方程的函数文件句柄。该函数文件的输出必须是 待解函数的一阶导数。不管原问题是不是一阶微分方程组,当使用ode45求解时 ,必须转化成(假设由n个方程组成)一阶微分方程组形式 y f ( y, t ) 式中y是 (n 1) 向量。 tspan常被赋成二元向量 [t 0 , t f ] ,此时tspan用来定义求数值解的时间区间。 输入量y0是一阶微分方程组的 (n 1) 初值列向量。 输出量t是所求数值解的自变量数据列向量(假定其数据长度为 N ),而Y则是
106

【例 4.1-6】
Fra Baidu bibliotek
【例 4.1-7】
4.1.4 函数极值的数值求解
[x,fval,exitflag,output]=fminbnd(fun,x1,x2,options) 求一元函数在区间(x1, x2)中极小值 [x,fval,exitflag,output]=fminsearch(fun,x0,options) 单纯形法求多元函数极值点 〖说明〗 •第一输入量fun是待解目标函数,该目标函数可以采用字符串、内联对象、 匿名函数和M函数文件的函数句柄等不同形式表达。fminsearch被优化目 标函数fun中的多元自变量应采用单一变量名的向量形式表达(见例4.18)。 •fminbnd的第二、三个输入量x1, x2分别表示被研究区间的左、右边界。 输出量x, fval分别是极值点和相应的目标函数极值。 •fminsearch的第二个输入宗量x0可以是一个搜索起点的向量或一组搜索起 点的矩阵。当采用单个搜索起点时,输出量x也是一个单点(向量)。当 采用多个搜索起点(矩阵)时,输出量x就给出多个搜索结果(矩阵), 该矩阵的每一列代表一个候选极值点。这些搜索到的候选极值点按目标函 数值递增次序排列。极值点x(:,1) 对应的目标函数极小值由fval给出。
【例 4.1-5】
4.1.3 计算精度可控的数值积分
S1=quad(fun,a,b,tol) 采用递推自适应Simpson法计算积分 S1=quadl(fun,a,b,tol) 采用递推自适应 Lobatto法求数值积分 S2=dblquad(fun,xmin,xmax,ymin,ymax,tol) 二重(闭型)数值积分指令 S3=triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol) 三重(闭型)数值积分指令 〖说明〗 被积函数fun ,可以是字符串、内联对象、匿名函数和M函数文件的函 数句柄。被积函数的自变量一般采用字母x 。在此提醒读者注意:编写 被积函数时,要遵循“数组运算”规则。 对于一重积分指令quad, quadl,其积分下限、上限由输入量a、b传递。 而多重积分指令dblquad, triplequad的由内向外的积分限分别由输入量 xmin, xmax, ymin, ymax, zmin, zmax传递。 •输入宗量tol是个标量,用来控制绝对误差。缺省时,积分的绝对精度为
的和。
trapz(x,y) 给出采样点(x, y)所连接折线下的面积,即函数y在自变量 区间x上的近似积分。而cumtrapz(x, y)的计算结果Sct是一个与y同样 大小的数组,Sct(k)是的 x ( k ) 近似值。

x (1)
y( x )dx
•在对计算数值积分精度没有严格要求的场合,trapz和cumtrapz是两 条比较方便易用的指令。这两条指令所的数值积分的精度与积分区间 分割的稀密程度有关。采样点数愈多,积分精度愈高,但精度无法定 量控制
相关文档
最新文档