MATLAB讲义
- 格式:doc
- 大小:678.00 KB
- 文档页数:21
MATLAB 解方程讲师:施六五邮箱:shiliuwu@主要内容:●界面设置●编辑和调试●解方程●拟合●积分●优化一、界面的设置⏹Perference设置字体,属性等⏹Set path 添加路径,增加具体的子函数⏹Desktop→Desktop Layout→Default ⏹Command window(tab type)⏹Command history⏹帮助窗口(doc docsearch look for )二、编辑与调试⏹M文件:函数文件和脚本文件⏹文件的命名:不能与matlab内部函数同名⏹多行注释:1.Ctrl+R,Ctrl+T 2.if o end,3.%{ %}⏹自动缩进:Ctrl+I⏹双击变量查看该程序的所有的该变量⏹做标记Ctrl+F2更多右键信息⏹设置断点,F5,F10,F11,Go until Cursor ⏹分块执行%%⏹程序中断:命令窗口输入Ctrl+C⏹cell模式%% 按住Ctrl+Enter解方程●线性方程●非线性方程●隐函数方程●带参数的方程求解●微分方程●积分方程●优化线性方程组Ax=b x=A\b矩阵的分解求解线性方程组矩阵分解是指根据一定的原理用某种算法将一个矩阵分解成若干个矩阵的乘积。
常见的矩阵分解有LU分解、QR 分解、Cholesky分解,以及Schur分解、Hessenberg分解、奇异分解等。
(具体可以查看帮助文件)非线性方程求解函数:fzero 求解单变量非线性方程的根基本用法:z=fzero('fname',x0,tol,trace)例子:初值的选取Data cursor 获取坐标ar-1-0.8-0.6-0.4-0.200.20.40.60.81texp(-3 t) sin(4 t+2)+4 exp(-0.5 t) cos(2 t)-0.5函数:fsolve 基本用法:X=fsolve(@fun,x0,options)clc;clear;close allf{1}=inline('x-0.6*sin(x)-0.3*cos(y)'); f{2}=inline('y-0.6*cos(x)+0.3*sin(y)'); hold onh=arrayfun(@(i)ezplot(f{i},[-1,1,-1,1]),[1,2]); set(h(1),'color','r')-1-0.8-0.6-0.4-0.200.20.40.60.81-1-0.8-0.6-0.4-0.200.20.40.60.81xyy-0.6 cos(x)+0.3 sin(y) = 0function y=myfun(x)y(1)=x(1)-0.6*sin(x(1))-0.3*cos(x(2)); y(2)=x(2)-0.6*cos(x(1))+0.3*sin(x(2)); end隐函数的求解给定一个隐函数的自变量,通过数值方法求解得到因变量。
MATLAB软件基础§1MATLAB 概述MATLAB 是MATrix LABoratory(“矩阵实验室”)的缩写,是由美国MathWorks 公司开发的集数值计算、符号计算和图形可视化三大基本功能于一体的,功能强大、操作简单的语言。
是国际公认的优秀数学应用软件之一。
20世纪80年代初期,Cleve Moler与John Little等利用C语言开发了新一代的MATLAB语言,此时的MATLAB语言已同时具备了数值计算功能和简单的图形处理功能。
1984年,Cleve Moler与John Little等正式成立了Mathworks公司,把MA TLAB 语言推向市场,并开始了对MATLAB工具箱等的开发设计。
1993年,Mathworks公司推出了基于个人计算机的MATLAB 4.0版本,到了1997年又推出了MATLAB 5.X版本(Release 11),并在2000年又推出了最新的MATLAB 6版本(Release 12)。
现在,MATLAB已经发展成为适合多学科的大型软件,在世界各高校,MATLAB已经成为线性代数、数值分析、数理统计、优化方法、自动控制、数字信号处理、动态系统仿真等高级课程的基本教学工具。
特别是最近几年,MATLAB在我国大学生数学建模竞赛中的应用,为参赛者在有限的时间内准确、有效的解决问题提供了有力的保证。
概括地讲,整个MATLAB系统由两部分组成,即MATLAB 内核及辅助工具箱,两者的调用构成了MATLAB的强大功能。
MATLAB语言以数组为基本数据单位,包括控制流语句、函数、数据结构、输入输出及面向对象等特点的高级语言,它具有以下主要特点:1)运算符和库函数极其丰富,语言简洁,编程效率高,MATLAB 除了提供和C语言一样的运算符号外,还提供广泛的矩阵和向量运算符。
利用其运算符号和库函数可使其程序相当简短,两三行语句就可实现几十行甚至几百行C或FORTRAN的程序功能。
MATLAB讲稿目录1 MATLAB简介 (2)1.1 MATLAB的特点 (2)1.2 窗口 (2)1.3 联机查询与演示 (3)2 数值计算 (4)2.1 数字及其运算 (4)2.2 常用数学符号及函数: (4)2.3 向量、数组及其运算 (5)2.4 矩阵及其运算 (7)2.5 多项式及其运算 (9)3 符号运算 (10)3.1 定义符号表达式 (10)3.2 符号表达式运算 (10)3.3 符号表达式的因式分解、展开与化简 (11)3.4 符号微积分 (11)3.5 符号方程求解 (12)3.6 调用函数计算器:funtool (13)3.7 级数 (13)3.8 Maple接口 (13)4 绘图 (13)一、绘图命令 (13)二、绘图参数(点标、线型、颜色) (14)三、图形标注处理 (14)四、图形控制 (14)5 程序设计 (16)一、M文件 (16)二、控制语句 (16)三、一些数学问题............................................ 错误!未定义书签。
6 在最优化问题中的应用..................................... 错误!未定义书签。
一、线性优化lp ............................................... 错误!未定义书签。
二、二次优化qp............................................... 错误!未定义书签。
三、非线性无约束优化问题............................ 错误!未定义书签。
四、最小二乘优化问题.................................... 错误!未定义书签。
五、强约束问题................................................ 错误!未定义书签。
第二章数值数组及其运算数值数组(Numeric Array)和数组运算(Array Operations)始终是MATLAB的核心内容。
自MATLAB5.x版起,由于其“面向对象”的特征,这种数值数组(以下简称为数组)成为了MATALB最重要的一种内建数据类型(Built-in Data Type),而数组运算就是定义在这种数据结构上的方法(Method)。
本章系统阐述:一、二维数值数组的创建、寻访;数组运算和矩阵运算的区别;实现数组运算的基本函数;多项式的表达、创建和操作;常用标准数组生成函数和数组构作技法;高维数组的创建、寻访和操作;非数NaN、“空”数组概念和应用;关系和逻辑操作。
顺便指出:(1)本章所涉内容和方法,不仅使用于数值数组,而且也将部分地延伸使用于在其他数据结构中。
(2)MATLAB5.x和6.x 版在本章内容上的差异极微。
(3)MATLAB6.5版新增的两种逻辑操作,在第2.13.2节给予介绍。
数组是指由一组实数或复数排成的长方阵列(Array)。
它可以是一维的“行”或列,可以是二维的“矩阵”,也可以是三维的“若干同维矩形的堆叠,甚至更高维数”。
数组运算:是指无论在数组上施加什么运算(加减乘除或函数),总认定那种运算对被运算数组中的每个元素(Element)平等地实行同样的操作。
2.1一维数组的创建和寻访2.1.1一维数组的创建(1)无特殊规律数组,直接创建(逐个元素输入):X=[3.4 exp(5.2) -4*pi] x=[3.4 exp(5.2) -4*pi]x =3.4000 181.2722 -12.5664(2)等步长数组:①冒号生成法:通用格式:x=a:inc:b% inc是采样点之间的间隔,即步长。
若(b-a)是inc的整数倍,则所生成数组的最后一个元素等于b,否则小于b。
inc可以省略,省略时默认inc=1。
如:x=0:2*pi/50:2*pi,②定数线性采样法:通用格式T=linspace(a,b,n),其作用与指令:x=a:(b-a)/(n-1):b相同。
matlab讲义知识大总结,很详细的哦实验一 MATLAB 环境及命令窗口的使用一、实验目的:1.掌握MA TLAB语言的特点2.熟悉MA TLAB的工作环境3.掌握MA TLAB的基本操作字符串采用赭红色;“if”、“for”等关键词采用蓝色。
键名作用键名作用↑向前调回已输入过的命令行Home 使光标移到当前行的开头↓向后调回已输入过的命令行End 使光标移到当前行的末尾←在当前行中左移光标Delete 删去光标右边的字符→在当前行中右移光标Backspace 删去光标左边的字符PageUp 向前翻阅当前窗口中的内容Esc 清除当前行的全部内容Page Down 向后翻阅当前窗口中的内容CTRL+C 中断MATLAB 命令的运行空格用于输入变量之间的分隔符以及数组行元素之间的分隔符。
●显示格式设置:选择菜单“File”→“ Preferences”,则会出现参数设置对话框,如图所示;clc:用于清空命令窗口中的显示内容。
more:在命令窗口中控制其后每页的显示内容行数。
1.单行或多行命令的运行 (Evaluate Selection) 修改搜索路径实验二 MATLAB 数值计算一、实验目的:(1)熟练掌握MATLAB 变量的使用。
(2)熟练掌握矩阵的创建。
(3)熟练掌握MATLAB的矩阵和数组的运算。
用from:step:to方式。
>> x1=2:10x6=[1,4,7;2,5,8] %两行向量构成矩阵x6 =1 4 72 5 8 3)用linspace 函数。
x1=linspace(0, pi,4) %从0到 pi 等分成4个点(4)使用特殊矩阵函数。
>> x = eye(2,3);BA A BA A +=-61> B= inv(inv(A)-eye(3))*6*A *inv(A) [v,d]=eig(x)其特征值和特征向量 w 为【0.01,10】范围按对数均Lw=-20*)1)2(lg(202+-=w L w log10(sqrt((2*w).^2+1)logspace 简介用法:logspace (a,b,n),其中a 、b 、n 分别表示开始值、结束值、元素个数。
第一章基础准备及入门什么是MATLAB?MATLAB是MathWorks公司于1984年推出的数学软件,是一种用于科学工程计算的高效率的高级语言。
MATLAB最初作为矩阵实验室(Matrix Laboratory),主要向用户提供一套非常完善的矩阵运算命令。
随着数值运算的演变,它逐渐发展成为各种系统仿真、数字信号处理、科学可是化的通用标准语言。
在科学研究和工程应用的过程中,往往需要大量的数学计算,传统的纸笔和计算机已经不能从根本上满足海量计算的要求,一些技术人员尝试使用Basic,Fortran,C\C++等语言编写程序来减轻工作量。
但编程不仅需要掌握所用语言的语法,还需要对相关算法进行深入分析,这对大多数科学工作者而言有一定的难度。
与这些语言相比, MATLAB的语法更简单,更贴近人的思维方式。
用MATLAB编写程序,犹如在一张演算纸上排列公式和求解问题一样高效率,因此被称为“科学便笺式”的科学工程计算语言。
MATLAB由主包和功能各异的工具箱组成,其基本数据结构是矩阵。
正如其名“矩阵实验室”,MATLAB起初主要是用来进行矩阵运算。
经过MathWorks 公司的不断完善,时至今日,MATLAB已经发展成为适合多学科、多工作平台的功能强大的大型软件。
本章有两个目的:一是讲述MATLAB正常运行所必须具备的基础条件;二是简明系统地介绍高度集成的Desktop操作桌面的功能和使用方法。
本章的前两节分别讲述:MATLAB的正确安装方法和MATLAB 环境的启动。
因为指令窗是MATLAB最重要的操作界面,所以本章用第 1.3、1.4 两节以最简单通俗的叙述、算例讲述指令窗的基本操作方法和规则。
这部分内容几乎对MATLAB各种版本都适用。
MATLAB6.x 不同于其前版本的最突出之处是:向用户提供前所未有的、成系列的交互式工作界面。
了解、熟悉和掌握这些交互界面的基本功能和操作方法,将使新老用户能事半功倍地利用MATLAB去完成各种学习和研究。
为此,本章特设几节用于专门介绍最常用的交互界面:历史指令窗、当前目录浏览器、工作空间浏览器、内存数组编辑器、交互界面分类目录窗、M文件编辑/调试器、及帮助导航/浏览器。
本章是根据MATLAB6.5版编写的,但大部分内容也适用于其他6.x版。
1.1M ATLAB的安装和内容选择图 1.1-11.2D esktop操作桌面的启动1.2.1MATLAB的启动1.2.2Desktop操作桌面简介一操作桌面的缺省外貌下图是6.5版的Desktop操作界面的默认外形。
该桌面的上层摆放着最常用的界面:命令窗口(指令窗)、历史指令窗、工作空间浏览器,在窗口的左下角新增加了“开始按钮”。
在缺省情况下,还有一个只能看到“窗名”的常用交互界面:当前目录窗。
它们被铺放在桌面的下层。
图1.2-1二 通用操作界面下面所列的9个交互界面最为常用。
① 指令窗(Command Window ) ② 历史指令窗(Command History )③ 当前目录浏览器(Current Directory Browser ) ④ 工作空间浏览器(Workspace Brower ) ⑤ 内存数组编辑器(Array Editor ) ⑥ 开始按钮(Start )⑦ 交互界面分类目录窗(Lauch Pad ) ⑧ M 文件编辑/调试器(Editor/Debugger )⑨ 帮组导航/浏览器(Help Navigator/Browser )1.3 C ommand Window 运行入门1.3.1Command Window 指令窗简介图 1.3-11.3.2 最简单的计算器使用法【例1.3.2-1】求23)]47(212[÷-⨯+的算术运算结果。
(1)用键盘在MATLAB 指令窗中输入以下内容 >> (12+2*(7-4))/3^2(2)在上述表达式输入完成后,按【Enter 】键,该就指令被执行。
(3)在指令执行后,MATLAB 指令窗中将显示以下结果。
ans = 2【例1.3.2-2】简单矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=987654321A 的输入步骤。
(1)在键盘上输入下列内容A = [1,2,3; 4,5,6; 7,8,9](2)按【Enter 】键,指令被执行。
(3)在指令执行后,MATLAB 指令窗中将显示以下结果:A =1 2 3 4 5 6 7 8 9【例1.3.2-3】矩阵的分行输入。
A=[1,2,3 4,5,6 7,8,9] A =1 2 3 4 5 6 7 8 9【例1.3.2-4】指令的续行输入S=1-1/2+1/3-1/4+ ...1/5-1/6+1/7-1/8 %...为续行号,它把其下的物理行看作该行的“”逻辑继续,以构成一个“较长”的完整指令。
S =0.63451.3.3 数值、变量和表达式一 数值的记数MATLAB 的数值采用的是常用的十进制数表示法,可以带小数点或者负号。
以下记数都是合法的。
二 变量命名规则① 变量名、函数名是对字母大小写敏感的。
变量名的第一个字母必须是英文字母。
② 对于6.5版,变量名最多可包含63个字符(英文、数字和下连符);而对6.5以前的版本,变量名的字符不超过31个。
③ 变量名中不得包含空格(Backspace )、标点,但可以包含下划线。
变量名my_var_201是合法的。
而my ,var201由于逗号的分隔,表示的就不是一个变量名。
3330.003 3.47434 1.5e 5.4e32--三MATLAB默认的预定义变量四运算符和表达式MATLAB中书写表达式的规则和“手写算式”几乎完全相同。
表达式由变量名、运算符和函数名组成,按照与常规相同的优先级从左至右执行计算。
优先级的规定是:指数运算级别最高,乘除运算次之,加减运算最低,但括号可以改变运算次序。
书写表达式时,允许“=”运算符两侧有空格,用于增加可读性。
注:MATLAB用左斜杠或者右斜杠分别表示“左除”或者“右除”运算。
对于标量而言,这两者的作用没有什么区别,但对矩阵而言,两种运算将产生不同的结果。
五复数和复数矩阵MATLAB最强大的功能之一就是它对复数不需要作特殊处理。
MATLAB认识复数,并用预定义变量i和j作为虚数单位。
在MATLAB中,复数可用几种方式表示。
①>>a1=2+4i ↙ %附加的i表示虚部a1=2.0000+4.0000i>>a1=2-3j ↙ %附加的也可以表示虚部a1=2.0000+4.0000i②还可以用MATLAB默认值i=j=sqrt(-1)来表示虚部。
>>a3=2*(4-sqrt(-1)*2) ↙a3=8.0000-4.0000i③注意下面例子的表达式>>a4=5+sin(.5)*i ↙a4=5.0000+0.4794i若将sin(.5)*i中的*去掉,会得到下列信息:>>a4=5+sin(.5)i ↙???a4=5+sin(.5)iError:Missing MATLAB operator.原因是sin(.5)i对MATLAB而言没有意义,因此需要在i和j 之前加乘法符号。
综上所述,直接以字符i和j结尾,只适用于简单数值,不适用于表达式。
【例1.3.3-1】复数ieziziz63212,21,43π=+=+=表达,及计算321zzzz=。
(1)z1= 3 + 4iz1 =3.0000 +4.0000i(2)z2 = 1 + 2 * iz3=2*exp(i*pi/6)z=z1*z2/z3z2 =1.0000 +2.0000iz3 =1.7321 + 1.0000iz =0.3349 + 5.5801i【例1.3.3-2】复数矩阵的生成及运算A=[1,3;2,4]-[5,8;6,9]*iB=[1+5i,2+6i;3+8*i,4+9*i]C=A*BA =1.0000 - 5.0000i 3.0000 - 8.0000i2.0000 - 6.0000i 4.0000 - 9.0000iB =1.0000 + 5.0000i2.0000 + 6.0000i3.0000 + 8.0000i4.0000 + 9.0000iC =1.0e+002 *0.9900 1.1600 - 0.0900i1.1600 + 0.0900i 1.3700【例1.3.3-3】求上例复数矩阵C的实部、虚部、模和相角。
C_real=real(C)C_imag=imag(C)C_magnitude=abs(C)C_phase=angle(C)*180/pi %以度为单位计算相角C_real =99 116116 137C_imag =0 -99 0C_magnitude =99.0000 116.3486116.3486 137.0000C_phase =0 -4.43654.4365 0注:MATLAB中有许多内建函数本例中real、imag、abs、angle都是内建函数。
-能得到–2 吗?【例1.3.3-4】用MATLAB计算38(1)直接计算时,得到的处于第一象限的方根。
a=-8;r=a^(1/3)r =1.0000 + 1.7321i-的全部方根。
(2)计算38m=[0,1,2]; %为3个方根而设R=abs(a)^(1/3); %模的开三次方Theta=(angle(a)+2*pi*m)/3;%-pi<Theta<=pi的3个相角rrr=R*exp(i*Theta)rrr =1.0000 + 1.7321i -2.0000 + 0.0000i 1.0000 - 1.7321i(3)t=0:pi/20:2*pi;x=R*sin(t);y=R*cos(t); plot(x,y,'b:'),grid %画一个半径为R 的圆 hold onplot(rrr(1),'.','MarkerSize',50,'Color','r')%画第一象限的方根 plot(rrr([2,3]),'o','MarkerSize',15,'Color','b')%画另两个根 axis([-3,3,-3,3]),axis square %保证屏幕显示呈真圆hold off1.3.4 计算结果的图形表示【例 1.3.4-1】画出衰减振荡曲线t ey t 3sin 3-=及其它的包络线30t e y -=。
t 的取值范围是]4,0[π。
(图1.3-3)t=0:pi/50:4*pi; %定义自变量取值数组y0=exp(-t/3); %计算与自变量相应的y0数组 y=exp(-t/3).*sin(3*t);% 计算与自变量相应的y 数组plot(t,y,'-r',t,y0,':b',t,-y0,':b')%用不同颜色、线型绘制曲线【例 1.3.4-2】画出2222)sin(yx y x z ++=所表示的三维曲面(图1.3-4)。