数学建模与数学实验
MATLAB入门数学建模及其基于 MATLAB的实现辽宁工程技术大学理学院应用数学系
MATLAB作为线性系统的一种分析和仿真工具,是理工科大学生应该掌握的技术工具,它作为一种编程语言和可视化工具,可解决 工程,
科学计算 和 数学学科 中许多问题。
MATLAB建立在 向量,数组 和 矩阵 的基础上,使用方便,人机界面直观,输出结果可视化 。
矩阵 是 MATLAB的核心
MATLAB的进入与运行方式(两种)
MATLAB入门一、变 量 与 函 数二、数 组三,矩 阵四,MATLAB编程五,实 验 作 业
1、变量
MATLAB中变量的 命名规则 是:
( 1)变量名必须是不含空格的单个词;
( 2)变量名区分大小写;
( 3)变量名最多不超过 19个字符;
( 4)变量名必须以字母打头,之后可以是任意字母、数字或下划线,变量名中不允许使用标点符号,
一、变 量 与 函 数特殊变量 取 值
a n s 用于结果的缺省变量名
pi 圆周率
e p s
计算机的最小数,当和 1 相加就产生一个比
1 大的数
f l o p s 浮点运算数
in f 无穷大,如 1 / 0
N a N 不定量,如 0 / 0
i,j i= j=
1?
n a r g i n 所用函数的输入变量数目
n a r g o u t 所用函数的输出变量数目
r e a l m i n 最小可用正实数
r e a l m a x 最大可用正实数特殊变量表
2、数学运算符号及标点符号
+ 加法运算,适用于两个数或两个同阶矩阵相加,
— 减法运算
* 乘法运算
.* 点乘运算
/ 除法运算
./ 点除运算
^ 乘幂运算
.^ 点 乘幂运算
\ 反斜杠表示左除,
( 1) MATLAB的每条命令后,若为 逗号 或 无标点 符号,
则显示命令的结果;若命令后为 分号,则禁止显示结果,
( 2),%” 后面所有文字为注释,
( 3),,..”表示续行,
函 数 名 称 函 数 名 称
s i n ( x ) 正弦函数 a s i n ( x ) 反正弦函数
c o s ( x ) 余弦函数 a c o s ( x ) 反余弦函数
t a n ( x ) 正切函数 a t a n ( x ) 反正切函数
a b s ( x ) 绝对值 m a x ( x ) 最大值
m i n ( x ) 最小值 s u m ( x ) 元素的总和
s q r t ( x ) 开平方 e x p ( x ) 以 e 为底的指数
l o g ( x ) 自然对数
)(l og
10
x
以 10 为底的对数
s i g n ( x ) 符号函数 f i x ( x ) 取整
3、数学函数
MATLAB的内部函数是有限的,有时为了研究某一个函数的各种性态,需要为 MATLAB定义新函数,
为此必须编写函数文件,函数文件是文件名后缀为 M
的文件,这类文件的 第一行必须是一特殊字符
function开始,格式为:
function 因变量名 =函数名(自变量名)
函数值的获得必须通过具体的运算实现,并赋给因变量,
4,M文件
M文件建立方法,1,在 Matlab中,点,File->New->M-file
2,在编辑窗口中输入程序内容
3,点,File->Save,存盘,M文件名必须与函数名一致。
Matlab的应用程序也以 M文件保存。
例:定义函数 f(x1,x2)=100(x2-x12)2+(1-x1)2
function f=fun(x)
f=100*(x(2)-x(1)^2)^2+(1-x(1))^2
1.建立 M文件,fun.m
MATLAB
(fun)
2,可以直接使用函数 fun.m
例如:计算 f(1,2),只需在 Matlab命令窗口键入命令:
x=[1 2]
fun(x)
返回
x=logspace(first,last,n)
创建从开始,到结束,有 n个元素的对数分隔行向量,
1、创建简单的数组二、数 组 MATLAB(shuzu1)
x=[a b c d e f ] 创建包含指定元素的行向量
x=first,last
创建从 first开始,加 1计数,到 last结束的行向量
x=first,increment,last
创建从 first开始,加 increment计数,last结束的行向量
x=linspace(first,last,n)
创建从 first开始,到 last结束,有 n个元素的行向量
2,数组元素的访问
MATLAB
(shuzu2)
( 3) 直接使用元素编址序号,x([a b c d]) 表示提取数组 x的第 a,b,c,d个元素构成一个新的数组
[x(a) x(b) x(c) x(d)],
( 2) 访问一块元素,x(a,b,c)表示访问数组 x的从第 a
个元素开始,以步长为 b到第 c个元素(但不超过 c),b可以为负数,b缺损时为 1,
( 1) 访问一个元素,x(i)表示访问数组 x的第 i个元素,
3、数组的方向前面例子中的数组都是一行数列,是行方向分布的,
称之为 行向量,数组也可以是 列向量,它的数组操作和运算与行向量是一样的,唯一的区别是结果以列形式显示,
产生列向量有两种方法:
直接产生 例 c=[1; 2; 3; 4]
转置产生 例 b=[1 2 3 4]; c=b’
说明:以 空格 或 逗号 分隔的元素指定的是不同列的元素,而以 分号 分隔的元素指定了不同行的元素,
4、数组的运算
( 1)标量 -数组运算数组对标量的加、减、乘、除、乘方是数组的每个元素对该标量施加相应的加、减、乘、除、乘方运算,
设,a=[a1,a2,…,a n],c=标量则,a+c=[a1+c,a2+c,…,a n+c]
a.*c=[a1*c,a2*c,…,a n*c]
a./c= [a1/c,a2/c,…,a n/c](右除)
a.\c= [c/a1,c/a2,…,c/a n] (左除)
a.^c= [a1^c,a2^c,…,a n^c]
c.^a= [c^a1,c^a2,…,c^a n] MATLAB(shuzu3)
( 2) 数组 -数组运算当两个数组有相同维数时,加、减、乘、除、
幂运算可按 元素对元素 方式进行的,不同大小或维数的数组是不能进行运算的,
设,a=[a1,a2,…,a n],b=[b1,b2,…,b n]
则,a+b= [a1+b1,a2+b2,…,a n+bn]
a.*b= [a1*b1,a2*b2,…,a n*bn]
a./b= [a1/b1,a2/b2,…,a n/bn]
a.\b=[b1/a1,b2/a2,…,b n/an]
a.^b=[a1^b1,a2^b2,…,a n^bn]
MATLAB
(shuzu4)
返回三,矩 阵逗号 或 空格 用于分隔某一行的元素,分号 用于区分不同的行,除了分号,在输入矩阵时,按 Enter键也表示开始一新行,输入矩阵时,严格要求所有行有相同的列,
例 m=[1 2 3 4 ; 5 6 7 8; 9 10 11 12]
p=[1 1 1 1
2 2 2 2
3 3 3 3]
1、矩阵的建立特殊矩阵 的建立,,
MATLAB
(matrix1)
d=eye(m,n) 产生一个 m行,n列的单位矩阵
c=ones(m,n) 产生一个 m行,n列的元素全为 1的矩阵
b=zeros(m,n) 产生一个 m行,n列的零矩阵
a=[ ] 产生一个空矩阵,当对一项操作无结果时,返回空矩阵,空矩阵的大小为零,
2、矩阵中元素的操作
MATLAB
(matrix2)
( 1)矩阵 A的第 r行,A( r,:)
( 2)矩阵 A的第 r列,A(:,r)
( 4)取矩阵 A的第 i1~i2行、第 j1~j2列构成新矩阵,A(i1:i2,j1:j2)
( 5)以逆序提取矩阵 A的第 i1~i2行,构成新矩阵,A(i2:-1,i1,:)
( 6)以逆序提取矩阵 A的第 j1~j2列,构成新矩阵,A(:,j2:-1,j1 )
( 7)删除 A的第 i1~i2行,构成新矩阵,A(i1:i2,,)=[ ]
( 8)删除 A的第 j1~j2列,构成新矩阵,A(:,j1:j2)=[ ]
( 9)将矩阵 A和 B拼接成新矩阵,[A B]; [A; B]
( 3)依次提取矩阵 A的每一列,将 A拉伸为一个列向量,A(:)
( 2)矩阵 -矩阵运算
[1] 元素对元素 的运算,同数组 -数组运算。
3、矩阵的运算
( 1)标量 -矩阵运算同标量 -数组运算。
MATLAB
(matrix3)
[2]矩阵运算:
矩阵加法,A+B
矩阵乘法,A*B
方阵的行列式,det( A)
方阵的逆,inv( A)
方阵的特征值与特征向量,[V,D]=eig[A]
返回关系与逻辑运算
1、关系操作符关系操作符 说明
< 小于
<= 小于或等于
> 大于
>= 大于或等于
= = 等于
~= 不等于
2,逻辑运算符逻辑操作符 说明


~
与或非
1,for循环,允许一组命令以固定的和预定的次数重复
for x=array
{commands}
end
在 for和 end语句之间的命令串 {commands}按数组( array)中的每一列执行一次,在每一次迭代中,x被指定为数组的下一列,即在第 n次循环中,x=array(:,n)
控制流
MATLAB提供三种决策或控制流结构:
for循环,while循环,if-else-end结构,
这些结构经常包含大量的 MATLAB命令,故经常出现在
MATLAB程序中,而不是直接加在 MATLAB提示符下,
例 对 n=1,2,…,10,求 xn= 的值
10sin
n
MATLAB
(for1)
while expression
{commands}
end
只要在表达式 (expression)里的所有元素为真,就执行 while和
end语句之间的命令串 {commands},
2,While循环与 for循环以固定次数求一组命令相反,while循环以不定的次数求一组语句的值,
MATLAB
(while1)
例 设银行年利率为 11.25%。将 10000元钱存入银行,
问多长时间会连本带利翻一番?
3,If-Else-End结构
( 1)有一个选择的一般形式是:
if expression
{commands}
end
如果在表达式 (expression)里的所有元素为真,
就执行 if和 end语句之间的命令串 {commands},
MATLAB
(fun1)
)1(),2(,
12
11)( 2?
ff
xx
xxxf 求设例先建立 M文件 fun1.m定义函数 f( x),再在
Matlab命令窗口输入 fun1(2),fun1(-1)即可。
2) 有三个或更多的选择的一般形式是:
if ( expression1)
{commands1}
else if ( expression2)
{commands2}
else if ( expression3)
{commands3}
else if ……
…………………………………
else
{commands}
end
end
end
……
end
)1(),5.0(),2(,
0x
1x02
1x1x
f ( x )
3
2


fff
x
x 求设例先建立 M文件 fun2.m定义函数 f( x),再在
Matlab命令窗口输入 fun2(2),fun2(0.5),fun2(-1)即可。
MATLAB(fun2)
返回对以下问题,编写 M文件,
(1)用起泡法对 10个数由小到大排序,即将相邻两个数比较,将小的调到前头,
(2)有一个 矩阵,编程求出其最大值及其所处的位置,
(3)编程求
(4)一球从 100米高度自由落下,每次落地后反跳回原高度的一半,再落下,求它在第 10次落地时,共经过多少米?第 10次反弹有多高?
(5)有一函数,写一程序,输入自变量的值,输出函数值,
54?
20
1
!
n
n
yxyxyxf 2s i n),( 2
实验作业返回谢 谢!