1.简单举例.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
MATLAB 特色举例考虑两个矩阵 A 和 B 的乘积问题,在 C 语言中要实现两个矩阵的乘积并不仅仅是一组双重循环的问题。双重循环当然是矩阵乘积所必需的,除此之外要考虑的问题很多。例如:A 和 B 有一个是复数矩阵怎么考虑;其中一个是复数矩阵时怎么考虑;全部是实系数矩阵时又怎么管理;这样就要在一个程序中有 4 个分支,分别考虑这 4 种情况。然后还得判断这两个矩阵是否可乘。而考虑两个矩阵是否可乘也并不仅仅是判断 A 的列数是否等于 B 的行数这么简单。其中一个若为标量,则它们可以无条件地相乘。其中有标量时又得考虑实数与复数的问题等。所以说,没有几十分钟的时间,用 C 语言并不可能编写出考虑各种情况的子程序。有了 MATLAB 这样的工具,A 和 B 矩阵的乘积用 A*B 这样简单的算式就能表示了。 〖例 1-1〗矩阵生成与运算。考虑金庸作品中经常提及的一个“数学问题”, 该问题用半数学语言描述就是:如何生成一个 3x3 矩阵, 并将自然数 1, 2, ..., 9 分别置成这 9 个矩阵元素,才能使得每一行、每一列、且主、反对角线上元素相加都等于一个相同的数。 ? 这样的矩阵称为“魔方矩阵”。用 MATLAB 的 magic() 函数,我们可以由下面的命令立即生成这样的矩阵: ? ? A=magic(3) ?A = ??? 8?? 1?? 6 ??? 3?? 5?? 7 ??? 4?? 9?? 2 还可以由 B=magic(10) 一次生成 10x10 的魔方矩阵。如果想求出矩阵的行列式和特征值,可以分别由 det(B) 与 eig(B) 立即得出结果,而同样的工作在 C 下并不是很简单就可以得出的,算法选择不好,还可能得出错误的结果。 〖例 1-2〗考虑一个二元函数 如何用三维图形的方式表现出这个曲面? ? 用 C 这类语言,绘制图形是一个难点,且从一个机器移植程序到另一个机器,大部分调试程序时间都花在这上。但使用 MATLAB 这类高级语言,完成这样的工作就是几个直观语句的事。且得出的图形美观准确、可以将语句毫不变化地移植到另外的机器上,得出完全一致的结果,如下所示。 ? [x,y] = meshgrid(-3:1/8:3); ??? z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2)- 10*(x/5 - x.^3 - y.^5)... ????? .*exp(-x.^2-y.^2)- 1/3*exp(-(x+1).^2 - y.^2); ??? surf(x,y,z), shading interp; colorbar 图! 〖例 1-3〗微分方程的数值解法是在科学与工程计算中经常遇到的问题。假设著名的 Lorenz 模型的状态方程表示为: 若令 且初值为,? 为一个小常数,假设 则我们可以由下面的几个语句就可以描述微分方程: function xdot = lorenzeq(t,x) xdot=[-8/3*x(1)+x(2)*x(3); ????? -10*x(2)+10*x(3); ????? -x(1)*x(2)+28*x(2)-x(3)]; 这样下面几个语句就能求解该微分方程,绘制出时间曲线与相空间曲线,如下所示。 t_final=100; x0=[0;0;1e-10]; ?? [t,x]=ode45(lorenzeq,[0,t_final],x0); ?? plot(t,x), ?? figure; plot3(x(:,1),x(:,2),x(:,3)); axis([10 40 -20 20 -20 20]); 图! 〖例 1-5 〗(注,这里的编号采用作者书中的序号) 设有解析函数,利用 MATLAB 的符号运算工具箱可以对该函数进行解析推导,得出诸如高阶导数、积分、Taylor 幂级数展开等。 syms x; f=x^2*(sin(x))^2; diff(f); f1=simple(ans) f1 = ?? x-x*cos(2*x)+x^2*sin(2*x) diff(f,x,2); f2=simple(ans) f2 = ?? 1-cos(2*x)+4*x*sin(2*x)+2*x^2*cos(2*x) diff(f,x,3); f3=simple(ans) f3 = ?? 6*sin(2*x)+12*x*cos(2*x)-4*x^2*sin(2*x) diff(f,x,4); f4=simple(ans) f4 = ?? 24*cos(2*x)-32*x*sin(2*x)-8*x^2*cos(2*x) int(f4,x) ans = ? 6*sin(2*x)+12*x*cos(2*x)-4*x^2*sin(2*x) taylor(x^2*

文档评论(0)

ww90055 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档