《2022年MATLAB入门教程.docx》由会员分享,可在线阅读,更多相关《2022年MATLAB入门教程.docx(28页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品学习资源欢迎下载精品学习资源1-1、基本运算与函数MATLAB 入门教程1MATLAB的基本学问欢迎下载精品学习资源在 MATLAB 下进行基本数学运算 ,只需将运算式直接打入提示号 ()之後,并按入 Enter键即可;例如: 5*2+1.3-0.8*10/25 ans =4.2000MATLAB会将运算结果直接存入一变数 ans,代表 MATLAB 运算後的答案( Answer)并显示其数值於萤幕上;小提示: 是 MATLAB 的提示符号( Prompt),但在 PC 中文视窗系统下,由於编码方式不同,此提示符号常会消逝不见,但这并不会影响到MATLAB 的运算结果;我们也可将上述运算式
2、的结果设定给另一个变数x: x = 5*2+1.3-0.8*102/25x = 42此时 MATLAB 会直接显示 x 的值;由上例可知 ,MATLAB 熟识全部一般常用到的加 (+)、减( -)、乘( * )、除( /)的数学运算符号,以及幂次运算( );小提示: MATLAB将全部变数均存成 double 的形式,所以不需经过变数宣告( Variabledeclaration);MATLAB同时也会自动进行记忆体的使用和回收,而不必像C 语言,必需由使用者一一指定 .这些功能使的 MATLAB易学易用,使用者可专心致力於撰写程式,而不 必被软体枝节问题所干扰;如不想让 MATLAB 每次都
3、显示运算结果,只需在运算式最後加上分号(;)即可,如下例:y = sin10*exp-0.3*42;如要显示变数 y 的值,直接键入 y 即可:yy =-0.0045在上例中, sin 是正弦函数, exp 是指数函数,这些都是 MATLAB 常用到的数学函数;下表即为 MATLAB 常用的基本数学函数及三角函数:小整理: MATLAB常用的基本数学函数absx:纯量的确定值或向量的长度anglez:复 数 z 的相角 Phase angle sqrtx:开平方realz:复数 z 的实部imagz:复数 z 的虚 部conjz:复数 z 的共轭复数roundx:四舍五入至最近整数fixx :
4、无论正负,舍去小数至最近整数floorx :地板函数,即舍去正小数至最近整数ceilx :天花板函数,即加入正小数至最近整数ratx:将实数 x 化为分数表示ratsx:将实数 x 化为多项分数开放欢迎下载精品学习资源signx:符号函数 Signum function;当 x0 时, signx=1; 小整理: MATLAB常用的三角函数sinx:正弦函数 cosx:馀弦函数 tanx:正切函数 asinx:反正弦函数 acosx:反馀弦函数 atanx:反正切函数atan2x,y:四象限的反正切函数sinhx:超越正弦函数 coshx:超越馀弦函数 tanhx:超越正切函数asinhx:反
5、超越正弦函数acoshx:反超越馀弦函数atanhx:反超越正切函数变数也可用来存放向量或矩阵,并进行各种运算,如下例的列向量(Row vector)运算: x = 1 3 5 2;y = 2*x+1y = 3 7 11 5小提示:变数命名的规章1.第一个字母必需是英文字母2.字母间不行留空格 3.最多只能有 19 个字母,MATLAB 会忽视多馀字母我们可以任凭更换、增加或删除向量的元素:y3 = 2 % 更换第三个元素y =3 7 2 5y6 = 10 % 加入第六个元素y = 3 7 2 5 0 10y4 = %删除第四个元素,y = 3 7 2 0 10在上例中, MATLAB 会忽视
6、全部在百分比符号( %)之後的文字,因此百分比之後的文字均可视为程式的注解( Comments);MATLAB亦可取出向量的一个元素或一部份来做运算 : x2*3+y4 %取出 x 的其次个元素和 y 的第四个元素来做运算ans = 9y2:4-1 % 取出 y 的其次至第四个元素来做运算ans = 6 1 -1在上例中, 2:4 代表一个由 2、3、4 组成的向量如对 MATLAB 函数用法有疑问,可随时使用 help 来寻求线上支援( on-line help): help linspace小整理: MATLAB的查询命令help:用来查询已知命令的用法;例如已知 inv 是用来运算反矩阵
7、,键入 help inv 即可得知有关 inv 命令的用法;(键入 help help 就显示 help 的用法,请试看看!) lookfor :用来查找未知的命令;例如要查找运算反矩阵的命令,可键入 lookfor inverse,MATLAB 即会列出全部和关键字 inverse 相关的指令;找到所需的命令後 ,即可用 help 进一步找出其用法 ;( lookfor 事实上是对全部在搜寻路径下的 M 档案进行关键字对第一注解行的比对,详见欢迎下载精品学习资源後叙;)将列向量转置( Transpose)後,即可得到行向量( Column vector): z = xz = 4.00005.
8、20006.40007.60008.800010.0000不论是行向量或列向量,我们均可用相同的函数找出其元素个数、最大值、最小值等:lengthz % z 的元素个数ans = 6maxz % z 的最大值ans = 10minz % z 的最小值ans =4小整理:适用於向量的常用函数有: minx:向量 x 的元素的最小值maxx: 向量 x 的元素的最大值meanx: 向量 x 的元素的平均值medianx: 向量 x 的元素的中位数stdx: 向量 x 的元素的标准差diffx:向量 x 的相邻元素的差sortx: 对向量 x 的元素进行排序( Sorting) lengthx: 向
9、量 x 的元素个数normx: 向量 x 的欧氏( Euclidean)长度sumx: 向量 x 的元素总和prodx: 向量 x 的元素总乘积cumsumx: 向量 x 的累计元素总和cumprodx: 向量 x 的累计元素总乘积dotx, y: 向量 x 和 y 的内 积crossx, y: 向量 x 和 y 的外积 (大部份的向量函数也可适用於矩阵,详见下述;)如要输入矩阵,就必需在每一列结尾加上分号(;) ,如下例:A = 1 2 3 4; 5 6 7 8; 9 10 11 12; A =12345678910 1112同样地,我们可以对矩阵进行各种处理: A2,3 = 5 % 转变位
10、於其次列,第三行的元素值A =12345658910 1112B = A2,1:3 % 取出部份矩阵 B B = 5 6 5A = A B %将 B 转置後以行向量并入 A A =欢迎下载精品学习资源1234556586910 11125A :, 2 = A =%删除其次行(:代表全部列)13455586911 125A = A; 4 3 2 1 %加入第四列A =134555869111254321A1 4, : = %删除第一和第四列(:代表全部行)A =5586911125这几种矩阵处理的方式可以相互叠代运用,产生各种意想不到的成效,就看各位的巧思和创意;小提示:在 MATLAB 的内部
11、资料结构中 ,每一个矩阵都是一个以行为主 ( Column-oriented ) 的阵列(Array )因此对於矩阵元素的存取,我们可用一维或二维的索引( Index)来定址;举例来说,在上述矩阵 A 中,位於其次列、第三行的元素可写为A2,3 (二维索引)或A6 (一维索引,即将全部直行进行堆叠後的第六个元素) ;此外,如要重新支配矩阵的形状,可用reshape命令:B = reshapeA, 4, 2 % 4是新矩阵的列数, 2 是新矩阵的行数B =5891256115小提示: A: 就是将矩阵 A 每一列堆叠起来,成为一个行向量,而这也是MATLAB 变数的内部储存方式;以前例而言, r
12、eshapeA, 8, 1和 A: 同样都会产生一个 8x1 的矩阵;MATLAB可在同时执行数个命令,只要以逗号或分号将命令隔开:x = sinpi/3; y = x2; z = y*10,z = 7.5000如一个数学运算是太长,可用三个句点将其延长到下一行:z = 10*sinpi/3* . sinpi/3;如要检视现存於工作空间( Workspace)的变数,可键入 who: whoYour variables are:testfile x这些是由使用者定义的变数;如要知道这些变数的详细资料,可键入:whosName Size Bytes Class A 2x4 64 double a
13、rray B 4x2 64 double array ans 1x1 8 double array x 1x1 8 double array欢迎下载精品学习资源y 1x1 8 double array z 1x1 8 double arrayGrand total is 20 elements using 160 bytes 使用 clear 可以删除工作空间的变数: clear AA. Undefined function or variable A.另外 MATLAB 有些永久常数( Permanent constant)s,虽然在工作空间中看不到,但使用者可直接取用,例如:pians =
14、 3.1416下表即为 MATLAB 常用到的永久常数;小整理: MATLAB的永久常数 i 或 j:基本虚数单位eps:系统的浮点( Floating-point)精确度inf :无限大, 例如 1/0 nan 或 NaN:非数值( Not a number) ,例如 0/0pi:圆周率 p(= 3.1415926.) realmax:系统所能表示的最大数值realmin:系统所能表示的最小数值nargin: 函数的输入引数个数nargin: 函数的输出引数个数1-2、重复命令最简洁的重复命令是 forfor-loop ),其基本形式为: for 变数 = 矩阵;运算式;end其中变数的值会
15、被依次设定为矩阵的每一行,来执行介於for 和 end 之间的运算式;因此 ,如无意外情形,运算式执行的次数会等於矩阵的行数;举例来说,以下命令会产生一个长度为6 的调和数列( Harmonic sequence): x = zeros1,6; % x 是一个 16 的零矩阵for i = 1:6, xi = 1/i; end在上例中,矩阵 x 最初是一个 16 的零矩阵,在 fori 的值依次是 1 到 6,因此矩阵 x 的第 i 个元素的值依次被设为1/i;我们可用分数来显示此数列:format rat % 使用分数来表示数值dispx1 1/2 1/3 1/4 1/5 1/6for 圈可
16、以是多层的,下例产生一个16 的 Hilbert 矩阵 h,其中为於第 i 列、第 j 行的元素为h = zeros6;for i = 1:6, for j = 1:6,hi,j = 1/i+j-1; endend disph1 1/2 1/3 1/4 1/5 1/61/2 1/3 1/4 1/5 1/6 1/71/3 1/4 1/5 1/6 1/7 1/81/4 1/5 1/6 1/7 1/8 1/9欢迎下载精品学习资源1/5 1/6 1/7 1/8 1/9 1/101/6 1/7 1/8 1/9 1/10 1/11小提示:预先配置矩阵在上面的例子,我们使用 zeros来预先配置( Allo
17、cate)了一个适当大小的矩阵;如不预先配置矩阵,程式仍可执行,但此时MATLAB需要动态地增加(或减小)矩阵的大小,因而降低程式的执行效率;所以在使用一个矩阵时,如能在事前知道其大小,就最好先使用 zeros或 ones等命令来预先配置所需的记忆体(即矩阵)大小;在下例中, forHilbert 矩阵的每一行的平方和:for i = h,dispnormi2; %印出每一行的平方和end1299/871282/551650/2343524/2933559/4431831/8801在上例中,每一次i 的值就是矩阵h 的一行,所以写出来的命令特别简洁;另一个常用到的重复命令是 while whi
18、le 条件式;运算式;end也就是说,只要条件示成立,运算式就会一再被执行;例如从前产生调和数列的例子,我们可用 whilex = zeros1,6; % x 是一个 16 的零矩阵i = 1;while i 0.5,dispGiven random number is greater than 0.5.; endGiven random number is greater than 0.5.1-4 、集合多个命令於一个 M 档案如要一次执行大量的 MATLAB 命令,可将这些命令存放於一个副档名为 m 的档案,并在MATLAB 提示号下键入此档案的主档名即可 ;此种包含 MATLAB 命令的
19、档案都以 m 为副档名,因此通称 M 档案(M-files );例如一个名为 test.m的 M 档案,包含一连串的 MATLAB 命令,那麽只要直接键入 test,即可执行其所包含的命令:pwd % 显示现在的目录ans =欢迎下载精品学习资源D:MATLAB5bincd c:datamlbook % 进入 test.m所在的目录type test.m % 显示 test.m 的内容% This is my first test M-file.% Roger Jang, March 3, 1997 fprintfStart of test.m.n;for i = 1:3,fprintfi =
20、 %d - i3 = %dn, i, i3; endfprintfEnd of test.m.n;test % 执行 test.m Start of test.m.i = 1 - i3 = 1 i = 2 - i3 = 8i = 3 - i3 = 27End of test.m.小提示:第一注解行( H1 help line) test.m的前两行是注解 ,可以使程式易於明白与治理;特别要说明的是,第一注解行通常用来简短说明此M 档案的功能,以便 lookfor 能以关键字比对的方式来找出此 M 档案;举例来说, test.m的第一注解行包含 test这个字,因此假如键入 lookfor te
21、st,MATLAB 即可列出全部在第一注解行包含test 的 M 档案,因而 test.m 也会被列名在内;严格来说, M 档案可再细分为命令集( Scripts)及函数( Functions);前述的 test.m 即为命令集,其效用和将命令逐一输入完全一样,因此如在命令集可以直接使用工作空间的变数,而且在命令集中设定的变数,也都在工作空间中看得到;函数就需要用到输入引数( Input arguments)和输出引数( Output arguments)来传递资讯,这就像是 C 语言的函数 ,或是 FORTRAN 语言的副程序( Subroutines);举例来说,如要运算一个正整数的阶乘(
22、 Factorial),我们可以写一个如下的 MATLAB 函数并将之存档於 fact.m: function output = factn% FACT Calculate factorial of a given positive integer.output = 1; for i = 1:n,output = output*i; end其中 fact 是函数名, n 是输入引数, output 是输出引数,而 i 就是此函数用到的暂时变数;要使用此函数,直接键入函数名及适当输入引数值即可:y = fact5y = 120(当然,在执行 fact 之前,你必需先进入 fact.m 所在的目录
23、;)在执行fact5时, MATLAB会跳入一个下层的暂时工作空间( Temperary workspace),将变数 n 的值设定为 5,然後进行各项函数的内部运算,全部内部运算所产生的变数(包含输入引数n、暂时变数 i,以及输出引数 output)都存在此暂时工作空间中;运算完毕後,MATLAB 会将最後输出引数 output 的值设定给上层的变数y,并将清除此暂时工作空间及其所含的全部变数;换句话说,在呼叫函数时,你只能经由输入引数来把握函数的输入,经由输出引数来得到函数的输出 ,但全部的暂时变数都会随着函数的终止而消逝 ,你并无法得到它们的值 ;小提示:有关阶乘函数 前面(及後面)用到
24、的阶乘函数只是纯粹用来说明MATLAB 的函数观念;照实际要运算一个正整数n 的阶乘(即 n.)时,可直接写成 prod1:n,或是直接呼叫 gamma函数: gamman-1;MATLAB 式的( Recursive),也就是说,一个函数可以呼叫它本身;举例来说, n. = n*n-1. ,因此前面的阶乘函数可以改成递式的写法:function output = factn欢迎下载精品学习资源% FACT Calculate factorial of a given positive integer recursively. if n = 1, % Terminating condition
25、output = 1; return; endoutput = n*factn-1;在写一个递函数时,确定要包含终止条件(Terminating condition),否就此函数将会一再呼叫自己,永久不会停止,直到电脑的记忆体被耗尽为止;以上例而言,n=1 即中意终止条件,此时我们直接将 output 设为 1,而不再呼叫此函数本身;1-5 、搜寻路径在前一节中, test.m 所在的目录是 d:mlbook;假如不先进入这个目录, MATLAB 就找不到你要执行的 M 档案;假如期望 MATLAB 不论在何处都能执行 test.m,那麽就必需将d:mlbook 加入 MATLAB的搜寻路径(
26、 Search path)上;要检视 MATLAB 的搜寻路径, 键入 path 即可:path MATLABPATHd:matlab5toolboxmatlabgeneral d:matlab5toolboxmatlabops d:matlab5toolboxmatlablang d:matlab5toolboxmatlabelmat d:matlab5toolboxmatlabelfun d:matlab5toolboxmatlabspecfun d:matlab5toolboxmatlabmatfun d:matlab5toolboxmatlabdatafun d:matlab5tool
27、boxmatlabpolyfun d:matlab5toolboxmatlabfunfun d:matlab5toolboxmatlabsparfun d:matlab5toolboxmatlabgraph2d d:matlab5toolboxmatlabgraph3d d:matlab5toolboxmatlabspecgraph d:matlab5toolboxmatlabgraphics d:matlab5toolboxmatlabuitools d:matlab5toolboxmatlabstrfun d:matlab5toolboxmatlabiofun d:matlab5toolb
28、oxmatlabtimefun d:matlab5toolboxmatlabdatatypes d:matlab5toolboxmatlabdde d:matlab5toolboxmatlabdemos d:matlab5toolboxtour d:matlab5toolboxsimulinksimulink d:matlab5toolboxsimulinkblocks d:matlab5toolboxsimulinksimdemos d:matlab5toolboxsimulinkdee d:matlab5toolboxlocal此搜寻路径会依已安装的工具箱 ( Toolboxes)不同而有
29、所不同;要查询某一命令是在搜寻路径的何处,可用 which 命令:which expo d:matlab5toolboxmatlabdemosexpo.m很明显 c:datamlbook 并不在 MATLAB 的搜寻路径中,因此 MATLAB 找不到 test.m这个M 档案:which test欢迎下载精品学习资源c:datamlbooktest.m要将 d:mlbook 加入 MATLAB 的搜寻路径,仍是使用path 命令: pathpath, c:datamlbook;此时 d:mlbook 已加入 MATLAB 搜寻路径(键入 path 试看看),因此 MATLAB 已经 看得到te
30、st.m:which test c:datamlbooktest.m现在我们就可以直接键入 test,而不必先进入 test.m 所在的目录;小提示:如何在其启动 MATLAB 时,自动设定所需的搜寻路径?假如在每一次启动MATLAB後都要设定所需的搜寻路径,将是一件很麻烦的事;有两种方法,可以使MATLAB启动後 ,即可载入使用者定义的搜寻路径:1. MATLAB 的预设搜寻路径是定义在 matlabrc.m(在 c:matlab 之下,或是其他安装MATLAB的主目录下),MATLAB每次启动後,即自动执行此档案;因此你可以直接修改 matlabrc.m ,以加入新的目录於搜寻路径之中;2
31、. MATLAB 在执行 matlabrc.m 时,同时也会在预设搜寻路径中查找 startup.m,如此档案存在,就执行其所含的命令;因此我们可将全部在MATLAB 启动时必需执行的命令(包含更换搜寻路径的命令) ,放在此档案中;每次 MATLAB 遇到一个命令(例如 test)时,其处置程序为:1. 将 test 视为使用者定义的变数;2. 如 test 不是使用者定义的变数,将其视为永久常数;3. 如 test 不是永久常数,检查其是否为目前工作目录下的M 档案;4. 如不是,就由搜寻路径查找是否有test.m 的档案;5. 如在搜寻路径中找不到,就 MATLAB会发出哔哔声并印出错误讯
32、息;以下介绍与 MATLAB 搜寻路径相关的各项命令;1-6 、资料的储存与载入有些运算旷日废时,那麽我们通常期望能将运算所得的储存在档案中,以便将来可进行其他处理; MATLAB储存变数的基本命令是save,在不加任何选项( Options)时, save会将变数以二进制( Binary)的方式储存至副档名为 mat 的档案,如下述: save:将工作空间的全部变数储存到名为matlab.mat 的二进制档案;save filename:将工作空间的全部变数储存到名为filename.mat 的二进制档案; save filename x y z :将变数 x、y、z 储存到名为 filen
33、ame.mat 的二进制档案;以下为使用 save命令的一个简例:who % 列出工作空间的变数Your variables are:B h j y ans i x zsave test B y % 将变数 B 与 y 储存至 test.matdir % 列显现在目录中的档案. 2plotxy.doc fact.m simulink.doc test.m $1basic.doc. 3plotxyz.doc first.doc temp.doc test.mat 1basic.doc book.dot go.m template.doc testfile.dat delete test.mat
34、% 删除 test.mat以二进制的方式储存变数,通常档案会比较小,而且在载入时速度较快,但是就无法用普通的文书软体(例如 pe2 或记事本)看到档案内容;如想看到档案内容,就必需加上-ascii选项,详见下述:欢迎下载精品学习资源save filename x -ascii:将变数 x 以八位数存到名为 filename 的 ASCII 档案;Save filename x -ascii -double:将变数 x 以十六位数存到名为 filename 的 ASCII 档案;另一个选项是 -tab,可将同一列相邻的数目以定位键( Tab)隔开;小提示:二进制和 ASCII 档案的比较 在 s
35、ave命令使用 -ascii 选项後,会有以下现象 :save命令就不会在档案名称後加上mat 的副档名;因此以副档名 mat 结尾的档案通常是 MATLAB 的二进位资料档;如非有特别需要,我们应当尽量以二进制方式储存资料;load 命令可将档案载入以取得储存之变数:load filename: load 会查找名称为 filename.mat 的档案,并以二进制格式载入;如找不到filename.mat,就查找名称为 filename 的档案,并以 ASCII 格式载入; load filename -ascii: load 会查找名称为 filename 的档案,并以 ASCII 格式载
36、入;如以 ASCII 格式载入,就变数名称即为档案名称(但不包含副档名);如以二进制载入,就可保留原有的变数名称,如下例: clear all; % 清除工作空间中的变数x = 1:10;save testfile.dat x -ascii % 将 x 以 ASCII 格式存至名为 testfile.dat 的档案load testfile.dat % 载入 testfile.datwho % 列出工作空间中的变数Your variables are:testfile x留意在上述过程中,由於是以 ASCII 格式储存与载入,所以产生了一个与档案名称相同的变数 testfile,此变数的值和原
37、变数 x 完全相同;1-7 、终止 MATLAB有三种方法可以终止 MATLAB :1.键入 exit 2.键入 quit3.直接关闭 MATLAB的命令视窗( Command window)2. 数值分析2.1 微分diff 函数用以演算一函数的微分项,相关的函数语法有以下4 个:difff传回 f 对预设独立变数的一次微分值difff,t传回 f 对独立变数 t 的一次微分值difff,n传回 f 对预设独立变数的 n 次微分值difff,t,n传回 f 对独立变数 t 的 n 次微分值数值微分函数也是用 diff ,因此这个函数是靠输入的引数准备是以数值或是符号微分,假如引数为向量就执行
38、数值微分,假如引数为符号表示式就执行符号微分;先定义以下三个方程式,接著再演算其微分项:S1 = 6*x3-4*x2+b*x-5;S2 = sina;S3 = 1 - t3/1 + t4;diffS1 ans=18*x2-8*x+bdiffS1,2ans= 36*x-8diffS1,b ans= xdiffS2欢迎下载精品学习资源ans= cosadiffS3ans=-3*t2/1+t4-4*1-t3/1+t42*t3simplifydiffS3ans= t2*-3+t4-4*t/1+t422.2 积分int 函数用以演算一函数的积分项,这个函数要找出一符号式F 使得 diffF=f ;假如积
39、分式的解析式analytical form, closed form 不存在的话或是 MATLAB 无法找到,就 int 传回原输入的符号式;相关的函数语法有以下4 个:intf传回 f 对预设独立变数的积分值intf,t传回 f 对独立变数 t 的积分值intf,a,b 传回 f 对预设独立变数的积分值,积分区间为 a,b,a 和 b 为数值式intf,t,a,b 传回 f 对独立变数 t 的积分值,积分区间为 a,b,a 和 b 为数值式intf,m,n传回 f 对预设变数的积分值,积分区间为 m,n ,m 和 n 为符号式我们示范几个例子:S1 = 6*x3-4*x2+b*x-5;S2
40、= sina;S3 = sqrtx;intS1ans= 3/2*x4-4/3*x3+1/2*b*x2-5*xintS2 ans= -cosaintS3ans= 2/3*x3/2intS3,a,bans= 2/3*b3/2- 2/3*a3/2intS3,0.5,0.6ans= 2/25*151/2-1/6*21/2numericintS3,0.5,0.6 % 使用 numeric 函数可以运算积分的数值ans= 0.07412.3 求解常微分方程式MATLAB解常微分方程式的语法是 dsolveequation,condition,其中 equation 代表常微分方程式即 y=gx,y ,且须
41、以 Dy 代表一阶微分项 yD2y 代表二阶微分项 y, condition 就为初始条件;假设有以下三个一阶常微分方程式和其初始条件y=3x2, y2=0.5 y=2.x.cosy2, y0=0.25y=3y+exp2x, y0=3对应上述常微分方程式的符号运算式为:soln_1 = dsolveDy = 3*x2,y2=0.5 ans= x3-7.500000000000000ezplotsoln_1,2,4 % 看看这个函数的长相soln_2 = dsolveDy = 2*x*cosy2,y0 = pi/4 ans= atanx2+1soln_3 = dsolveDy = 3*y + e
42、xp2*x, y0 = 3ans= -exp2*x+4*exp3*x2.4 非线性方程式的实根要求任一方程式的根有三步骤:欢迎下载精品学习资源先定义方程式;要留意必需将方程式支配成fx=0 的形状,例如一方程式为 sinx=3,就该方程式应表示为 fx=sinx-3 ;可以 m-file定义方程式;代入适当范畴的x, yx 值,将该函数的分布图画出,藉以明白该方程式的长相 ;由图中准备 yx 在何处邻近 x0与 x 轴相交, 以 fzero 的语法 fzerofunction,x0 即可求出在 x0 邻近的根,其中 function 是从前已定义的函数名称;假如从函数分布图看出根不只一个,就须
43、再代入另一个在根邻近的 x0,再求出下一个根;以下分别介绍几数个方程式,来说明如何求解它们的根;例一、方程式为sinx=0我们知道上式的根有 ,求根方式如下: r=fzerosin,3 % 由于 sinx是内建函数,其名称为sin,因此无须定义它 ,选择 x=3 邻近求根r=3.1416 r=fzerosin,6 % 选择 x=6 邻近求根r = 6.2832例二、方程式为 MATLAB内建函数 humps,我们不必要知道这个方程式的形状为何,不过我们可以将它划出来,再找出根的位置;求根方式如下: x=linspace-2,3; y=humpsx; plotx,y, grid %由图中可看出在 0 和 1 邻近有二个根 r=fzerohumps,1.2 r = 1.2995例三、方程式为 y=x.3-2*x-5这个方程式其实是个多项式,我们说明除了用roots 函数找出它的根外,也可以用这节介绍的方法求根,留意