ch4_数值计算2.doc

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ch4_数值计算2

PAGE  PAGE 32 数值计算 本章主要讲的函数有 1、 近似数值极限及导数的函数有 diff gradient 2 、 数值求和与近似数值积分函数有 sum sumsum trapz cumtranpz 3、 计算精度可控的数值积分 integral 4、 函数极值的数值求解 fminbnd fminserch 5、 常微分方程的数值求解 ode45 6、 矩阵和代数方程 求矩阵的秩:rank 迹:trace 行列式:det 阶梯矩阵变换:rref A矩阵零空间的全部正交基:null A矩阵值空间的全部正交基:orth A矩阵的特征值,特征向量分解:eig 7、 一般代数方程的解 一元函数零点指令:fzero 解非线性方程组:fsolve 数值微积分 (1)重视有限精度浮点表示的离散本质,不要贸然自行编写数值计算程序进行求导和求极限运算 (2)数值导数一定要求取,自变量的增量大于原数据精度的10倍以上。 (3)解极限值,积分,微分方程数值计算时,要尽量使用MATLAB提供的指令,严格遵守指令的使用规则。 特别说明: MATLAB没有提供数值求导和极限的指令。 其中概念法求差分 dx=diff(X)求差分 FX=gradient(F) [FX,FY]=gradient(F) 近似数值极限及导数 在数值法近似求极限和理论有时可能不一致(举例说明),数值法求极限轻易不用 【例4.1-1】设试用机器零阈值eps替代理论0计算极限 理论分析: %不可信的极限的数值近似计算 x=eps; L1=(1-cos(2*x))/(x*sin(x)), % L2=sin(x)/x, % L1 = 0 L2 = 1 %可信的极限的符号计算 syms t f1=(1-cos(2*t))/(t*sin(t)); f2=sin(t)/t; Ls1=limit(f1,t,0) Ls2=limit(f2,t,0) Ls1 = 2 Ls2 = 1 【例4.1-2】已知x=sin(t),求该函数在区间[0 2pi]中的近似导函数。 本例考察的是,在将连续信号进行离散化时,采样间隔影响导函数。 (1)计算数值导数时,自变量的额增量取得过小(在eps数量级) d=pi/100; t=0:d:2*pi; x=sin(t); dt=5*eps; %增量为eps x_eps=sin(t+dt); dxdt_eps=(x_eps-x)/dt; %以dt=5*eps为增量算得的数值导数 plot(t,x,LineWidth,5) hold on plot(t,dxdt_eps) hold off legend(x(t),dx/dt) xlabel(t) 图 4.1-1 增量过小引起有效数字严重丢失后的毛刺曲线 (2)计算数值导数时,自变量的增量取得适当 x_d=sin(t+d); dxdt_d=(x_d-x)/d; %以d=pi/100为增量得的数值导数 plot(t,x,LineWidth,5) hold on plot(t,dxdt_d) hold off legend(x(t),dx/dt) xlabel(t) 图 4.1-2 增量适当所得导函数比较光滑 现象差距合理解释 如果dt步长太小,f(t+dt)与f(t)数值十分接近,它们的高维有效数字完全相同。f(t+dt)与f(t)差高位有效数字消失,导致精度急剧下降。 【例4.1-3】已知x=sin(t),采用diff和gradient计算该函数在区间[0 2*pi]中的近似导数 clf d=pi/100; % t=0:d:2*pi; x=sin(t); dxdt_diff=diff(x)/d; % dxdt_grad=gradient(x)/d; % subplot(1,2,1) plot(t,x,b) hold on plot(t,dxdt_grad,m,LineWidth,8) plot(t(1:end-1),dxdt_diff,.k,MarkerSize,8) axis([0,2*pi,-1.1,1.1]) title([0, 2\pi]) legend(x(t),dxdt_{grad},dxdt_{diff},Location,North) xlabel(t),box off hold off subplot(1,2,2) kk=(length(t)-10):length(t);%t hold on plot(t(kk),dxdt_grad(kk),om,MarkerSize,8) plot(t(kk-1),dxdt_diff(kk-1),.k,MarkerSiz

文档评论(0)

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

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

1亿VIP精品文档

相关文档