Matlab讲义 - 图文 联系客服

发布时间 : 星期一 文章Matlab讲义 - 图文更新完毕开始阅读fb1ad585a0116c175f0e48cd

非线性力学初步与数值计算

(数学软件Matlab在理论力学中的应用)

§1 Matlab入门

这是供同学自学的内容.老师不一定是专家,韩愈说过:“师不必贤于弟子,弟子未必不如师.”玩计算机,正是年轻人的特长.这里有超越老师的机会.

计算机是玩会的,拿出玩电子游戏的热情与专注,很快就会成功.Matlab在科研和工程设计中被广泛使用,它几乎可以做你想做的所有事,学会了可以终生受益.

不要学了再做,要在做中去学.装上软件,边看书边实践;先按书输入程序,让它能运行;再模仿它,做一点点修改??发挥你的创造性,做你想做的事??

这里只是入门,入门后有很多书可看.遇到问题,最快捷的方法是向会做的人请教. Matlab设有帮助系统(见本节之六),但它是英文界面,开始看不懂是有情可原的.

Matlab是Matrix Laboratory的缩写,是一种功能强、效率高、便于进行科学和工程计算的交互式软件包. 由于使用Matlab编程运算与人进行科学计算的思路和表达方式完全一致,所以不象学习其它高级语言那样难于掌握.实践证明,读者可在短短几个小时的学习和使用中就能初步掌握Matlab的基础知识,从而使读者能够进行高效率和富有创造性的计算.

Matlab对于学习者的编程语言基础要求不高,库函数和编程语句丰富多样且简单易学,在数据可视化上也有独特的优势.学习者不需要投入太多的时间在学习编程语言知识上,直接利用软件提供的丰富的函数,就可用编写较简单的程序来学习理论力学了.

一、Matlab使用介绍

在Windows窗口中用鼠标双击Matlab图标

即可进入Matlab的命令窗口(Command Window,也称工作窗口),

;用菜单“File?Exit”命令;或者直接在命令

如图1所示.没有图标可利用Matlab\\bin目录下的Matlab.exe文件在桌面上建立一个快捷方式.

退出Matlab的方法有三种:单击命令窗口右上角的关闭按钮窗口中输入quit后回车.

命令窗口是标准的Windows窗口形式,用户在命令窗口中输入各种指令,进行运算;在左侧的变量窗口中监控当前所创立的所有变量.

图1 图2

Current Directory是系统的当前工作路径,Matlab对函数或文件等进行搜索,用户每次文件的创建和保存都在这个路径下进行.启动Matlab时系统的默认工作路径是Matlab目录下的Work子目录,如果要改变当前的工作路径,可单击如图2所示的路径栏右侧的,在弹出的路径选择对话框内选择想要设置的路径.

二、使用Matlab的三个简单例子

先给出使用Matlab学习物理学的三个的例子,意在引导读者对Matlab的功能特点及语句编程有一个最初步了解. 1.绘制简谐振动的振动曲线 介绍二维绘图的语句. 简谐振动的运动学方程是x?Asin(?t??),可以根据这个方程利用Matlab的绘图语句画出简谐振动的位移

曲线.在命令窗口中输入命令如图3,运行结果如图4所示.

1

图3 图4

在这个例子中,a是振幅

A,omiga是圆频率?,phi是初相位?,t是自变量,开始时为这些参量以及自变量

赋值.可以看出,Matlab不像其它编程语言那样必须进行变量的预定义,创建变量和为变量赋值是同时完成的.另外,对时间t的赋值是一组数据,即从0到4π每隔0.05π取一个值,形成一个数组:t=[0 0.1571 0.3142?12.2522 12.4093 12.5664 ] (数组中的数用空格或逗号分开),共有81个元素. 语句中的pi是Matlab默认的常数π.

x=a*sin(omiga*t+phi)是建立表达式并运算,sin( )函数是Matlab的内置函数,直接调用即可;由此得出对应每一个t值的质点的位移x,x是一个与t所含元素个数相同的数组.

最后的plot(t,x)是二维绘图语句,表示以t为横坐标,x为纵坐标绘图,得出的就是正弦曲线.如果对各个参量取不同的值,得出的曲线形状也就不一样,读者不妨试一试.

对于数组t的赋值,一般格式为t=t0:tstep:tend.t0为数组中第一个元素的值,tend为最后一个元素的值,tstep为取值的间隔.

Matlab会根据计算结果自动调整坐标轴范围,当然也可以通过语句对坐标轴进行控制. 2.计算并图示等量异号点电荷的电势分布 介绍二维网格和三维曲面绘图的语句. 物理情景是Oxy平面上在x?2和y?0处有一正电荷,x??2和y?0处有一负电荷,根据U?q4??0r,

r?(x?x0)2?(y?y0)2计算两点电荷电场的电势分布.在命令窗口中输入命令如图5,运行结果如图6所示.

图5 图6

选定一系列的x和y后,就组成了平面上的网格点,再计算对应每一点上的z值.-5:0.2:5,-4:0.2:4分别是选取横坐标与纵坐标的一系列数值.meshgrid是生成数据网格的命令,[x,y]是Oxy平面上的坐标网格点.

z=1./sqrt((x-2).^2+y.^2+0.01)-1./sqrt((x+2).^2+y.^2+0.01)

是场点(x,y)的电势,sqrt( )是Matlab默认的函数—求变量的平方根.在电荷处会出现分母为零的情况,因此加了

小量0.01,这样既可以完成计算,又不会对结果造成太大影响.

注意表达式中的“./”和“.^”是对数组运算的算符,含义与数值运算中的“/”和“^”相同;差别是后者只对单个数值变量进行运算,前者对数组变量中的所有元素同时进行运算.

2

mesh是三维网格作图命令,mesh(x,y,z)画出了每一个格点(x, y)上对应的z值(电势). 3.logistic叠代图

xn?1??xn?1?xn?是一个著名的非线性方程,称为

(0?logistic方程,给定初值x0(0?x0?1)和系数???4)后,进行n次叠代,研究xn的变化趋势.

在命令窗口中输入命令如图7,运行结果如图8所示.

图7 图8

第一条语句是取初值x0,为了保证随机数x0在[0,1]内,使用了x0= abs(sin(randn)).其中abs( )是求绝对值,randn是生成一个随机数.

程序中用了for循环结构,循环变量为n.for循环结构的形式为 for n=N0:Nstep:Nend 循环体 end

for n=1:150,就是从n=1开始,把x0代入公式,对得到的结果x1描点;然后令x0=x1,再作为初值代入公式进行计算,直到n=150结束.这里的Nstep是取值间隔,默认为1,也可以取其它整数.

hold on是作图控制,即在图上绘出新的点时,保留上一次已经绘出来的点.如果没有这一句,图上只会留下最后一次叠代结果对应的点.

三、数据表示 运算符和表达式 1.数据格式及表示

Matlab使用常规的十进制表示法,小数位数不限,可以用加号和减号表示正负数.10的幂用e加上数字表示.虚数单位是i和j,数字后直接加上i或j表示虚数,中间不要有空格或者乘号;但表达式中要在变量名和虚数单位间加上*号.以下都是合法的数值表示法:

2?880.3219.68921.02e?66.02e85?3i?3.242i3e5i

2.运算符和操作符

(1)一般运算符.单个数据的运算有加,减,乘,除,幂和括号.所用的算符分别是:

?(2)操作符

?*/^()

①冒号“:”.此符号在矩阵(数组)的构造和运算中非常有用,可以用来产生矢量(数组),其基本用法有:

j:k

等价于[j,j+1,??,k],若j>k则返回空值.

j:i:k 等价于[j,j+i,j+2*i,??,k],i>0则要求jk,否则返回空值.

此外,冒号还可以用作矩阵的下标,以及部分的选择矩阵的元素,执行循环操作等,后面几节中会陆续介绍. ②百分号“%”.表示注释,即在一行中百分号后面的语句都被忽略而不被执行.

③连续点“…”.如一条命令很长,一行容不下,可用3个点加在此行的末尾,表示此行未完,在下一行继续.例如在建立等量异号点电荷电场中电势的表达式时,可以这样写:

3

z=1./sqrt((x-2).^2+y.^2+0.01)… -1./sqrt((x+2).^2+y.^2+0.01);

这样虽然占了两行,但Matlab仍然认为这是一条语句,不会出现错误. ④分号“;”.分号用在每行命令的结尾,要求执行命令但不显示计算结果. (3)关系运算符.关系运算符主要用于在数与数,矩阵与矩阵之间进行比较.

运算符 功能 < 小于 > 大于 <= 小于等于 >= 大于等于 == 等于 ~= 不等于 (4)逻辑运算符.

Matlab中包含与“&”,或“|”,非“~”,异或“xor”4种逻辑运算符.

3.变量与表达式

用运算符把数字、变量和函数组合在一起,就建立了一个表达式.例如前面例子中的x0=abs(sin(randn)),x=a*sin(omiga*t+phi)等.在Matlab中,一个变量可以通过给它分配一个数值或表达式来定义,如下所示:

variable =expression

变量的值可以通过输入它的名字?值(或表达式),并按回车键获得,Matlab以显示这个变量的名字和值作为回答.若这个变量不存在,就显示一个错误信息,如图9所示.

在expreesion之后可以加分号后按回车键,也可以直接按回车键.没有结尾分号的每个命令在屏幕上显示出其结果;若结尾带分号,就只执

行计算,计算结果并不显示. 图9

若不指定变量而直接输入expression项,则Matlab用ans(answer的缩写)显示这个值. 4.管理变量

使用以下命令了解当前工作窗口中的变量信息,清除不再需要的变量:who(列出当前工作窗口的变量),whos(列出变量,含矩阵尺寸等),clear(从内存中清除变量和函数). 5.基本数学函数(可直接调用)

①三角函数与双曲函数 名称 sin cos tan cot asin acos atan acot 含义 正弦 余弦 正切 余切 反正弦 反余弦 反正切 反余切 名称 sec csc asec acsc sinh cosh tanh coth 含义 正割 余割 反正割 反余割 双曲正弦 双曲余弦 双曲正切 双曲余切 名称 asinh acosh atanh acoth sech csch asech acsch 含义 反双曲正弦 反双曲余弦 反双曲正切 反双曲余切 双曲正割 双曲余割 反双曲正割 反双曲余割 ②对数函数 名称 Exp Log 含义 名称 log10 log2 含义 10为底的对数 2为底的对数 名称 pow2 sqrt 含义 2的幂 平方根 e为底的指数 自然对数 ③复数函数 名称 Abs Angle

4

含义 绝对值 相角 名称 conj imag 含义 复数共轭 复数虚部 名称 real 含义 复数实部