数学软件 —— MatLab的使用主要内容:
数值 处理优化 求解数理 统计
目前主要代表性数学软件数值处理 MatLab
符号运算 Maple
数理统计 SAS
专门软件:
集成软件:
优化软件 LinGo
统计软件 S-Plus
一,软件简介
1.软件特点,
名称,Matrix Laboratory(矩阵实验室)
数据,向量,矩阵,符号图形,折线图使用,交互 命令,程序 调用
M语言,类似 C语言帮助,强大的即时帮助类似 foxpro
Maple
2.软件的应用领域数值运算线性代数问题微积分问题数值计算问题行列式计算向量、矩阵运算线性方程组求解多项式的微积分定积分、重积分的数值计算微分方程及方程组的数值解方程求根插值与拟合,数值计算方法,
专业工具包
(程序库)
优化工具箱统计工具箱遗传算法工具箱偏微分方程 工具箱
Optimization toolbox
Statistics toolbox
Genetic Algorithm Toolbox
Partial Differential Equation toolbox
Fuzzy Logic toolbox模糊逻辑工具箱
Neural Network toolbox神经网络工具箱
………
计算机模拟 M语言
3.软件的界面与使用说明界面菜单栏快捷按钮栏命令区双击图标打开交互式数据输入结果反馈
使用说明菜单栏作用,引导、另存工作区中的变量及其值作用,设置工作路径作用,清理工作区作用,联机帮助命令方式,clc
快捷按钮栏作用,新建文件作用,打开文件作用,查看工作区变量作用,设置工作路径作用,联机帮助工作区 变量、数据命令、函数运算区分大小写在光标处直接输入要求 小写输入后加,;”
则不显示 反馈结果光标输入后直接敲回车则 显示 反馈结果
工作区编辑方法:
1.,↑↓←→” 键的使用
←→键:输入时做 行编辑 (修改)
↑↓键:输入时 调出 历史输入记录(便于重复输入)
2.,Esc” 键的使用重新输入(清除输入行)
变量的保存与导入:
保存,save 文件名 变量列表(分隔符”空格“)
导入,load 文件名
变量的处理:
查看,who
清除,clear 变量列表(默认为全部变量)
输入 help 函数名或命令名
联机帮助
2.按功能查找函数:
1.演示:输入 demo
3,查看函数使用说明:
(简单说明)
二,基础知识
1.数据结构数据类型常量变量函数字符串常数向量矩阵自定义系统默认自定义系统库常用数学函数专业函数 (程序库 )
程序数学函数脚本
‘char’,’中文 ’
1.2,2i
[1,2,3]
[1,2,3;3.1,0,0]
x1,ab_1,A (区分大小写)
系统默认变量
pi π
eps ε≈2.2204× 10-16
i 或 j 虚数
inf ∞
ans 缺省结果变量
NaN 不定值常用数学函数特殊函数基本初等函数
abs( ) |x|
floor( ) [x]
sign( ) 符号
rem( ) 余同 C语言
Elementary math function
帮助
2.向量、矩阵的使用
(1).向量使用
① 赋值行向量,变量= [ 数值 1,数值 2 数值 3,…,数值 n]
续行号列向量,变量= [ 数值 1;数值 2;数值 3; … ; 数值 n]
转置
② 引用分量:变量 ( i )
部分分量:变量 ( I )
下标集
(向量 )
下标
③ 行向量构造
Ⅰ,由步长确定:起始值,步长,终止值省缺为 1
Ⅱ,由维数确定,linspace(起始值,终止值,维数 )
库函数
Ⅲ,特殊向量,zeros(1,n)或 zeros(n,1)
库函数
ones(1,n)或 ones(n,1)
③ 运算
Ⅰ,转置,向量 ’
Ⅱ,四则运算:
和差内积数乘点积、点商*
向量的函数向量的幂
④ 向量的模长 (范数 )
norm(V,P) =,
norm (V) = norm(V,2).
norm (V,inf) = max(|V|).
norm (V,-inf) = min(|V|).
1
1
||
n pp
i
i
V



⑤ 向量的扩充
(2).矩阵使用
① 赋值矩阵,变量= [ 行向量 1;行向量 2 ; … ; 行向量 n]
② 引用分量:变量 ( i,j )
行向量:变量 ( i,,)
列向量:变量 (,,j )
子矩阵:变量 (I,J )
行下标集
(向量 )
列下标集
(向量 )
列 1 2 3 行1
2
行2
1
列 1 3
A21 A23
A11 A13
③ 矩阵构造
Ⅰ,由向量生成:矩阵= [行向量 1;行向量 2]
或 矩阵= [列向量 1,列向量 2]
Ⅱ,特殊矩阵,zeros(m,n)
ones(m,n)
eye(m,n)
Ⅲ,稀梳矩阵:
sparse(I,J,非零值向量 )
行对应位置列对应位置
0 1 0 0
0 0 0 0
0 0 0 2
0 0 0 0
4 0 0 0
full(稀梳矩阵)
1 2 3 4
1
2
3
4
5
③ 运算
Ⅰ,转置,矩阵 ’
Ⅱ,四则运算:
和差积数乘点积、商矩阵的函数矩阵的幂方阵的逆 inv(矩阵)
方阵的行列式 det(矩阵)
矩阵的秩 rank(矩阵)
④ 矩阵的范数
NORM(X) 矩阵 X的最大奇异值,
NORM(X,2) 同上,
NORM(X,1) = max(sum(abs((X)))).
NORM(X,inf) = max(sum(abs((X')))).
NORM(X,‘fro’)= sqrt(sum(diag(X'*X))),
补充:由分量产生向量和矩阵
3.数据文件(自定义数学函数)的使用
(1).新建文件编辑区
function 因变量=函数名 (自变量列表 )
% 行注识标志因变量=自定义数学函数表达式;
豆号为分割符例:建立 z=sinxy+e(x+y),其中 x,y是 向量,
a.定义,数量函数
function [因变量列表 ]=函数名 (自变量列表 )
% 行注识标志因变量 1=自定义数学函数表达式 1;
因变量 2=自定义数学函数表达式 2;
……………
向量函数 豆号为分割符例:建立
f=sinxy+e(x+y),
g1=x2,
g2=y2,
其中 x,y是 数量
b.保存:
c.修订:
(2).调用变量=文件名(参变量列表)
[变量 1,变量 2,…] =文件名(参变量列表)
4.作图 方式:描点法 —— 两点间用直线相连
(1).平面曲线
plot(自变向量,因变向量,‘ 特征字符 ’ )
Ⅰ,一条曲线说明:
字符连线方式连线颜色点式线式
- 实线
.-点划线
-- 虚线
.
o
*
+
x
r
y
g
b
k
plot(x1,y1,‘ sc’,x2,y2,‘ sc’,…,)
Ⅱ,多条曲线
Ⅲ,图像控制
hold on(off) 保留当前图像 (刷新图像)
cla 清除当前图像
(2).空间曲线
plot3(x(t),y(t),z(t),‘ sc’)
向量
x=x(t)
y=y(t)
z=z(t)
(3).空间曲面 z = f (x,y)
a.网格矩阵
x
y
x1 x2 xn
ym
y2
y1 z11 z21 ….,zn1
z12 z22 ….,zn2
…..
z1m z2m ….,znm
mesh(x,y,Z) 网格矩阵向量
x=[x1,x2,….,xn]
y=[y1,y2,….,ym] z
11 z21 ….,zn1
z12 z22 ….,zn2
…..
z1m z2m ….,znm
Z=
mesh(X,Y,Z)

x1 x2 ….,xn
x1 x2 ….,xn
…..
x1 x2 ….,xn
X=
y1 y1 ….,y1
y2 y2 ….,y2
…..
ym ym ….,ym
Y=
b.作图
94A 逢山开路
c.网格矩阵的生成
[X,Y]=meshgrid(x,y)
Z= f (X,Y)

d.等高线的制作生成 contour(Z,n)
标值 clabel(cs) 其中 cs= contour(Z,n)
e.图像标注
title(‘char’)
xlabel (‘char’),ylabel (‘char’),zlabel (‘char’)
text(x,y,‘char’),text(x,y,z,‘char’)
gtext(‘char’) 只适用平面曲线
f.图像拷贝
g.图像修饰
1,自建函数(程序)
(1).新建文件编辑区三,编程
function 返回值=函数名 (参变量列表 )
% 行注识标志语句体豆号为分隔符
function 函数名 (参变量列表 )
% 行注识标志语句体
function [返回值列表 ]=函数名 (参变量列表 )
% 行注识标志语句体
(2).结构
(3).保存:
(4).语句体赋值语句,变量=数学表达式或函数 ;
如 x=y+1; x=linspace(1,3,5);
输入语句:变量= input(‘提示字符串‘ );
变量= input(‘提示字符串‘,’ s’);
输出 赋值语句后不加’ ; ’
即可循环语句 1,for 循环变量=向量语句体 ;
end
调用循环语句 2,while 条件表达式语句体 ;
end
1.关系运算符 等于 == 不等于 ~=
小于 < 小于等于 <=
大于 > 大于等于 >=
关于条件表达式:
2.逻辑 运算符 与 &
或 |
非 ~
条件语句,if 条件表达式语句体 1;
else
语句体 2;
end
分支语句 1,if 条件表达式语句体 1;
elseif 条件表达式语句体 2;
else
语句体 3;
end
分支语句 2,switch 分支表达式
case 结果 1
语句体 1;
case {结果 2,结果 3}
语句体 2;
...
otherwise
语句体 n;
end
(5).说明调用,[返回值列表 ]=文件名 (参数列表)
变量=库函数 (‘文件名 ’,参数列表)
变量范围,默认为局部变量全局变量标明,global 变量组 作用范围在程序之间空格为分隔符
0 1 2 3 4 5 6 7 8 9 10
0
1
2
3
4
5
6
7
99B 油井问题
a=[.5 1.4 1 3,3.37 3.4 4.72 4.72 5.43 5.57 8.38 8.98 9.5];
b=[2,3.5 1.5 3.51 5.5 2,6.24 4.1 2.01 4.5 3.41,8 ];
ε=0.05 di=max{|ai- x|,|bi- x|}
数学模型数学模型,max 12
1
(,)i
i
u s t
1,i nt ( )
.,(,) i nt ( )
0,
11
,
22
ii
i i i
a s a s and
s t u s t b s b t
ot he r
st





编程
function c99b(sn)
%油井问题
global a b eps
a=[.5 1.41 3,3.37 3.4 4.72 4.72 5.43 5.57 8.38 8.98 9.5];
b=[2,3.5 1.5 3.51 5.5 2,6.24 4.1 2.01 4.5 3.41,8 ];
eps=.05;
h=1/sn;
s0=-.5;t0=-.5;
for m=0:sn
for n=0:sn
si=s0+m*h;
ti=t0+n*h;
for k=1:12
ui(k)=ui_st(k,si,ti);
end
u(m+1,n+1)=sum(ui);
end
end
建 c99b.m程序文件
[uim,SM]=max(u);
[umax,N]=max(uim);
M=SM(N);
umax
s_opt=s0+M*h
t_opt=t0+N*h
plot(a,b,'*',s_opt,t_opt,'or')
function u=ui_st(k,s,t)
global a b eps
inta=floor(a(k)+eps-s);
intb=floor(b(k)+eps-t);
if inta>=a(k)-eps-s&intb>=b(k)-eps-t
u=1;
else
u=0;
end
求解
1 2 3 4 5 6 7 8 9 10
0
1
2
3
4
5
6
7
×?ó? ×?ó?
×?ó?
×?ó?
最短路 floyd算法
function [D,path]=floyd(a)
% Floyd's Slgorithm
%[D,path]=floyd(a)
%a是权矩阵,D是最短路程矩阵,path是最短路径矩阵
n=size(a,1);
D=a;path=zeros(n,n);
for i=1:n
for j=1:n
if D(i,j)~=inf
path(i,j)=j;
end
end
end
for k=1:n
for i=1:n
for j=1:n
if D(i,k)+D(k,j)<D(i,j)
D(i,j)=D(i,k)+D(k,j);
path(i,j)=path(i,k);
end
end
end
end
2,脚本文件
(1).新建文件 同自定义函数
(2).结构 不加函数说明语句,
其它同自定义函数,
(3).调用 文件名
(4).与函数区别,变量均保留在工作区
94A 逢山开路
0
2000
4000
6000
0
2000
4000
6000
0
500
1000
1500
2000
3,ASCII文件的读入打开文件并赋予文件指针,
fid = fopen(‘文件名 ',‘r’)
读入,
变量 = fread(fid,SIZE)
移动文件指针,
fseek(fid,偏移 量,起点 )
>0,后移
<0,前移
-1 文件头
0 当前
1 文件尾
4,图像 文件的读入读入图像文件,
矩阵变量 = imread(‘文件名’,‘图像文件类型’ )
'jpg' or 'jpeg'
'tif' or 'tiff'
'bmp'
1.线性代数线性方程组求解方程组,Ax=b
最小二乘 解,x=A\b
四,数值计算
2.多项式运算
(1).多项式的系数向量
11 1 0nnnna x a x a x a
1 1 0[,,,,]nna a a a?
(2).多项式的值函数值= polyval(系数向量,自变量)
(3).多项式的根所有根= roots(系数向量 )
2.微积分
(1).数值积分,a.
值 = quad(‘被积函数名 或 文件名 ',a,b)
()ba f x dx?
0 si n xdx

(,)bdacdx f x y dy
b.
值 =dblquad(‘被积函数文件名 ',a,b,c,d)
(2).常微分方程初值问题数值解
a.一阶方程 y ’ = f(x,y),y(0)=y0
[x,y]= ode23(‘函数名‘,[x0,xn],y0)
x
x0
x1
.
.
.
xn
函数关系
y
y0
y1
.
.
.
yn
functio f=函数名 (x,y)
f=f(x,y);
b.方程组
[x,w]= ode23(‘函数名‘,[x0,xn],[y0,z0])
0 0 0 0
(,,)
(,,)
( ),( )
y f x y z
z g x y z
y x y z x z



functio f=函数名 (x,w)
f(1,1)=f(x,w(1),w(2));
f(2,1)=g(x,w(1),w(2));
x
x0
x1
.
.
.
xn
函数关系
y
y0
y1
.
.
.
yn
z
z0
z1
.
.
.
zn
c.二阶方程
0 0 0 1
(,,)
( ),( )
y f x y y
y x y y x y


方程组令 z= y‘
0 0 0 1
(,,)
( ),( )
yz
z f x y z
y x y z x y



1 1 1 2 3
2
1 2 3
2 1 2 3
21 2
1 2 3
3 1 2 3
31 2
1 2 3
1 2 3
,
,
,
( 0) 0,6,( 0) 0,21,( 0) 0,29 4
dy r R y y y
dt y y y
dy y y y
Ry
dt y y y
dy y y y
Ry
dt y y y
y y y








1 2 30,5,0,0 0 0 2,0,0 0 0 0 2,3 0,
0,2 2,1 0 0,0,2 2,0,0 8,1,6
R R R r



植物生长问题数学模型编程建脚本文件 ex_ode.m
[t,y]=ode23('plant',[0,300],[.6,.21,.294])
建自定义函数 plant.m
function f=plant(t,y)
R1=.5;R2=.0002;R3=.00002;
r=30;lu=100;lm=.22;af=.08;bt=1.6;
temp=af*y(1)*y(2)*y(3)/(y(1)^2+bt*y(2)*y(3));
f(1,1)=r*R1*temp/lu;
f(2,1)=lu*R2*y(1)-temp;
f(3,1)=lu*R3*y(1)-lm*temp;
求解在工作区输入 ex_ode
敲回车,得
t =
0
3.0322
13.6998
26.9473
43.8388
65.5689
93.4451
123.4451
153.4451
183.4451
213.4451
243.4451
273.4451
300.0000
y =
0.6000 0.2100 0.2940
0.6030 0.2263 0.2932
0.6148 0.2780 0.2890
0.6311 0.3338 0.2815
0.6540 0.3983 0.2696
0.6856 0.4786 0.2524
0.7285 0.5867 0.2288
0.7766 0.7175 0.2035
0.8260 0.8693 0.1792
0.8760 1.0461 0.1568
0.9264 1.2507 0.1369
0.9770 1.4847 0.1199
1.0276 1.7485 0.1058
1.0725 2.0066 0.0956