




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、- PAGE 52 -Matlab 与数学实验讲义第一章Matlab 初步Matlab 是 Mathworks 公司于 1984 年推出的数值计算软件.其三大核心功能为:数值计算符号计算绘图能够在很多领域进行应用,如:数值分析数值和符号计算工程与科学绘图控制系统的设计与仿真数字图像处理技术数字信号处理技术通讯系统设计与仿真财务与金融工程第一节Matlab 的界面与运行一、Matlab 的界面Matlab 的界面上共有五个窗口:1、命令窗口(Commandwindow)在命令窗口中可以直接输入命令,以实现计算或绘图的功能.2、起始面板(Launch Pad)该窗口中显示 Matlab 总包和已安
2、装的工具箱的帮助、演示、GUI 工具和产品主页 4 个方面的内容.3、工作空间(workspace)该窗口显示当前 Matlab 的内存中使用变量的信息,包括变量名、变量数组大小,变量字节大小和变量类型.可以双击变量名,打开数组编辑器窗口(ArrayEditor),显示变量的具体内容,也可以修改数据.4、命令历史(CommandHistory)该窗口显示所有执行过的命令.其作用在于:查看曾经执行的命令;重复利用原来输入的命令行.在命令历史窗口中直接双击命令,就可以执行该命令行.5、当前目录(CurrentDirectory)该窗口显示当前工作目录下所有文件的文件名、文件类型和最后修改时间 .可
3、以在窗口上方的小窗口中修改工作目录.二、Matlab 的运行方式两种运行方式:1、命令行方式在命令窗口中输入命令,按回车键程序将运行.这种方式的缺点是难以处理比较复杂的问题和有大量数据的问题.2、M 文件方式M 文件方式是指一个以 m 为扩展名的 M 文件中输入一系列命令和数据,然后让 Matlab 来执行.建立 M 文件的步骤为:点击 FileNew M-file;在 M 文件编辑窗口中输入程序内容;点 File Save,以 m 为扩展名存盘.注意:1、M 文件名有两种类型:脚本 M 文件和函数 M 文件.其中函数 M 文件的文件名必须与函数名一致(在后面将具体讲解).2、M 文件可以在命
4、令行中随时调用执行,也可以在 M 文件编辑窗口中的Debug菜单中选择 Run 执行.第二节简单数学运算一、运算表加法运算,适用于两个数或两个同阶矩阵相加.减法运算*乘法运算.*点乘运算,用于数组(或矩阵)之间的运算,表示对应元素相乘/除法运算./点除运算,用于数组(或矩阵)之间的运算,表示对应元素相除乘幂运算.点乘幂运算,用于数组(或矩阵)之间的运算,表示对应元素作幂运算反斜杠表示左除,用于矩阵之间的运算在计算中“( )”表示运算优先级。 1 11 4 1例 1 作数学运算: 4 100 2 83 2 9 9 100(1/4)*(1/9)(-1/2)+8(-1/3)*(4/9)(1/2)%表
5、示回车键注意:命令中的%及其后面的内容不必输入,它是对命令的解释和说明。二、数学函数Matlab 提供了若干函数,在编写程序时可以直接按照以下格式调用,注意其中的括号不能省略.函数名称函数名称abs(x)x 绝对值sqrt(x)开平方exp(x)以 e 为底的指数log(x)自然对数log2(x)以 2为 底的数log10(x)以 10 为底的数min(x)最小值max(x)最大值sum(x)元素的总和sign(x)符号函数rem(x,y)x 除以y 的余数fix(x)取整round(x)最接近 x 的整gcd(x,y)整数 x,y 的最大公因数数g,c,d=gcd(x,y)求 g,c,d 满
6、足lcm(x,y)整数 x,y 的最小公倍g=cx+dy数sin(x)正弦函数asin(x)反正弦函数cos(x)余弦函数acos(x)反余弦函数反 正tan(x)正切函数atan(x)切数sinh(x)双曲正弦asinh(x)反双曲正弦cosh(x)双曲余弦acosh(x)反双曲余弦tanh(x)双曲正切atanh(x)反双曲正切real(z)复数 z 的实部imag(z)复数 z 的虚部abs(z)复数 z 的模conj(z)复数 z 的共轭angle(z)复数 z 的幅角factorial(n)求 n 的阶乘combntns(x,m)perms(x)nchoosek(n,m) prod(
7、n:m)列举出从 n 个元素中取出 m 个元素的组合。其中,x 是含有 n 个元素的向量给出向量 x 的所有排列从 n 各元素中取 m 个元素的所有组合数求排列数:m*(m-1)*(m-2)*(n+1)*n1例 2、作数学运算sin 24 e3 3ln(2 5) 10sin(1/10)+24+exp(3)+3*log(2+sqrt(5) 三、Matlab 中的数1、实数Matlab 中的实数只有一种数据格式,那就是双精度数值,其有效值是十进制16 位,范围是 10 的308 次幂,即实数有七种显示格式,以 为例,见下表:Matlab 命令显 示 形 式说明2.225110 3081.79771
8、0+308formatlong3.1415926535897916位十进制数format elong3.14159265358979e+016位十进制加指数format eshort3.1416e+0005位十进制数加指数formatshort3.1416二位整数, 四位小数formatbank3.14两位小数formathex400921fb54442d1816位十六进制数formatrat355 / 113有理数分数近似Matlab 在默认情况下以 format short 格式显示.2、复数虚数符号 Matlab 启动时定为 i,j,连写在数字后面可以不用乘号 .例如a=1+2i,b=c
9、os(2)+sin(2)*i如果用户在程序中另外給 i,j 赋值,则它们的虚数意义就失效.例 3在不同的数据显示显示下计算 5+sin75+sin(7) ans=5.6570format rat5+sin(7) ans=3117/551format long5+sin(7) ans= 5.65698659871879第三节变量一、变量Matlab 中参与计算的数据需要存放在一个储存空间中,每个储存空间都给予一个名称,就是变量的名称。Matlab 中变量的命名规则是:变量名必须是不含空格的单个词;变量名区分大小写;变量名最多不超过 19 个字符;变量名必须以字母打头;变量名中不允许使用标点符号;
10、不要使用内部函数名。变量赋值格式:变量名=数给变量赋值时满足新值代替旧值的规则.二、特殊变量(常量)在 Matlab 中一些特殊的变量,如下:特殊变量ans pi eps flops inf NaN i,jnargin nargout realminrealmax取值用于结果的缺省变量名圆周率计算机的最小数,和 1 相加时产生一个比 1 大的数浮点运算数无穷大,如 1/0不定量,如 0/0i=j=1所用函数的输入变量数目所用函数的输出变量数目最小可用正实数最大可用正实数三、常见基本操作:Matlab 命令who 变量名whosclearsave 变量名load clcshift +enter解
11、释查询变量的信息查询所有变量的信息删除所有变量保存指定变量载入数据文件中的变量察除所有命令换行编写命令,但不执行命令四、标点符号标点符号需要在英文状态下输入,常见的有,;%命令分隔符号,显示的结果命令分隔符号,不显示的结果它后面为注释文字()续行符号(使用时前面加空格)运算优先级例 1a=20;b=3;c=a+b,d=a*b运行结果:c =23d =60例 2 交换两个变量的取值a=1;b=2;c=a; a=b; b=c; a,b 运行结果:a =2b =1第四节符号运算数值运算是指实数之间的运算。在运算中,如果有变量不被赋值像字母一样运算,这种运算为符号运算.符号运算需要先将变量符号化。一、
12、创建符号变量命令格式 1:sym(变量)命令格式 2:syms变量 1变量 2变量 n例 1sqrt(2) ans =1.4142sqrt(sym(2) ans =2(1/2)二、创建符号表达式方法 1:sym(表达式)方法 2:先创建符号变量,再用符号变量及运算符表示表达式例 2建立符号表达式 ax2+by+c,并求 x=1,y=2 的值syms a b c x y u=a*x2+b*y+c, x=1;y=2;eval(u) 运行结果:u = a*x2+b*y+cans =a+2*b+c其中命令 eval 表示计算符号表达式的值,但并不改变 u 本身的值.三、符号表达式的运算1、四则运算与幂
13、运算与数值的运算一致.2、合并同类项命令格式:collect(S)%其中S 为符号表达式,以默认变量(离x 最近的变量)作为输出变量collect(S,v)%以变量 v 作为输出变量例 3syms x ys=x2*y+y*x-x2-2*x;collect(s) ans =(y-1)*x2+(y-2)*xcollect(s,y) ans =(x2+x)*y-x2-2*x3、因式分解命令格式:factor(S)说明:其中 S 为符号表达式.例 4 syms a b x y s=5*a*x+5*b*x+3*a*y+3*b*y; factor (s) ans = (a+b)*(5*x+3*y)4、符号
14、表达式的简化命令格式: simple(S)说明:其中 S 为符号表达式,有些时候要用两次.例 5syms xS=2*cos(x)2-1; simple(S) 运行结果:simplify: 2*cos(x)2-1 radsimp:2*cos(x)2-1 combine(trig):cos(2*x) factor:2*cos(x)2-1 expand:2*cos(x)2-1 combine:cos(2*x) convert(exp):2*(1/2*exp(i*x)+1/2/exp(i*x)2-1 convert(sincos):2*cos(x)2-1 convert(tan):2*(1-tan(1
15、/2*x)2)2/(1+tan(1/2*x)2)2-1 collect(x):2*cos(x)2-1 ans = cos(2*x)5、复合运算命令格式:compose(f,g) 计算 fg(x)例 6syms x f=1/(1+x2);g=sin(x);compose(f,g) ans =1/(1+sin(x)2)6、反函数运算命令格式:finverse(f) 或者 finverse(f,v)说明: finverse(f,v)中,返回变量为 v 的函数 f 的反函数,未指定时, 默认为 x.例 7syms x f=x2;finverse(f) Warning: finverse(x2) is
16、not unique. In D:matlabtoolboxsymbolicsymfinverse.m at line 43 ans =x(1/2)7、替换求值命令格式:subs(S,old,new)或者 subs(S, new)说明:将符号表达式 S 中的变量 old 用 new 代替.若没有指定变量 old,则默认将 x 代替为 new.例 8syms x y s=x2*y+x*sin(y); subs(s,x,2) ans =4*y+2*sin(y)subs(s,y,pi) ans = x2*pi四、符号型与数值型数据的显示命令格式 1:x=double(S)说明:显示符号表达式 S 的
17、双精度数值型数据,不改变 S 本身的值.命令格式 2:s=sym(x,选型)说明:显示数值型数据的符号型数据,不改变 x 本身的值. 选项可以是:r或f或e,它们分别表示有理数形式,双精度形式,指数显示.例 9a=sym(2/5) a = 2/5 double(a) ans =0.4000 sym(0.007,r) ans = 7/1000命令格式 3:vpa(S,n)%显示表达式 S 的 n 个有效数字,S 是符号型或数值型例 10 vpa(pi,20) ans = 3.1415926535897932385五、建立函数的 4 种方法Matlab 中常用的函数类型有 4 种,不同的命令适用不
18、同的函数,效果也不一样。1、函数 M 文件函数 M 文件是 M 文件类型之一,它的作用是定义新函数.函数 M 文件建立步骤如下:点击 FileNew M-file;在 M 文件编辑窗口中输入程序内容;点 File Save,以 m 为扩展名存盘,且文件名等于函数名.其中在 M 文件编辑窗口中,程序第一行格式为:function因变量名=函数名(自变量名)(x 120)2 1202下面各行为从自变量计算因变量的语句,并将最终结果赋给因变量.(x 20)2 1002例 11定义函数 f (x) 第一步建立函数:在 M 文件编辑窗口中输入程序: function yy=ff(x),并求 f (100
19、)yy=sqrt(x-20)2+1002)+sqrt(x-120)2+1202)以 ff.m 为文件名存盘.第二步计算在 Matlab 命令窗口中输入程序:ff(120) 2、符号函数符号函数就是关于自变量 x 的符号表达式例 12建立函数 y x2 x 1 ,并求当 x 1 时, y 的值。syms x y=x2+x+1; x=1;eval(y) ans =33、字符串函数字符串量本质上就是以符号量为元素的向量。例 13建立函数 y x2 x 1 ,并求当 x 1 时, y 的值。syms xy=x2+x+1;%y 是一个字符串量x=1;eval(y) ans =34、inline 函数建立
20、格式:函数名=inline(函数表达式,自变量 1,自变量 2)函数名=inline(函数表达式)%自变量默认为 x 注:inline 函数与函数 M 文件基本一致,优点在于更方便。例 14建立函数 y x2 x 1 ,并求当 x 1 时, y 的值。ff=inline(x2+x+1);ff(1) ans =3第五节数组与矩阵初步本节仅介绍数组与矩阵的创建和简单运算,其更深入的介绍见附录线性代数部分. Matlab 的基本运算单位是矩阵,即便是一般实数也是一行一列的矩阵, 所以对矩阵的处理很重要。一、基本概念定义:称 m 行 n 列的数表 aaa 11121n aaa21222n为矩阵,称 1
21、 行 n 列的数表aaam1m2mna , a 1n或者 n 行 1 列的数表 a 1 a n为数组(或向量)。数组是特殊的矩阵。二、创建1、数组的创建有两种方式:直接输入例 1x=1,2,3,5,-5,8 %元素之间也可以用空格隔开x =1235-58等差元素数组数组的元素构成等差数列,则使用下列命令:x=a:b%创建从 a 开始,以 1 为公差,到b 结束的行向量x=a:d:b%创建从 a 开始,以d 为公差,到b 结束的行向量x=linspace(a,b,n)%创建从 a 开始,到b 结束,有n 个元素的行向量例 2 a=2:5 a =2345b=2:3:10b =258 c=linsp
22、ace(1,5,3) c =1352、矩阵的创建逗号或空格用于分隔某一行的元素,分号用于区分不同的行. 除了分号,在输入矩阵时,按 Enter 键也表示开始新一行. 输入矩阵时,严格要求所有行有相同的列.例 3 A=1 2 3 4;5 6 7 8;9 10 11 12 B=111122223333 A =123456789101112B =111122223333三、运算设 a=a1,a2,an, c 是标量,则a+c=a1+c,a2+c,an+c a.*c=a1*c,a2*c,an*ca./c= a1/c,a2/c,an/c (右除) a.c= c/a1,c/a2,c/an (左除) a.c
23、= a1c,a2c,ancc.a= ca1,ca2,can 设 a=a1,a2,an, b=b1,b2,bn,则a+b= a1+b1,a2+b2,an+bn a.*b= a1*b1,a2*b2,an*bna./b= a1/b1,a2/b2,an/bn a.b=b1/a1,b2/a2,bn/an a.b=a1b1,a2b2,anbn矩阵之间的、.*、./、.运算与数组一致。凡点运算都是指对应元素分别运算。例 4 a=1,2,3;b=4,5,6;a+b,a.*b,a.bans =579ans =41018ans =132729 c=1,2,3;4,5,6;d=4,5,6;7,8,9;c+d,c.*
24、d,c.dans=579111315ans=41018284054ans=1327291638439062510077696四、元素的调用1、数组元素的调用x(i)%表示数组 x 的第 i 个元素.x(a,b,c)%表示数组 x 中第 a 个、第b 个、第c 个元素组成的数组2、矩阵元素的调用A(i)%表示矩阵 A 的第 i 个元素,矩阵元素的顺序为从第一列的元素开始计数,然后第二列,依次类推A(i,j)%表示矩阵 A 的第 i 行,第 j 列元素A(i,:)%表示矩阵 A 的第 i 行元素A(:,j)%表示矩阵 A 的第 j 列元素A(a:b,c:d)%表示矩阵 A 的第 a 行至第 b 行
25、,第 c 列至第 d 列组成的新矩阵第二章程序设计对于简单的问题,可以直接调用命令解决,但对于复杂一些,特别是计算过程较长的问题,就需要编程计算了。Matlab 可以像 c 语言一样进行程序编写和设计.关系操作符说明逻辑操作说明一、关系与逻辑符小于且大于否定=大于或等于= =等于=不等于利用关系与逻辑的符号,可以编写很多数学表达式.二、循环语句循环语句最好以 M 文件的方式编写和运行.1、for 循环命令格式: orx=数组命令串;end在for 和end 语句之间的命令串按数组中的每一列执行一次. 在每一次迭代中,x 被指定为数组的下一列,即在第 k 次循环中,x=数组中的第 k 个元素.n
26、例 1对 n=1,2,20,分别求 x = sin n 的值.10程序如下:forn=1:20 x(n)=sin(n*pi/10);% 将每一次的运算值付给向量的一个元素,以方便调用end x例 2求数列an 1 的前 100 项和。n2s=0;n=100;fork=1:ns=s+1/k2;end s运行结果:s =1.6350例 3建立一个求阶乘的函数 M 文件,并求10 1。(2n)!在 M 文件窗口中输入: functiony=jc(x) p=1;for k=1:xp=p*k; endy=p;以 jc 为文件名保存,在命令窗口中输入: s=0;n=10;for k=1:ns=s+jc(2
27、*k);n1end s运行结果:s = 2.4393e+0182、While 循环命令格式: while条件命令串;end只要条件为真,就执行while 和 end 语句之间的命令串. 它与 for 循环以固定次数求一组命令相反,while 循环以不定的次数求一组语句的值.例 4 求满足不等式1 1 1 10 的最小 n 的值。2n s=0;n=0;while s1y=x2+1;endif xx= 0:0.001:2*pi;%0.001 为向量元素的公差,越小越点越多,图形越真实y1=sin(x); y2=cos(x);plot(x,y1,r,x,y2, co) 例 2在0, 上画 y=cos
28、 x 的图形. 程序如下:ezplot(cos(x) ,0,pi) 也可以这样编写:syms x y=cos(x);ezplot(y,0,pi) 例 3在0,2 上画 x cos3t , y sin3t 星形图.程序如下: ezplot(cos(t)3,sin(t)3,0,2*pi) 例 4在-2,0.5,0,2上画隐函数ex sin(xy) 0 的图. 程序如下:ezplot(exp(x)+sin(x*y),-2,0.5,0,2) 例 5在区间1,1 画出函数 y sin 1 的图形.x程序如下:fplot(sin(1/x),-1,1) 例 6作出极坐标方程为r 2(1 cos t) 的曲线
29、的图形.程序如下:t=0:0.1:2*pi;r=2*(1-cos(t);polar(t,r) 例 7分别作出取整函数 y x 和函数 y x x 的图形程序如下:subplot(1,2,1),ezplot(fix(x),subplot(1,2,2),ezplot(x-fix(x) 例 8画幂函数 y xk, k 1,2,3,4 的图像. 程序如下: hold on, x=-1:0.1:4;for k=1:4 y=x.k; plot(x,y), endhold offcos x, x 0,例 9作出分段函数 f (x) 5, x 0,的图形程序如下:ex 10, x 0,x1=-2:0.1:0;
30、x2=0:0.1:2;y1=cos(x1);y2=exp(x2)+10;plot(x1,y1,x2,y2) 为画出分解点出的情况,可以继续输入命令: hold on,plot(0,cos(0),ro), plot(0,exp(0)+10,ro),plot(0,5,r*) 也可以先建立函数 M 文件,在调用 fplot 命令绘图(对于函数图像跳跃程度比较剧烈的必须使用这种方法)。第二节三维绘图基本命令:1、plot3plot3 (x,y,z,s)% x,y,z 是维数相同的向量,它们的元素分别表示空间点的坐标,s 表示连线的颜色、线形和点的形状.plot3(x,y,z)%x,y,z 同型矩阵,对
31、应每一列表示一条曲线,可以做出若干条曲线.2、meshgridU,V=meshgrid(x,y)%x,y 为向量,x,y 可以构成网格点阵,命令产生的矩阵 U 的元素为点阵的横坐标,V 的元素为点阵的纵坐标,见下图所示 x 的 5 个值与y 的 4 个值产生 45 的两个点阵 U,V,其矩阵元素分别来自 x,y3、meshmesh(X,Y,Z)%X,Y,Z 是维数相同的矩阵,它们的元素分别表示空间点的三个坐标,所得曲面是将点用平面连接的曲面(网格曲面).meshc(X,Y,Z)%除了 mesh (X,Y,Z)的功能外,还在曲面下方画出等高线4、surfsurf(X,Y,Z)% X,Y,Z 是维
32、数相同的矩阵,它们的元素分别表示空间点的坐标,所得曲面是将点用平滑的曲面连接的曲面.surfc(X,Y,Z)%除了 surf(X,Y,Z)的功能外,还在曲面下方画出等高线5、ezmesh 和 ezsurfezmesh(f(x,y)%画出函数 z=f(x,y),这是字符串型函数绘图ezsurf(f(x,y)%同上ezmesh(x,y,z)%作出参数曲面 x=x(s,t),y= y(s,t),z= z(s,t),其中 s,t 默认范围是-2*pis2*pi,-2*pit2*pi,x,y,z 都是符号表达式ezmesh(x,y,z,s1 s2 t1 t2)%作用同上,只是 s,t 的范围改为 s1s
33、s2,t1t7) 那么输出结果ii =24678910例 1在区间0,10画出参数曲线 x=sint,y=cost,z=t.程序如下: t=0:pi/50:10*pi; plot3(sin(t),cos(t),t,ro) 例 2作出函数 z x2 y2 的图像,并作出 10 条等高线.程序如下: x=-3:0.1:3;y=x;X,Y=meshgrid(x,y); Z=X.2+Y.2;subplot(1,2,1),mesh(X,Y,Z),subplot(1,2,2), clabel(contour(X,Y,Z,10) 例 3 作出椭球面 x2 y 2 z 2 1 的图形491程序如下:x=2*c
34、os(s)*sin(t);y=3*cos(s)*cos(t);z=sin(s); ezmesh(x,y,z) 注意:没有直接作出曲面 F(x,y,z)=0 图像的命令。例 4作出单叶双曲面 x2 y 2 z 2 1 的图形149程序如下:x=-3:0.01:3;y=-3:0.01:3;x,y=meshgrid(x,y); z=sqrt(9*(x.2+y.2/4-1);ii=find(imag(z)=0);% imag(z)表示 z 的虚部z(ii)=NaN;z1=-z;mesh(x,y,z), hold on, mesh(x,y,z1) 注意:本例也可以用例 12 的方法来做。例 5作出锥面
35、z x2 2 y2 和 z x2 y2 5相交的图形程序如下:x,y=meshgrid(-2:0.01:2);z1=x.2-2*y.2; z2=x.2+y.2-5; mesh(x,y,z1); hold on mesh(x,y,z2);ii=find(abs(z1-z2)n=1:100;y=n.(1./n);plot(y,ro) 图像如下:可以看出极限是 1.从数值计算来看:for n=1:1:10 x(n,1)=n;x(n,2)=n(1/n);x(n,3)=n(1/n)-1;end x运行结果(x 的第二列是数列的项,第三列是项与 1 的差): x =1.00001.000002.00001
36、.41420.41423.00001.44220.44224.00001.41420.41425.00001.37970.37976.00001.34800.34807.00001.32050.32058.00001.29680.29689.00001.27650.276510.00001.25890.2589例 2、数列1 3 计算数列的前 30 项的近似值. 作散点图, 观x0 1, xn 2 xn1 x.n1 察点的变化趋势.程序如下:x(1)=sqrt(2); for n=1:30 x(n+1)=sqrt(2+x(n); endplot(x,ro) 可以看出数列取值趋近于 2.ab例
37、3、求极限lim x(1 )x sin( )xxx程序如下:syms a b x; y=x*(1+a/x)x)*sin(b/x);limit(y,x,inf) 例 4、求极限limx0ex3 11 cosx sin x程序如下:syms x;y=(exp(x3)-1)/(1-cos(sqrt(x-sin(x);limit(y,x,0,right) 例 5函数 y e2 x ln(x2 1)tan(x) ,求 y, y syms xy=sin(x)/(x2+4*x+3); y1=diff(y), y3= diff(y,3) 例 6求函数 f ( x) sin ax cos bx 的一阶导数. 并
38、求 f 1 . a b syms x a by=sin(a*x)*cos(b*x);y1=diff(y),x=1/(a+b);y11=eval(y1) 例 7函数,求2 z 2 z 2 zz ax2 y3 b sin(xy)syms a b x y z=a*x2*y3+b*sin(x*y);x2,y2,xyzxx=diff(z,x,2), zyy=diff(z,y,2), zxy=diff(diff(z,x),y) 例 8参数式函数 x a(t sin t) ,求 dysyms a t y a(1 cos t)dxx=a*(t+sin(t);y=a*(1-cos(t); diff(y,t)/d
39、iff(x,t) 例 9隐函数exy x y 1 ,求 dydxsyms x yz=exp(x*y)+x+y-1;-diff(z,x)/diff(z,y) 例 10 求下列积分dxx2 1 x2(1) 1dx ;(2) 1dx ;(3) 3.sin2 x cos2 xsyms x ax2 a21y1=1/(sin(x)2*cos(x)2);y2=1/(x2-a2);y3=1/(x2*sqrt(1+x2); i1=int(y1,x),i2=int(y2,x),i3=int(y3,x,1,sqrt(3) 例 11计算积分 1 e x2dx 。0方法一: y=exp(-x.2);quad(y,0,1
40、) 方法二:x=0:0.01:1;y=exp(-x.2);trapz(x,y) 例 12计算重积分 D1 x2 y2 d D 是由圆周 x2 y2 1 及坐标轴在第一象1 x2 y2限围成的闭区域。syms x yz=sqrt(1-x2-y2)/(1+x2+y2); int(int(z,y,0,sqrt(1-x2),x,0,1) 显示结果:Warning: Explicit integral could not be found.换为极坐标下计算:syms t rz=sqrt(1-r2)/(1+r2)*r;int(int(z,r,0,1),t,0,2*pi) 例 13计算1 dy 1xydx
41、的近似值。1 x30y2下载 quad2dggen.m 及相关文件(可在机房老师处拷贝)装到 matlab/work 目录下.命令格式:quad2dggen(fun,x1,x2,y1,y2)%计算积分 y 2 dy x 2 f (x, y)dxy1x1quad2dggen(fun,x1,x2,y1,y2,c)%同上,c 为精度注意:该命令只能计算 y-型区域的二重积分。其中 fun,x1,x2 均为向量型的 inline 函数 fun=inline(x.*y./sqrt(1+x.3); x1=inline(y.2); x2=inline(1); quad2dggen(fun,x1,x2,0,1
42、) 例 14求 y2 ds , x 3cos t, y 3sin t, t 2,2 Lsyms t x=3*cos(t);y=3*sin(t);z=y2*sqrt(diff(x,t)2+diff(y,t)2); int(z,t,-2*pi,2*pi) 第二节泰勒多项式、级数1、泰勒多项式函数 y f (x) 的泰勒多项式是指形如a a x a x2 a xn012n的多项式,其中a f (k ) (0) , k 0,1, n 。而关于 x x的泰勒多项式是指形如kk !a0 a (x x ) a (x x )2 a (x x )n01020n0的多项式,其中a kf (k ) (x )0k !
43、, k 0,1, n。其中n称为泰勒多项式的阶数。阶数越高泰勒多项式越和函数本身接近。命令格式:taylor(fun,x,n)%符号函数关于 x 的 n-1 阶泰勒多项式taylor(fun)%符号函数关于 x 的 5 阶泰勒多项式taylor(fun,x,n,x )%符号函数关于x-x 的n-1 阶泰勒多项式00例 1设函数 f (x) x arctan x ln 1 x2 ,求关于 x 的 10 阶泰勒多项式;关于 x-2 的 10 阶泰勒多项式。syms xy=x*atan(x)-log(sqrt(1+x2); y1=taylor(y,x,11), y2=taylor(y,x,11,2)
44、 例 2设 y sin x ,求该函数的 3 阶、8 阶、15 阶泰勒多项式,并画出图形观察它们与 y sin x 的关系。 syms x y=sin(x);subplot(2,2,1),ezplot(y), k=2;for n=4,9,16yy=taylor(y,x,n),subplot(2,2,k),ezplot(yy),k=k+1;end2、级数求和命令格式:sum(x)%计算向量 x 的元素的和symsum(an,n,a,b)%计算通项为an 的数列对变量n 从a 到b 项的和例 3求和1 3 99x=1:2:99;sum(x) 例 4求和(1) 100 n3 ;(2) 1(2n 1)
45、(2n 1)n1n 1symsnx;(3) xnn0an=n3;bn=1/(2*n-1)*(2*n+1);cn=xn symsum(an,n,1,100),symsum(bn,n,1,inf), symsum(cn,n,0,inf) 第三节方程与微分方程一、一般方程1、图解法画出函数图象,然后尽量放大图像,可以观察根的大小。例 1 解方程ex 2x 10 hold on,ezplot(exp(x),-100,100),ezplot(-2*x+10,-100,100)放大之后为:可以看出根在 1.8221.823 之间。2、多项式求根命令格式:x=roots(A)说明:x 为根向量,A 为多项式
46、系数向量,按降幂排列.最高次数小于 5 可以求出根的准确形式,次数大于或等于 5 很多方程只能求近似形式.例 2解方程 x3 9x 10 0a=1,0,9,-10;roots(a) 3、代数方程求根所谓代数方程是指通常指“整式方程”,即由多项式组成的方程。命令格式:x=solve(F)对方程 F=0 的默认变量求解x=solve(F,v)对方程 F=0 的指定变量 v 求解x=solve(F1,Fn)对 n 个方程的默认变量求解x=solve(F1,Fn,v1,,vn)对 n 个方程的 n 个指定变量求解说明:1、solve 命令适合于符号方程,默认未知量为x,没有 x 则指在字母表中离x 最
47、近的字母;2、solve 命令主要求解代数方程或代数方程组,也可以用于超越方程的求解,但能力有限。例 3解方程 x2 ax 4b 0syms a b xF=x2-a*x-4*b;solve(F,x) x 3y 0例 4解方程组x2 y2 1syms x yf1=x+3*y;f2=x2+y2-1; x,y=solve(f1,f2,x,y)4、超越方程求根超越方程指除多项式函数方程之外的方程,一般超越方程只能求近似解,对于超越方程组在很多情况下连近似解也求不出来.一元方程的情形命令格式:x=fzero(fun,x )0 x=fzero(fun,x ,tol)0 x=fzero(fun,a,b)说明
48、:fzero(fun,x )表示在 x 的附近收索方程 fun=0 的根,tol 表示求根的00精度, fzero(fun,a,b) 表示在a,b上收索方程 fun=0 的根,要求函数 fun在区间端点异号. 函数 fun 的形式为字符串型或者 M 文件型均可。例 5求方程 x cos2 x 在 1 附近的根。fzero(x-cos(x)2 ,1) 多元方程组的情形命令格式:x=fsolve(fun,x )0 x=fsolve(fun,x ,tol)0 x=fsolve(fun,a,b) x y2例 6 解方程组在点(1,2) 附近的根。 y cos xfun=x(1)-x(2)2,x(2)-
49、cos(x(1); fsolve(fun,1,2) 二、微分方程1、符号解命令格式:dsolve(方程 1,方程 2,方程n,初始条件,自变量)例 7求微分方程 dy y2的解.dxdsolve(Dy=y2, x) d2 y 4 dy 29 y 0 dx2例 8求微分方程组dx的解. y(0) 0, y (0) 15y=dsolve(D2y+4*Dy+29*y=0,y(0)=0,Dy(0)=15,x),ezplot(y,-1,2)%本命令是画出解在区间1,2 上的图像说明:其中 Dy 表示 y 的一阶导数,D2y 表示 y 的二阶导数 dt dx 2x 3y 3z dt例 9求微分方程组dy
50、4x 5 y 3z 的通解.dz 4x 4 y 2z dtx,y,z=dsolve(Dx=2*x-3*y+3*z,Dy=4*x-5*y+3*z,Dz=4*x-4*y+2* z, t);x=simple(x),% 该行的作用是将 x 化简y=simple(y),% 该行的作用是将 y 化简z=simple(z) % 该行的作用是将 z 化简2、数值解很多复杂微分方程的符号解是求不出来的,这时只能求数值解(近似解).求数值解实际上是求出其积分曲线上若干点的坐标(近似的),为方便直观,通常将这些离散的点画出来.命 令 格 式 : t,x=ode45(equ,t0,tf,x0) 说明:1、t 表示自变
51、量值;x 表示函数值;equ 表示由待解方程写成的 M 文件名; t0、tf 为自变量的初值和终值;x0 表示函数的初值2、在解含 n 个未知数的方程组时,x0 和 x 均为 n 维向量,M 文件中的待解方程组应以 x 的分量形式写出.3、高阶微分方程必须等价地变换成一阶微分方程组.d2 x例 10求 dt 2dxd 的解.1000(1 x2 )x0tx(0) 2; x (0) 0分析:令 x = dx , x x1 dt2则微分方程变为一阶微分方程组: dx1 1000(1 x2 )x x dt212 ,初始条件 x (0) 0, x (0) 2dx122xdt1Matlab 解法如下:1
52、、 建 立 M 文 件 equ.m 如 下 : function dxdt=equ(t,x) dxdt(1)=1000*(1-x(2)2)*x(1)+x(2);dxdt(2)= x(1);2、取 t0=0,tf=3000,输入命令: t,x=ode45(equ,0 3000,0 2);plot(t,x(:,1),o) %画出解的图像第五章优化问题求极值问题,就是优化问题,它一般由目标函数和约束条件两部分构成。优化问题实践性很强,广泛应用于生产管理、军事指挥和科学试验等各种领域。第一节多元函数的建立优化问题中的目标函数,往往是多元函数,因此需要建立多元函数。其建立的方式与一元函数的方式一致,下面
53、通过例子来说明。例 1定义二元函数 z 5x2 4 y3 sin(xy) ,当 x 1, y 2 时,求 z 的值. 建立方法一:syms x yz=5*x2+4*y3+sin(x*y), x=1;y=2;eval(z) 建立方法二:z=5*x(1)2+4*x(2)3+sin(x(1)*x(2), x=1,2;eval(z) 例 2定义二元函数 z 5x2 4 y3 sin(xy) ,并求当 x=1,y=2 时的函数值.除了使用上面的方法,还可以用 M 文件的方法建立,步骤如下: 1、建立 M 文件:functionz=f1(x,y) z=5*x2+4*y3+sin(x*y);以 f1.m 为
54、文件名保存.2、在 Matlab 命令区输入命令:z=f1(1,2) 第二节 无约束条件的优化一、一元函数的情形求一元函数 y f (x) 在区间a, b 内的极小值。命令格式:x=fminbnd(fun,a,b)x,fval=fminbnd(fun,a,b)说明:1、函数 fun 的格式可以为:字符串型、M 文件型、inline 函数2、x 为在区间a, b 内函数 fun 的极小值点,fval 为在极小值;3、函数 fminbnd 的算法基于黄金分割法和二次插值法,要求目标函数y f (x) 连续,并可能只给出局部最优解.例 1 求 y = 2 e x sin x 在 0 x f=2*ex
55、p(-x)*sin(x);fplot(f,0,8);%作出函数图象xmin,ymin=fminbnd (f, 0,8)%求出函数最小值点,和最小值f1=-2*exp(-x)*sin (x);a,b=fminbnd (f1, 0,8); xmax=a, ymax=-b%求出函数最大值点,和最大值运行结果:xmin = 3.9270ymin = -0.0279xmax =0.7854ymax =0.6448二、多元函数的情形命令格式 1:x= fminunc(fun,X0) x,fval= fminunc(fun,X0) 命 令 格 式 2: x=fminsearch(fun,X0)x,fval=
56、 fminsearch(fun,X0)说明:1、fminunc 是采用拟牛顿法寻优;fminsearch 是用单纯形法寻优. 2、X0 是初始点,它最好位于极值点的附近.3、可能得到局部最优解.4、对于求解二次以上的问题,fminunc 函数比 fminsearch 函数有效,但对于高度非线性不连续问题时,fminsearch 函数更具稳键性。例 2 求 f (x , x ) 2x 3 4x x 3 10 x x x 2 的最小值。1211 21 22解:在 Matlab 中实现如下: f=2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2; x0=0,0;x,fm
57、in=fminsearch(f,x0) 或着:1、在 Matlab 编辑器中编辑 M 文件: function f=fun(x)f=2*x(1)3+4*x(1)*x(2)3-10*x(1)*x(2)+x(2)2; 2、命令窗口运行: x0=0,0;x,fmin=fminsearch(fun,x0) 第三节线性规划与二次规划带有约束条件类优化问题分为两种情况,一是线性规划;二是非线性规划。对于线性规划,Matlab 能够完全有效地解出,而非线性规划,也有强大解决功能。一、线性规划线性规划是带有约束条件类优化问题中最常见的一类,它一般形式为:minz c x c x1 1n n a x a x b
58、不等式约束条件11 1 a x1n n1 a x bs.t. m1 1mn nm等式约束条件 e x e xd11 1 e x1n n1变量上、下界 e x d m1 1mn nml x m , i 1,2, n可以用矩阵的形式表示为:iiiminz cX AX bs.t. AeqX beqvlb x vub其中: X 为 n 维未知列向量, c 为目标函数的系数向量, A 是不等式约束的系数矩阵,b 是常数项向量, Aeq 是等式约束的系数矩阵,beq 常数项向量,vlb, vub 分别是自变量取值的下界和上界约束的常数向量.命 令 格 式 : x=linprog(c,A,b) x=linp
59、rog(c,A,b,Aeq,beq)x=linprog(c,A,b,Aeq,beq, VLB,VUB) x=linprog(c,A,b,Aeq,beq, VLB,VUB, X0) x,fval = linprog(.)x,fval,exitflag = linprog(.) x,fval,exitflag,output = linprog(.) x,fval,exitflag,output,lambda = linprog(.) 说明:x = linprog(c,A,b) 求解问题 min c*x,约束条件为 A*x0表示目标函数收敛于解 x 处;=0表示已经达到函数评价或迭代的最大次数; f
60、=-5;-4;-6; A=1 -1 1;3 2 4;3 2 0; b=20;42;30; lb=zeros(3,1); x,fval,exitflag,output,lambda=linprog(f,A,b,lb) Optimization terminated successfully.x =0.000015.00003.0000fval =-78.0000exitflag = 1output =iterations: 6cgiterations: 0 algorithm: lipsollambda =ineqlin: 3x1 double eqlin: 0 x1 double upper:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 东莞美容院加盟合同范本
- 个人房产与中介合同范本
- 先拿货后付款合同范例
- 2024年吴忠市人民医院自主招聘事业单位工作人员考试真题
- 加盟授权合同范例范例
- 农村空地出售合同范本
- 2024年曲靖六十九医院人才招聘考试真题
- 以资抵债合同范本
- 2024年广州市天河区体育西路小学聘用制专任教师招聘考试真题
- 创意园厂房合同范例
- 2025年企业法务顾问聘用协议范本
- 无菌手术台铺置的细节管理
- 《康复评定技术》课件-第五章 运动控制
- 议论文8(试题+审题+范文+点评+素材)-2025年高考语文写作复习
- 【理特咨询】2024生成式人工智能GenAI在生物医药大健康行业应用进展报告
- 2025新人教版英语七年级下单词默写表(小学部分)
- 2025年春新外研版(三起)英语三年级下册课件 Unit6第1课时Startup
- 2025江苏苏州高新区狮山商务创新区下属国企业招聘9人高频重点提升(共500题)附带答案详解
- 平抛运动的经典例题
- 录井作业现场风险评估及控制措施
- 2025年度商会工作计划
评论
0/150
提交评论