搜档网
当前位置:搜档网 › MATLAB经典数学建模教程

MATLAB经典数学建模教程

MATLAB经典数学建模教程
MATLAB经典数学建模教程

第 1 节Matlab 基本知识

一、Matlab 的主要功能

Matlab是一种功能非常强大的工程语言,诞生于20世纪70年代,1984年正式推向市场。2002年8月,Matlab6.5开始发布。是进行科学研究和产品开发必不可少的工具。

●数值和符号计算

矩阵(数组)的四则运算(Matrix+Laboratory)、数值差分、导数、积分、求解微分方程、微分方程的优化等

●数字图像、数字信号处理

●工程和科学绘图

●控制系统设计

●财务工程

●建模、仿真功能

二、Matlab 的界面

1.命令窗口(Command Window):

Matlab各种操作命令都是由命令窗口开始,用户可以在命令窗口中输入Matlab命令,实现其相应的功能。此命令窗口主要包括文本的编辑区域和菜单栏(如:四则运算;“;”禁止显示变量的值;↑↓遍历以前的命令)。在命令窗口空白区域单击鼠标右键,打开快捷菜单,各项命令功能如下:

Evaluate Selection :打开所选文本对应的表达式的值。

Open Selection :打开文本所对应的MatLab文件。

Cut :剪切编辑命令。

Paste :粘贴编辑命令。

2. M-文件编辑/调试(Editor/Debugger)窗口

Matlab Editor/Debugger窗口是一个集编辑与调试两种功能于一体的工具环境。

M-文件(函数文件)

●什么是M-文件:它是一种和Dos环境中的批处理文件相似的脚本文件,对于简单问题,

直接输入命令即可,但对于复杂的问题和需要反复使用的则需做成M-文件(Script File)。

●创建M-文件的方法:

Matlab命令窗的File/New/M-file。

在Matlab命令窗口运行edit。

●M-文件的扩展名:*.m

●执行M-文件:F5

●M文件的调试

选择Debug菜单,其各项命令功能如下:

Step :逐步执行程序。

Step in :进入子程序中逐步执行调试程序。

Step out :跳出子程序中逐步执行调试程序。

run:执行M-文件。

Go Until Cursor :执行到光标所在处。

Exit Debug Mode :跳出调试状态。

●函数文件的创建要求:文件名与函数名必须相同,如sin(x)必有sin.m函数文件存在。

要求实参和形参位置一一对应。形参在工作空间中不会存在。

可以编写递归函数,可以嵌套其他函数。

可以用return命令返回,也可以执行到终点返回

3.工作空间(Workspace)窗口:

显示目前保存在内存中的Matlab的数学结构、字节数、变量名以及类型窗口。

保存变量:File菜单\Save Workspace as 命令行:save 文件名

装入变量:File菜单\Import Data 命令行:Load 文件名

4.现在目录窗口(Current Directory)

5.命令历史窗口(Command History ):提供先前使用过的函数,可以复制或者再次执行这些命令。

Matlab帮助系统

Matlab在命令窗口提供了可以获得帮助的命令,用户可以很方便的获得帮助信息。例如:在窗口中输入“help fft”就可以获得函数“fft”的信息。常用的帮助信息有help ,demo ,doc ,who ,whos ,what ,which ,lookfor ,helpbrowser ,helpdesk ,exit ,web 等。

三、关于变量

变量命名规则:

●变量名是不包含空格的单个词

●变量名区分大小写

●变量名必须以字母开头的字母、数字、下划线的组合,最多19个字符。

●Matlab提供的标准函数名均以小写字母开头

特殊变量名:

●ans 缺省变量名

●pi 圆周率

●i,j 虚数单位

●eps 无穷小

●inf ,Inf 无穷大

●realmax 最大正实数

●realmin 最小正实数

清除变量的值

●clear

●clear 变量名1 变量名2

显示驻留内存的变量名

●who

●whos

第 2 节Matlab编程

一、矩阵(数组)的输入

1、直接输入

直接按行方式输入每个元素:同一行中的元素用逗号(,)或者用空格符来分隔,且空格个数不限;不同的行用分号(;)分隔。所有元素处于一方括号([ ])内;多维矩阵用多重方括弧。可建立复数矩阵

如:Null_M = [ ] %生成一个空矩阵

可建立复数矩阵

R=[1,2,3;4,5,6]

I=[7,8,9;10,11,12]

Z=R+I*j

2. 由M文件方式建立,今后使用键入M文件名即可建立相应矩阵

2、利用函数输入

“:”表达式,产生等差行向量start:step:end 或start:end(step=1)如:t=1:20

产生等距输入:linspace(a,b,n)将〔a,b〕区间分成n-1个等距小区间

产生随机排列:randperm(n) 产生1~n之间整数的随机排列

3、特殊矩阵输入

以下各函数同理具有该类型。

ones(a,b)元素全为1的a×b维矩阵

eye(a,b)对角线上的元素为1的a×b维矩阵

rand(a,b)产生a×b维均匀分布的随机矩阵,其元素在(0,1)内

rand 无变量输入时只产生一个随机数

randn(a,b)产生a×b维正态分布的随机矩阵

4.矩阵的转置和逆矩阵

?X的转置:X’( 图像顺时针旋转90°,并水平镜像)

如:a=imread('D:\2-1.bmp');

b=a';

subplot(1,2,1),subimage(a),subplot(1,2,2),subimage(b)

?X的逆矩阵inv(X)

二、矩阵元素的访问及其大小的确定

访问第n个元素:X(n)(n>=1)

访问多个元素:X ([n1,n2,n3……]) 或X(1:10)

确定元素的个数:numel(X)

确定矩阵的大小:[m,n,l]=size(X)

三、矩阵的算数运算

●数与矩阵的运算:m等价于m.

m+A : m与A中各元素相加

m-A : m与A中各元素相减

m×A : m与A中各元素相乘

m. /A : m除以A中各元素(没有m/A)

m \ A : A中各元素除以m

矩阵与矩阵的运算

A+B: A、B对应元素相加

A-B: A、B对应元素相减

A×B: A、B矩阵按线性代数中矩阵乘法运算进行相乘(注意维数匹配)

A.*B: A、B对应元素相乘(注意维数相同)

A / B: A除以B矩阵(?A×B-1)(注意维数匹配)

A./B: A除以B中各元素

A \ B: B除以A矩阵(?A-1×B)(注意维数匹配)

A.\B: B除以A中各元素

A^m:相当于矩阵A×矩阵A×矩阵A…….(m为小数即是矩阵的开方运算)(注意维数匹配)

A.^m:矩阵A中各元素的m次方

A.^B:矩阵A中各元素的进行B中对应元素次方(注意维数相同)

四、关系运算

<、<=、>、>=、= =、~ = 六种关系运算符。关系成立结果为1,否则为0。

五、逻辑运算

设矩阵A和B都是m×n矩阵或其中之一为标量,在MATLAB中定义了如下的逻辑运算:&、|、~、xor(真为1,假为0)

(1)矩阵的与运算

格式A&B或and(A, B)

说明A与B对应元素进行与运算,若两个数均非0,则结果元素的值为1,否则为0。

(2)或运算

格式A|B或or(A, B)

说明A与B对应元素进行或运算,若两个数均为0,则结果元素的值为0,否则为1。

(3)非运算

格式~A或not (A)

说明若A的元素为0,则结果元素为1,否则为0。

(4)异或运算

格式xor (A,B)

说明A与B对应元素进行异或运算,若相应的两个数中一个为0,一个非0,则结果为0,否则为1。

六、集合运算

1.两个集合的交集intersect

2.检测集合中的元素ismember

3.两集合的差setdiff

4.两个集合交集的非(异或)函数setxor

5.两集合的并集union

6.取集合的单值元素 unique

七、MatLab 的控制流

由各种语句构成 语句后面加“;”号,不显示运算结果 %开头表示是注释语句 赋值语句 变量=表达式

表达式 (相当于将值付给ans 变量)

演示(三)

for 循环结构

【例】一个简单的for 循环示例。

for i=1:10; %i 依次取1,2,…10,.

x(i)=i; %对每个i 值,重复执行由该指令构成的循环体, end;

x

%要求显示运行后数组x 的值。

x =

1 2 3 4 5 6 7 8 9 10

while 循环结构

【例】Fibonacci 数组的元素满足Fibonacci 规则:12+++=k k k a a a ,),2,1( =k ;且

121==a a 。现要求计算出该数组中第一个大于10000的元素。

a(1)=1;a(2)=1;i=2; while a(i)<=10000 a(i+1)=a(i-1)+a(i); %当现有的元素仍小于10000时,求解下一个元素。

i=i+1;

end; i,a(i), i =

21 ans =

10946

if-else-end 分支结构

【例1】一个简单的分支结构。

cost=10;number=12; if number>8

sums=number*0.95*cost; end,sums sums = 114.0000

【例2】用for 循环指令来寻求Fibonacc 数组中第一个大于10000的元素。

n=100;a=ones(1,n);

for i=3:n

a(i)=a(i-1)+a(i-2);

if a(i)>=10000

a(i),

break; %跳出所在的一级循环。

end;

end,i

ans =

10946

i =

21

switch-case结构

【例】学生的成绩管理,演示switch结构的应用。

clear;

%划分区域:满分(100),优秀(90-99),良好(80-89),及格(60-79),不及格(<60)。

for i=1:10;a{i}=89+i;b{i}=79+i;c{i}=69+i;d{i}=59+i;end;c=[d,c];

Name={'Jack','Marry','Peter','Rose','Tom'}; %元胞数组

Mark={72,83,56,94,100};Rank=cell(1,5);

%创建一个含5个元素的构架数组S,它有三个域。

S=struct('Name',Name,'Marks',Mark,'Rank',Rank);

%根据学生的分数,求出相应的等级。

for i=1:5

switch S(i).Marks

case 100 %得分为100时

S(i).Rank='满分'; %列为'满分'等级

case a %得分在90和99之间

S(i).Rank=' 优秀'; %列为'优秀'等级

case b %得分在80和89之间

S(i).Rank=' 良好'; %列为'良好'等级

case c %得分在60和79之间

S(i).Rank=' 及格'; %列为'及格'等级

otherwise %得分低于60

S(i).Rank='不及格'; %列为'不及格'等级

end

end

%将学生姓名,得分,登记等信息打印出来。

disp(['学生姓名 ',' 得分 ',' 等级']);disp(' ')

for i=1:5;

disp([S(i).Name,blanks(6),num2str(S(i).Marks),blanks(6),S(i).Rank]); end;

学生姓名得分等级

Jack 72 及格

Marry 83 良好

Peter 56 不及格

Rose 94 优秀

Tom 100 满分

try-catch结构

【例】try-catch结构应用实例。

clear,N=4;A=magic(3); %设置3行3列矩阵A。

try

A_N=A(N,:), %取A的第N行元素

catch

A_end=A(end,:), %如果取A(N,:)出错,则改取A的最后一行。end

lasterr %显示出错原因

A_end =

4 9 2

ans =

Index exceeds matrix dimensions.

第二章 符号数学工具(Symbolic Math Toolbox )

第 1 节 符号表达式

● 符号表达式是代表数字、函数、算子和变量的MATLAB 字符串,或字符串数组。不要求变量有预先确定的值,符号方程式是含有等号的符号表达式。如表2.1所列。

表2.1

符号表达式

在MATLAB 中的表示

12x n

' 1/(2*x^n) '

1

2y x

=

y= ' 1/sqrt(2*x) ' cos()sin()x x 22-

' cos(x^2)-sin(2*x) ' M a b c d =????

?

?

M=sym( ' [a ,b ;c ,d] ' )

x x

dx a

b

3

1-?

f=int( ' x^3/sqrt(1-x) ' , ' a ' , ' b ' )

注意:加单引号’’表示是一个符号表达式而不是数字表达式。

● 符号函数:让用户操作上述符号表达式的方法和函数,比如:

>> diff( 'cos(x)' ) % differentiate cos(x) with respect to x ans= -sin(x)

>> M=sym( '[a ,b ;c ,d] ') % create a symbolic matrix M M= [a ,b] [c ,d]

注意:1.建立符号数组时,最好用上函数sym

2.许多符号函数可以自动将字符转变为符号表达式。例如diff cos(x) 也可以, >> diff x^2+3*x+5 % the argument is equivalent to ' x^2+3*x+5 '

● 符号变量是符号表达式中的变量,如:’x+3*y+z ’中的x,y,z 。

● 独立变量是当符号表达式中含有多于一个的变量时,只有一个变量是独立变量。缺省的独立变量是x ,如果没有x ,则选择最靠近x 的作为独立变量。如表达式 ' 1/(5+cos(x)) ' 中

是' x ' ;在' 3*y+z ' 中是' y ' ;在' a+sin(t) ' 是' t ' ,而表达式' sin(pi/4)-cos(3/5) ' 是一个符号常数无符号变量。可利用函数symvar询问MATLAB在符号表达式中哪一个变量它认为是独立变量(系统找不到一个独立变量,便假定无独立变量并返回x)。

>> symvar( ' a*x+y*) % find the default symbolic variable

ans=

x

>> symvar( ' a*t+s/(u+3) ' ) % u is the closest to ' x '

ans=

u

>> symvar( ' sin(omega) ' ) % ' omega ' is not a singlee character。

ans=

x

>> symvar( ' 3*i+4*j ' ) % i and j are equel to sqrt(-1)

ans=

x

指定独立变量:

>> diff( ' x^n ' ) % differentiate with respect to the default variable ' x '

ans=

x^n*n/x

>> diff( ' x^n ' ,' n ' ) % differentiate x^n with respect to ' n '

ans=

x^n*log(x)

>> diff( ' sin(omega) ' ) % differentiate using the default variables (x)

ans=

>> diff( ' sin(omega) ' ,' omega ' ) % specify the independent variable

ans=

cos(omega)

第 2 节符号表达式运算(目的:更方便的构造符号表达式)

标准代数运算:

symadd、symsub、symlnul、symdiv:分别为加、减、乘、除两个表达式

sympow:将一个表达式上升为另一个表达式的幂次

例如:给定两个函数

2357

=+-=-+

f x x

g x x

22

>> f= ' 2*x^2+3*x-5 ' % define the symbolic expression

f=

2*x^2+3*x-5

>> g= ' x^2-x+7 '

g=

x^2-x+7

>> symadd(f,g) % find an expression for f+g

ans=

3*x^2+2*x+2

>> symsub(f,g) % find an expression for f-g

ans=

x^2+4*x-12

>> symmul(f,g) % find an expression for f*g

ans=

(2*x^2+3*x-5)*(x^2-x+7)

>> symdiv(f,g) % find an expression for f/g

ans=

(2*x^2+3*x-5)/(x^2-x+7)

>> sympow(f,'3*x') % find an expression for f3*

ans =

(2*x^2+3*x-5)^(3*x)

联接运算:

symop:取由逗号隔开的、多至16个参量。各个参量可为符号表达式、数值或算子(' + '、' - '、'*'、' / '、' ^ '、' ( '或' ) '),然后symop可将参量联接起来,返回最后所得的表达式.

>> f= ' cos(x) ' % create an expression

f=

cos(x)

>> g= ' sin(2*x) ' % create another expression

g=

sin(2*x)

>> symop(f,'/ ',g,'+',3) % combine them

ans=

cos(x)/sin(2*x)+3

高级运算:

compose:把f(x)和g(x)复合成f(g(x));

finverse: 求函数的逆函数;

symsum:求表达式的序列和。

compose

给定表达式

f

x g x h

u

=

+==

+

1 1

1

1

22

sin()k=sin(v)

>> syms x y u v

f = 1/(1 + x^2);

g = sin(y);

h = 1/(1+u^2); k= sin(v);

% create the four expression

>> compose(f,g) % find an expression for f(g(x))

ans=

1/(1+sin(y)^2)

>> compose(g,f) % find an expression for g(f(x))

ans=

sin(1/(1+x^2))

用于含有不同独立变量的函数表达式:

>> compose(h,k,'u','v') % given h(u),k(v),find(k(v))

compose(h,k) % 结果一样

ans=

1/(1+sin(v)^2)

finverse

表达式譬如f(x)的函数逆g(x),满足g(f(x))=x。例如,e x的函数逆是ln(x),因为ln(e x)=x。

sin(x)的函数逆是arcsin(x),函数

1

tan()x

的函数逆是arcsin()

1

x

。函数finverse返回表达式的

函数逆。如果解不是唯一就给出警告。

>> syms x a b c d z

>> finverse(1/x) % the inverse of 1/x is 1/x since ' 1/(1/x)=x '

ans=

1/x

>> finverse(x^2 ) % g(x^2)=x has more than one solution

Warning:finverse(x^2) is not unique

ans=

x^(1/2)

>> finverse(a*x+b ) % find the solution to ' g(f(x))=x '

ans=

-(b-x)/a

>> finverse( a*b+c*d-a*z ,' a ' ) % find the solution to ' g(f(a))=a '

ans=

-(c*d-a)/(b-z)

symsum

求表达式的序列和有四种形式: symsum(f)返回

f x x ()0

1-∑;

symsum(f ,' s ' )返回

f s s ()01

-∑,

symsun(f ,a ,b)返回

f x a

b

()∑;

symsun(f , ' s ' ,a ,b)返回

f s a

b

()∑。

1. x x 2

1

-∑,它应返回: x x x

32326-+。

>> syms n x %一定要定义符号变量,即使是x

>> symsum(x^2) ans= 1/3*x^3-1/2* x^2+1/6*x

2. ()2121

n n

-∑,它应返回

n n n ()()

21213

-+。

>> symsum((2*n-1)^2,1,n) ans= 11/3*n+8/3-4*(n+1)^2+4/3*(n+1)^3

3.1

212

1()

n -∞

∑,返回应是π28。

>> syms n

>> symsum( 1/(2*n-1)^2,1,inf) ans= 1/8*pi^2

变量替换:

subs 将某个符号变量用另一个符号变量来表示。

格式:subs (f ,old ,new )如:

>> f= ' a*x^2+b*x+c ' % create a function f(x)

f=

a*x^2+b*x+c

>> subs(f,'x','s') % substitute ' s ' for ' x ' in the

expression f

ans=

a*s^2+b*s+c

>> subs(f,'a','alpha') % substitute ' alpha ' for ' a ' in f

ans=

alpha*x^2+b*x+c

求符号表达式的函数值

为了得到数字,需要使用函数eval 来转换字符串。

>> syms x

>> f=symsum(x^2)

>> x=2

>> eval(f)

第 3 节微积分(Calculus)函数

微分和积分广泛地用在许多工程学科,这部分的主要函数有:

diff():Differentiate.(微分)

Int():Integrate(积分)

Jacobian():Jacobian matrix(雅可比行列式)

Limit():Limit of an expression.(极限)

Symsum():Summation of series(序列和)

Taylor():Taylor series expansion(泰勒级数)

微分和差分:diff

>> f= ' a*x^3+x^2-b*x-c ' % define a symbolic expression

f=

a*x^3+x^2-b*x-c

>> diff(f) % differentiate with respect to the default variable x

ans=

3*a*x^2+2*x-b

>> diff(f,'a ') % differentiate with respect to a

ans=

x^3

>> diff(f,2) % differentiate twice with respect to x

ans=

6*a*x+2

>> diff(f,' a ',2) % differentiate twice with respect to a

ans=

>> m=[(1:8).^2)] % create a vector

M=

1 4 9 16 25 36 49 64

>> diff(M) % find the differences between elements

ans=

3 5 7 9 11 13 15

如果diff的表达式或可变参量是数值,MATLAB就非常巧妙地计算其数值差分;如果参量是符号字符串或变量,MATLAB就对其表达式进行微分。

积分int:

格式:int(f),其中f是一符号表达式,它力图求出另一符号表达式F使diff(F)=f。

注意:积分或逆求导不一定是以封闭形式存在,或存在但软件也许找不到,或者软件可明显地求解,但超过内存或时间限制。当MATLAB不能找到逆导数时,它将返回未经计算的命令。

>> int( ' log(x)/exp(x^2) ' ) % attempt to integrate

ans=

log(x)/exp(x^2)

积分函数的多种形式:

int(f):相对于缺省的独立变量x求逆导数

int(f,' s '):相对于符号变量s积分

int(f,a,b)和int(f,' s ',a,b):a,b是数值,求解符号表达式从a到b的定积分

int(f,' m ' ,' n ')和形式int(f,' s ',' m ',' n '):其中m,n是符号变量,求解符号表达式从m到n的定积分。

>> f=' sin(s+2*x) ' % crate a symbolic function

f=

sin(s+2*x)

>> int(f) % integrate with respect to x

ans=

-1/2*cos(s+2*x)

>> int(f,' s ') % integrate with respect to s

ans=

-cos(s+2*x)

>> int(f,pi/2,pi) % integrate with respect to x from π/2 toπ

ans=

-cos(s)

>> int(f,' s ',pi/2,pi) % integrate with respect to s from π/2 to π

ans=

2*cos(x)^2-1-2*sin(x)*cos(x)

>> int(f,' m ',' n ') % integrate with respect to x from m to n

ans=

-1/2*cos(s+2*n)+1/2*cos(s+2*m)

diff 和int 均可以对符号数组的每一个元素进行运算。

>> F=sym( '[a*x,b*x^2;c*x^3,d*s] ' ) % create a symbolic array

F =

[ a*x, b*x^2]

[ c*x^3, d*s]

>> int(F) % ubtegrate the array elements with respect

to x

ans=

[1/2*a*x^2,1/3*b*x^3]

[1/4*c*x^4,d*s*x]

第 4 节数字信号处理常用Matlab函数简介

一、典型离散信号表示方法

1.单位冲击序列δ(n)

δ(n)可以用zero函数来实现:

x=zeros(1,N);

x(1)=1;

2.单位阶跃序列u(n)

可以用ones函数来实现

X=ones(1,N);

3.正弦序列

n=0:N-1;

x=A*sin(2*pi*f*n*Ts);

4.指数序列

N=1:N;

X=a.*^n;

5.复指数序列

n=0:N-1;

x=exp(j*w*n);

6.随机序列

Rand(1,N) :产生[0,1]上的均匀分布的随机序列;

Rand(1,N) :产生均值为0,方差为1的高斯随机序列,即白噪声序列。

二、滤波器分析与实现

滤波器分析与实现常用函数

abs 求绝对值

angle 求相角

conv 求卷积

conv2 求二维卷积

deconv 翻卷积

f1 filt 重叠相加法fft滤波器实现

filter 直接滤波器实现

filter2 二位数字滤波器

filtfilt 零相位数字滤波器

filtic Filter初始条件选择

freqs 模拟滤波器频率响应

freqspace 画出频率响应曲线

freqz 数字滤波器频率响应

freqzplot 画出频率响应曲线

gGrpdelay 平均滤波延迟

latcfilt 格型滤波实现

impz 数字滤波器中的单位冲击响应

medfilt1一维中值滤波

sosfilt 二次分式滤波器实现

zplane 离散系统零、极点图

upfirdn 上抽样

unwrap 去除相位

1.abs

y=abs(x) 计算x的绝对值,当x为复数时,其算其模值。当x为字符串时,计算各个字符的ASCII码。

2. angle

φ= angle(h) 计算复矢量或者复矩阵的相角(以弧度为单位),相角介于-л~л之间。3.conv

c=conv(a,b) 对序列a,b进行卷积运算。

4.filter

y=filter(b,a,x)计算输入信号x的滤波器输出,向量a,b分别是所采用的滤波器的分子系数向量和滤波器的分母向量。

[y,zf]=filter(b,a,x,zi) 参数zi指定滤波器的初始条件,其大小为

zi=max(length(a),length(b))-1

y=filter(b,a,x,zi,dim) dim指定滤波器的维数。'zi'=[]或0表示空集。

5. impz

[h,t]=impz(b,a)

返回参数h是冲击相应的数值;返回t是冲击相应的抽样时间间隔。

[h,t]=impz(b,a,N)

N用来制定冲激信号长度。如果N是一个整数向量,只返回N元素所对应时刻的抽样数值的冲击结果。N为[],表示不制定冲激信号的长度,其长度与滤波器结构保持一致。

[h,t]=impz(b,a,N,fs)

Fs用来指定冲击信号的抽样频率,默认值是1。

三、信号变换

常用变换函数

czt Chirp z变换

dct 离散余弦变换

dftmtx 离散傅里叶变换

fft 一维快速傅里叶变换

fft2 二维快速傅里叶变换

fftshift 重新排列fft输出

Hilbert Hilbert变换

idct 离散余弦反变换

ifft 一维快速傅里叶反变换

ifft2 二维快速傅里叶反变换

1.fft

Y=fft(X)

若X是向量,则采用傅里叶变换求解X离散傅里叶变换;若X是矩阵,则计算该矩阵每一列的离散傅里叶变换。

Y=fft(X,N)

N是进行离散傅里叶变换的X的数据长度,可以通过对X进行补或截取来实现。

Y=fft(X,[],dim)

在参数dim指定的维上进行傅里叶变换。X是矩阵时,dim用来指变换的实施方向:dim=1,表明变换按列进行;dim=2,表明变换按行进行。

第 5 节方程求解

一、求解单个变量的代数方程:利用solve函数

1.没有=号的表达式,用solve将其置成等于0。

>> solve( ' a*x^2+b*x+c ' ) % solve for the roots of the quadratic

eqution

ans=

[1/2/a*(-b+(b^2-4*a*c)^1/2)]

[1/2/a*(-b-(b^2-4*a*c)^1/2)]

注:方程有2个解。

2.对其他非缺省变量求解,在solve 中指定出该变量。

>> solve( ' a*x^2+b*x+c ' ,' b ' ) % solve for b

ans=

-(a*x^2+c)/x

3.对带有等号的方程求解。

>> f=solve( ' cos(x)=sin(x) ' ) % solve for x f= 1/4*pi

>> t=solve( ' tan(2*x)=sin(x) ' ) t =

[ 0] [ pi] [ atan(1/2*(-2*3^(1/2))^(1/2),1/2+1/2*3^(1/2))] [ atan(-1/2*(-2*3^(1/2))^(1/2),1/2+1/2*3^(1/2))] [ atan(1/2*2^(1/2)*3^(1/4)/(1/2-1/2*3^(1/2)))+pi] [ -atan(1/2*2^(1/2)*3^(1/4)/(1/2-1/2*3^(1/2)))-pi]

二、单个常微分方程求解:利用 dsovle 函数

dsovle 函数的句法:用字母D 来表示求微分,D2,D3等等表示二阶、三阶微分,并以此来设定方程。任何D 后所跟的字母为因变量。方程d y dx 22/=0用符号表达式D2y=0来表示。独立变量可以指定或由symvar 规则选定为缺省。

例1,求一阶方程dy/dx =1+y 2的解,其通解为:

>> dsolve( ' Dy=1+y^2 ' ) % find the general solution

ans= tan(t+C1) %C1是积分常数

给定初值y(0)=1的方程的解:

>> dsolve('Dy=1+y^2 ',' y(0)=1 ') % add an initial condition y= tan(t+1/4*pi) 指定独立变量:

>> dsolve(' Dy=1+y^2 ',' y(0)=1 ',' v ') % find solution to dy/dv ans= tan(v+1/4*pi)

例2:求二阶微分方程的解,方程有两个初始条件:

d y

dx

22

=cos(2x)-y dy dx (0)=0 y(0)=1

>> y=dsolve('D2y=cos(2*x)-y ',' Dy(0)=0 ',' y(0)=1 ','x') y=

(1/6*cos(3*x)-1/2*cos(x))*cos(x)+(1/2*sin(x)+1/6*sin(3*x))*sin(x)+4/3*cos(x)

>> y=simple(y) % y looks like it can be simplified

2015研究生数学建模MATLAB程序(完整版)

′ú??ò?£o % ?a?ü1y3ì?°??ò??ü??í3?? clear clc fid1=fopen('mingwen1.txt','r'); str1=fgets(fid1); fclose(fid1); fid2=fopen('jiemihou1.txt','r'); str2=fgets(fid2); fclose(fid2); % é?è¥μ¥′ê????μ?????oí±êμ?·?o? ad=find(str2==',');str2(ad)='';ad=find(str2=='.');str2(ad)='';ad=find(str2==';') ;str2(ad)=''; ad=find(str2=='''');str2(ad)='';ad=find(str2=='?');str2(ad)='';ad=find(str2=='£o');str2(ad)=''; ad=find(str2=='"');str2(ad)='';ad=find(str2=='-');str2(ad)='';ad=find(str2= ='/');str2(ad)=''; ad=find(str2==' ');str2(ad)=''; for i=0:25; ad=find(str1=='A'+i);str1(ad)='a'+i; end for i=0:25; ad=find(str2=='A'+i);str2(ad)='a'+i; end n1(1,26)=0; n2(1,26)=0; n1(1)=sum(str1=='a');n2(1)=sum(str2=='a'); n1(2)=sum(str1=='b');n2(2)=sum(str2=='b'); n1(3)=sum(str1=='c');n2(3)=sum(str2=='c'); n1(4)=sum(str1=='d');n2(4)=sum(str2=='d'); n1(5)=sum(str1=='e');n2(5)=sum(str2=='e'); n1(6)=sum(str1=='f');n2(6)=sum(str2=='f'); n1(7)=sum(str1=='g');n2(7)=sum(str2=='g'); n1(8)=sum(str1=='h');n2(8)=sum(str2=='h'); n1(9)=sum(str1=='i');n2(9)=sum(str2=='i'); n1(10)=sum(str1=='j');n2(10)=sum(str2=='j'); n1(11)=sum(str1=='k');n2(11)=sum(str2=='k'); n1(12)=sum(str1=='l');n2(12)=sum(str2=='l'); n1(13)=sum(str1=='m');n2(13)=sum(str2=='m'); n1(14)=sum(str1=='n');n2(14)=sum(str2=='n'); n1(15)=sum(str1=='o');n2(15)=sum(str2=='o');

MATLAB及在数学建模中的应用

第1讲MATLAB及 在数学建模中的应用 ? MatLab简介及基本运算?常用计算方法 ?应用实例

一、 MatLab简介及基本运算 1.1 MatLab简介 1.2 MatLab界面 1.3 MatLab基本数学运算 1.4 MatLab绘图

1.1 MatLab简介?MATLAB名字由MATrix和 LABoratory 两词组成。20世纪七十年代后期, 美国新墨西哥大学计算机科学系主任Cleve Moler教授为减轻学生编程负担,为学生设计了一组调用LINPACK和EISPACK库程序的“通俗易用”的接口,此即用FORTRAN编写的萌芽状态的MATLAB。

?经几年的校际流传,在Little的推动下,由Little、Moler、Steve Bangert合作,于1984年成立了MathWorks公司,并把MATLAB正式推向市场。从这时起,MATLAB的内核采用C语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。

?1997年春,MATLAB5.0版问世,紧接着是5.1、5.2、5.3、6.0、6.1、6.5、7.0版。现今的MATLAB拥有更丰富的数据类型和结构、更友善的面向对象、更加快速精良的图形可视、更广博的数学和数据分析资源、更多的应用开发工具。 ?20世纪九十年代的时候,MATLAB已经成为国际控制界公认的标准计算软件。

?MATLAB具有用法简易、可灵活运用、程式结构强又兼具延展性。以下为其几个特色: ①可靠的数值运算和符号计算。在MATLAB环境中,有超过500种数学、统计、科学及工程方面的函 数可使用。 ②强大的绘图功能。 MATLAB可以绘制各种图形,包括二维和三维图形。 ③简单易学的语言体系。 ④为数众多的应用工具箱。

数学建模matlab例题参考及练习

数学实验与数学建模 实验报告 学院: 专业班级: 姓名: 学号: 完成时间:年月日

承 诺 书 本人承诺所呈交的数学实验与数学建模作业都是本人通过学习自行进行编程独立完成,所有结果都通过上机验证,无转载或抄袭他人,也未经他人转载或抄袭。若承诺不实,本人愿意承担一切责任。 承诺人: 年 月 日 数学实验学习体会 (每个人必须要写字数1200字以上,占总成绩的20%) 练习1 一元函数的图形 1. 画出x y arcsin =的图象. 2. 画出x y sec =在],0[π之间的图象. 3. 在同一坐标系中画出x y =,2x y =,3 x y = ,3x y =,x y =的图象. 4. 画出3 2 3 2)1()1()(x x x f + +-=的图象,并根据图象特点指出函数)(x f 的奇偶性. 5. 画出)2ln(1++=x y 及其反函数的图象. 6. 画出3 21+=x y 及其反函数的图象.

练习2 函数极限 1.计算下列函数的极限. (1) x x x 4 cos 1 2 sin 1 lim 4 - + π → . 程序: sym x; f=(1+sin(2*x))/(1-cos(4*x)); limit(f,x,pi/4) 运行结果: lx21 ans = 1 (2). 程序: sym x; f=(1+cos(x))^(3*sec(x)); limit(f,x,pi/2) 运行结果: lx22 ans = exp(3) (3) 2 2 ) 2 ( sin ln lim x x x - π π → . 程序: sym x; f=log(sin(x))/(pi-2*x)^2; limit(f,x,pi/2) 运行结果: lx23 ans = -1/8 (4) 2 1 2 lim x x e x →. 程序: x x x sec 3 2 ) cos 1( lim+ π →

matlab在数学建模中的应用

Matlab在数学建模中的应用 数学建模是通过对实际问题的抽象和简化,引入一些数学符号、变量和参数,用数学语言和方法建立变量参数间的内在关系,得出一个可以近似刻画实际问题的数学模型,进而对其进行求解、模拟、分析检验的过程。它大致分为模型准备、模型假设、模型构成、模型求解、模型分析、模型检验及应用等步骤。这一过程往往需要对大量的数据进行分析、处理、加工,建立和求解复杂的数学模型,这些都是手工计算难以完成的,往往在计算机上实现。在目前用于数学建模的软件中,matlab 强大的数值计算、绘图以及多样化的工具箱功能,能够快捷、高效地解决数学建模所涉及的众多领域的问题,倍受数学建模者的青睐。 1 Matlab在数学建模中的应用 下面将联系数学建模的几个环节,结合部分实例,介绍matlab 在数学建模中的应用。 1.1 模型准备阶段 模型准备阶段往往需要对问题中的给出的大量数据或图表等进行分析,此时matlab的数据处理功能以及绘图功能都能得到很好的应用。 1.1.1 确定变量间关系 例1 已知某地连续20年的实际投资额、国民生产总值、物价指数的统计数据(见表),由这些数据建立一个投资额模型,根据对未来国民生产总值及物价指数的估计,预测未来的投资额。

表1 实际投资额、国民生产总值、物价指数的统计表 记该地区第t年的投资为z(t),国民生产总值为x(t),物价指数为y(t)。 赋值: z=[90.9 97.4 113.5 125.7 122.8 133.3 149.3 144.2 166.4 195 229.8 228.7 206.1 257.9 324.1 386.6 423 401.9 474.9 424.5]' x=[596.7 637.7 691.1 756 799 873.4 944 992.7 1077.6 1185.9 1326.4 1434.2 1549.2 1718 1918.3 2163.9 2417.8 2631.6 2954.7 3073]' y=[0.7167 0.7277 0.7436 0.7676 0.7906 0.8254 0.8679 0.9145 0.9601 1 1.0575 1.1508 1.2579 1.3234 1.4005 1.5042 1.6342 1.7842 1.9514 2.0688]' 先观察x与z之间,y与z之间的散点图 plot(x,z,'*') plot(y,z,'*') 由散点图可以看出,投资额和国民生产总值与物价指数都近似呈

基于MATLAB的光伏电池通用数学模型

本文由qpadm贡献 pdf文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 第 25 卷第 4 期 2009 年 4 月 电 力 For personal use only in study and research; not for commercial use 科 学 与 For personal use only in study and research; not for commercial use 工 程 Vol.25, No.4 Apr., 2009 11 For personal use only in study and research; not for commercial use Electric Power Science and Engineering 基于 MATLAB 的光伏电池通用数学模型 王长江 For personal use only in study and research; not for commercial use (华北电力大学电气与电子工程学院,北京 102206)摘要:针对光伏电池输出特性具有强烈的非线性,根据太阳能电池的直流物理模型,利用 MATLAB 建立了太阳能光伏阵列通用的仿真模型。利用此模型,模拟任意环境、太阳辐射强度、电池板参数、电池板串并联方式下的光伏阵列 I-V 特性。模型内部参数经过优化,较好地反应了电池实际特性。模型带有最大功率点跟踪功能,能很好地实现光伏发电系统最佳工作点的跟踪。关键词:光伏电池;MPPT;I-V 特性中图分类号:TM615 文献标识码:A 引 言 1 光伏电池特性 随着化石能源的消耗,全球都在面临能源危机,太阳能依靠其清洁、分布广泛等特点成为当今发展速度居第二位的能源 [1] 。光伏阵列由多个单体太阳能电池进行串并联封装而成,是光伏发电的能源供给中心,其 I V 特性曲线随日照强度和太阳能电池温度变化,即 I=f ( V, S, T ) 。目前而厂家通常仅为用户提供标准测试的短路电流 I sc 、开路电压 Voc、最大功率点电流 I m 、最大功率点电压 V m 值,所以如何根据已有的标准测试数据来仿真光伏阵列在不同日照、温度下的 I V,P V 特性曲线,在光伏发电系统分析研究中显得至关重要 [2] 。文献 [ 3~4 ] 介绍了一些光伏发电相关的仿真模型,但这些模型都需要已知一些特定参数,使得分析研究有一些困难。文献 [ 5 ] 介绍了经优化的光伏电池模型,但不能任意改变原始参数。文献 [ 6 ] 给出了光伏电池的原理模型,但参数选用典型值,会造成较大的误差。本文考虑工程应用因素,基于太阳能电池的物理模型,建立了适用于任何条件下的工程用光伏电池仿真模型。

matlab数学建模实例

第四周 3. 中的三个根。 ,在求8] [0,041.76938.7911.1-)(2 3=-+=x x x x f function y=mj() for x0=0:0.01:8 x1=x0^3-11.1*x0^2+38.79*x0-41.769; if (abs(x1)<1.0e-8) x0 end end 4.分别用简单迭代法、埃特金法、牛顿法求解方程,并比较收敛性与收敛速度(ε分别取10-3、10-5、10-8)。 简单迭代法: function y=jddd(x0) x1=(20+10*x0-2*x0^2-x0^3)/20; k=1; while (abs(x1-x0)>=1.0e-3) x0=x1; x1=(20+10*x0-2*x0^2-x0^3)/20;k=k+1; end x1 k 埃特金法: function y=etj(x0) x1=(20-2*x0^2-x0^3)/10; x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0); k=1; while (abs(x3-x0)>=1.0e-3) x0=x3; x1=(20-2*x0^2-x0^3)/10; x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0);k=k+1; end 2 ,020102)(023==-++=x x x x x f

x3 k 牛顿法: function y=newton(x0) x1=x0-fc(x0)/df(x0); k=1; while (abs(x1-x0)>=1.0e-3) x0=x1; x1=x0-fc(x0)/df(x0);k=k+1; end x1 k function y=fc(x) y=x^3+2*x^2+10*x-20; function y=df(x) y=3*x^2+4*x+10; 第六周 1.解例6-4(p77)的方程组,分别采用消去法(矩阵分解)、Jacobi迭代法、Seidel迭代法、松弛法求解,并比较收敛速度。 消去法: x=a\d 或 [L,U]=lu(a); x=inv(U)inv(L)d Jacobi迭代法: function s=jacobi(a,d,x0) D=diag(diag(a)); U=-triu(a,1); L=-tril(a,-1); C=inv(D); B=C*(L+U); G=C*d; s=B*x0+G; n=1; while norm(s-x0)>=1.0e-8 x0=s; s=B*x0+G;

MATLAB及其在数学建模中的应用

Modeling and Simulation 建模与仿真, 2015, 4(3), 61-71 Published Online August 2015 in Hans. https://www.sodocs.net/doc/03191975.html,/journal/mos https://www.sodocs.net/doc/03191975.html,/10.12677/mos.2015.43008 Study of MATLAB and Its Application in Mathematical Modeling Chuanqi Qin, Ting Wang, Yuanfeng Jin School of Science, Yanbian University, Yanji Jilin Email: yfkim@https://www.sodocs.net/doc/03191975.html, Received: Jul. 22nd, 2015; accepted: Aug. 11th, 2015; published: Aug. 18th, 2015 Copyright ? 2015 by authors and Hans Publishers Inc. This work is licensed under the Creative Commons Attribution International License (CC BY). https://www.sodocs.net/doc/03191975.html,/licenses/by/4.0/ Abstract This article firstly introduces the development and the features of MATLAB software. And then the concept and the process of mathematical modeling are explained. After, the article briefly intro-duces some MATLAB solution methods of mathematical modeling problems, giving several in-stances of some methods. At the last of this article, through a relatively complete example, it fo-cuses on the application of MATLAB in mathematical modeling. It has been found that the applica-tion of MATLAB in mathematical modeling can improve the efficiency and quality of mathematical modeling, enrich the means and methods of mathematical modeling, and play a very important role in the teaching of mathematical modeling course. Keywords MATLAB, Mathematical Modeling, Mathematic Model MATLAB及其在数学建模中的应用 秦川棋,王亭,金元峰 延边大学理学院,吉林延吉 Email: yfkim@https://www.sodocs.net/doc/03191975.html, 收稿日期:2015年7月22日;录用日期:2015年8月11日;发布日期:2015年8月18日

基于MATLAB的数学建模题

1求1到20的阶乘和M文件 function p=fac(n) %fac函数由于阶乘 if n==0 p=1; else p=1; i=1; while i<=n p=p*i; i=i+1; end end clear sum=0; for i==1:20 sum=sum+fac(i) end sum (1)

(2)运行结果 2、用起泡法排数 clc clear all s=[9 8 4 2 7 10 6 1 5 3]; %要排序的数列Ls=length(s); for i=1:Ls-1 for j=1:Ls-i if s(j)>s(j+1) t=s(j); s(j)=s(j+1); s(j+1)=t; end

end end s %输出排序后结果 结果 3、matlab 有一函数 f(x,y)=x2+cos(xy)+2y ,写一程序,输入自变量的值,输出函数值. function z= yourfunc(x,y) % script for f(x,y)=x2+cos(xy)+2y % input scalar: x, y % output scalar: z % written by yourname % 10 May 2010 z=x^2+cos(x*y)+2*y;

end 运行结果 4、小球下落问题 h = zeros(11,1); h(1) = 100; for i = 2:11 h(i) = h(i-1)/2; end % 第10次反弹有多高?h(11)

% 它在第10次落地时,共经过多少米? 2*sum(h(1:10))-h(1) 结果如下 5、矩阵问题 有一个4行5列的矩阵,编程求出其最大值以及最大值所处位置clc; clear all; A = rand(4, 5); m = A(1); ind = [1 1]; for i = 1 : size(A, 1) for j = 1 : size(A, 2) if m < A(i, j)

matlab数学建模实例

第四周3. 中的三个根。 ,在求8] [0,041.76938.7911.1-)(2 3=-+=x x x x f function y=mj()for x0=0:0.01:8 x1=x0^3-11.1*x0^2+38.79*x0-41.769;if (abs(x1)<1.0e-8)x0 end end 4.分别用简单迭代法、埃特金法、牛顿法求解方程,并比较收敛性与收敛速度(ε分别取10-3、10-5、10-8)。 简单迭代法: function y=jddd(x0) x1=(20+10*x0-2*x0^2-x0^3)/20;k=1; while (abs(x1-x0)>=1.0e-3) x0=x1; x1=(20+10*x0-2*x0^2-x0^3)/20;k=k+1;end x1k 埃特金法: function y=etj(x0) x1=(20-2*x0^2-x0^3)/10;x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0);k=1; while (abs(x3-x0)>=1.0e-3) x0=x3; x1=(20-2*x0^2-x0^3)/10;x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0);k=k+1;end 2 ,020102)(023==-++=x x x x x f

x3 k 牛顿法: function y=newton(x0) x1=x0-fc(x0)/df(x0); k=1; while(abs(x1-x0)>=1.0e-3) x0=x1; x1=x0-fc(x0)/df(x0);k=k+1; end x1 k function y=fc(x) y=x^3+2*x^2+10*x-20; function y=df(x) y=3*x^2+4*x+10; 第六周 1.解例6-4(p77)的方程组,分别采用消去法(矩阵分解)、Jacobi迭代法、Seidel迭代法、松弛法求解,并比较收敛速度。 消去法: x=a\d 或 [L,U]=lu(a); x=inv(U)inv(L)d Jacobi迭代法: function s=jacobi(a,d,x0) D=diag(diag(a)); U=-triu(a,1); L=-tril(a,-1); C=inv(D); B=C*(L+U); G=C*d; s=B*x0+G; n=1; while norm(s-x0)>=1.0e-8 x0=s; s=B*x0+G;

用matlab解决数学建模

2、已知速度曲线v(t) 上的四个数据点下表所示 t=[0.15,0.16,0.17,0.18]; v=[3.5,1.5,2.5,2.8]; x=0.15:0.001:0.18 y=i n t e r p1(t,v,x,'s p l i n e') S=t r a p z(x,y) p=p o l y f i t(x,y,5); d p=p o l y d e r(p); d p x=p o l y v a l(d p,0.18) 运行结果 S= 0.0687 Dpx=- 3、计算图片文件tu.bmp 给出的两个圆A,B 的圆心,和两个圆的两条外公切线和两条内公切线的切点的坐标。 (1)计算A 圆的圆心坐标 I=imread('tu.bmp'); [m,n]=size(I) BW=im2bw(I) BW(:,200:512)=1; figure, imshow(BW) ed=edge(BW); [y,x]=find(ed); x0=mean(x), y0=mean(y) r1=max(x)-min(x),r2=max(y)-min(y) r=(r1+r2)/4 x0 =109.7516 y0 =86.7495 r1 =162 r2 =158 r =80 (2)B圆的圆心坐标和半径 I=imread('tu.bmp'); BW=im2bw(I) BW(:,1:200)=1; imshow(BW) ed=edge(BW); [y,x]=find(ed); x0=mean(x), y0=mean(y) r1=max(x)-min(x),r2=max(y)-min(y) r=(r1+r2)/4 x0 =334.0943 y0 =245.7547 r1 =165 r2 =158 r = 80.7500

10909-数学建模-应用MATLAB建模的一个例子

应用MATLAB 的一个例子 ——数学也是一门技术 王天顺 整理 本来想用 “数学也是一门技术”作题目,主要是基于两点,一是从数学的应用角度,它的确具备了作为一门技术的特征,这也就是今天我要通过一个例子要表达的;二是咱们在座的大多数都是从事职业教育的老师,不知道我理解得是不是正确,职业教育与普通教育的区别是较为侧重于教授技术,我主观上感觉这个题目和大家的关系更紧密一些。但是,这个题目有点太大了!和领导商量了一下还是换个题目吧。 首先可以证明:数学确是一门技术,比如说要从技术的定义入手,流行的做法是:查查《辞海》,查查相关的如《科学学辞典》和《科技辞典》等等,看看他们是怎样给技术定义的;其次,论述一下数学的确是符合这些定义的。 实际上,我也确实查阅过这些资料,可以说没有问题,一定可以找到证据证明这个论断! 注:“技术”一词的中文解释有两种,一种是以《辞海》为代表的解释,把技术定义为:(1 )泛指根据生产实践经验和自然科学原理而发展成的各种工艺操作方法与技能;(2)除操作技能外, 广义的还包括相应的生产工具和其他物质设备,以及生产的工艺过程或作业程序、方法。另一种是以《科学学辞典》和《科技辞典》为代表的解释,把技术定义为:是为社会生产和人类物质文化生活需要服务的,供人类利用和改造自然的物质手段、智能手段和信息手段的总和。 可见, “技术”一词所包含的内容除了有形的物化形态之外,还包括无形的智能形态方面。无形的智能形态的技术是客观存在的,在某种意义上说,这方面技术的作用并不亚于物化形态的技术,更不能为物化形态技术所取代(背景资料)。因此,有关“技术”的涵义,有人概括为:指的是有形的物化技术和无形的智能技术的总和。 当然,容易想到我们把数学看作一门技术,可能更多的是从技术的无形“智能形态”角度论述的。我想这只是他的一个方面,今天先给各位介绍的是一个例子,展现他的另一个方面,用数学(包括相关的软件)去解决一个实际问题,其过程就像“传统的”、物化形态的技术一样;其次,结合上述例子,探讨有关数学建模及相关培训指导工作的一般原则和步骤,谈一点个人对此项工作的认识;最后,介绍我校的这些年数学建模培训工作的一些具体做法。 一、足球比赛中的吊门问题 1. 问题:只考虑如下的因素:球与球门的距离为a ,守门员与球门的距离为b (假设在调 门过程中,守门员不能移动),球门高h ,守门员最大摸高H ,球出脚的初速度为0v ,与水平方向的夹角为α(称为初射角).针对下列数据求能吊门成功的α,h=2.44m ,H=3.20m ,s m v /300= ,重力加速度g=10m/s 2,针对下列几组数据分别给出具体能吊门成功的相应初射角范围,要求精度在小数点后第4位。 (1) a=6m ,b=1m ; (2) a=10m ,b=3m ; (3) a=20m ,b=5m ; 2. 问题分析 (1) 在不考虑空气阻力的情况下,抛射体的运动轨迹是抛物线:

matlab数学建模实例

第四周 3. function y=mj() for x0=0:0.01:8 x1=x0^3-11.1*x0^2+38.79*x0-41.769; if (abs(x1)<1.0e-8) x0 end end 4.分别用简单迭代法、埃特金法、牛顿法求解方程,并比较收敛性与收敛速度( 分别取10-3、10-5、10-8)。 简单迭代法: function y=jddd(x0) x1=(20+10*x0-2*x0^2-x0^3)/20; k=1; while (abs(x1-x0)>=1.0e-3) x0=x1; x1=(20+10*x0-2*x0^2-x0^3)/20;k=k+1; end x1 k 埃特金法: function y=etj(x0) x1=(20-2*x0^2-x0^3)/10; x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0); k=1; while (abs(x3-x0)>=1.0e-3) x0=x3; x1=(20-2*x0^2-x0^3)/10; x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0);k=k+1; end x3 k 牛顿法: function y=newton(x0)

x1=x0-fc(x0)/df(x0); k=1; while (abs(x1-x0)>=1.0e-3) x0=x1; x1=x0-fc(x0)/df(x0);k=k+1; end x1 k function y=fc(x) y=x^3+2*x^2+10*x-20; function y=df(x) y=3*x^2+4*x+10; 第六周 1.解例6-4(p77)的方程组,分别采用消去法(矩阵分解)、Jacobi迭代法、Seidel迭代法、松弛法求解,并比较收敛速度。 消去法: x=a\d 或 [L,U]=lu(a); x=inv(U)inv(L)d Jacobi迭代法: function s=jacobi(a,d,x0) D=diag(diag(a)); U=-triu(a,1); L=-tril(a,-1); C=inv(D); B=C*(L+U); G=C*d; s=B*x0+G; n=1; while norm(s-x0)>=1.0e-8 x0=s; s=B*x0+G; n=n+1; end n Seidel迭代法: function s=seidel(a,d,x0) D=diag(diag(a)); U=-triu(a,1); L=-tril(a,-1);

matlab数学建模实例

m a t l a b数学建模实例集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

第四周3. function y=mj() for x0=0::8 x1=x0^*x0^2+*; if (abs(x1)< x0 end end 4.分别用简单迭代法、埃特金法、牛顿法求解方程,并比较收敛性与收敛速度(分别取10-3、10-5、10-8)。 简单迭代法: function y=jddd(x0) x1=(20+10*x0-2*x0^2-x0^3)/20; k=1; while (abs(x1-x0)>= x0=x1; x1=(20+10*x0-2*x0^2-x0^3)/20;k=k+1; end x1 k 埃特金法: function y=etj(x0) x1=(20-2*x0^2-x0^3)/10; x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0); k=1; while (abs(x3-x0)>= x0=x3; x1=(20-2*x0^2-x0^3)/10; x2=(20-2*x1^2-x1^3)/10; x3=x2-(x2-x1)^2/(x2-2*x1+x0);k=k+1; end x3 k 牛顿法: function y=newton(x0) x1=x0-fc(x0)/df(x0);

k=1; while (abs(x1-x0)>= x0=x1; x1=x0-fc(x0)/df(x0);k=k+1; end x1 k function y=fc(x) y=x^3+2*x^2+10*x-20; function y=df(x) y=3*x^2+4*x+10; 第六周 1.解例6-4(p77)的方程组,分别采用消去法(矩阵分解)、Jacobi迭代法、Seidel迭代法、松弛法求解,并比较收敛速度。 消去法: x=a\d 或 [L,U]=lu(a); x=inv(U)inv(L)d Jacobi迭代法: function s=jacobi(a,d,x0) D=diag(diag(a)); U=-triu(a,1); L=-tril(a,-1); C=inv(D); B=C*(L+U); G=C*d; s=B*x0+G; n=1; while norm(s-x0)>= x0=s; s=B*x0+G; n=n+1; end n Seidel迭代法: function s=seidel(a,d,x0) D=diag(diag(a));

基于matlab的数学建模

MATLAB在数学建模中的应用 (张威10322010910级专升本电气一班) 摘要 随着社会和计算机技术的发展,数学科学与计算机技术相结合,在社会各领域发挥着越来越重要的作用,能够方便、高效的解决各种实际问题。在目前用于数学建模的软件中,Matlab强大的数值计算、绘图以及多样化的工具箱功能,能够快捷、高效地解决数学建模所涉及的众多领域的问题,倍受数学建模者的青睐。Matlab是一款非常好的软件,功能强大,应用面广。从实例出发,论述Matlab在数学建模中的应用,以提高对Matlab软件的认识,提高解决实际问题的能力。本文结合数学建模的几个环节,用一些实例阐述了Matlab在数学建模中的应用。将Matlab用于数学建模可以提高数学建模的效率和质量。丰富数学建模的方法和手段,具有重要的意义。 关键词:Matlab软件,数学建模,最优化 Abstract With the development of society and computer technology,mathematics,science and computer technology in all areas of society is playing an increasingly important role,It can easily and efficiently to solve practical problems.In the currently used mathematical modeling software,Matlab powerful numerical calculations,drawings,and a variety of toolbox functions,can quickly and efficiently solve the mathematical modeling involved in many areas of concern,much of those mathematical modeling all ages.Matlab is a very good software,powerful,wide range of applications.Starting from the example,discussed in Matlab in the application of mathematical modeling to improve understanding of the Matlab software,to improve the ability to solve practical problems.In this paper,several aspects of mathematical modeling with Matlab examples described in the application of mathematical modeling.Mathematical modeling of Matlab for mathematical modeling can improve the efficiency and quality.Extensive mathematical modeling methods and means of great significance. Key Words:MATLAB software,Mathematical modeling,Optimization

基于MATLAB Simulink建立控制系统的数学模型

实验二 基于MATLAB /Simulink 建立控制系统的数学模型 一、实验目的1、熟悉MATLAB 实验环境,掌握MATLAB 命令窗口的基本操作。 2、掌握MATLAB 建立控制系统数学模型的命令及模型相互转换的方法。 3、掌握使用MATLAB 命令化简模型基本连接的方法。 4、学会使用Simulink 模型结构图化简复杂控制系统模型的方法。 二、实验内容 1、控制系统模型的建立 控制系统常用的数学模型有四种:传递函数模型(tf 对象)、零极点增益模型(zpk 对象)、结构框图模型和状态空间模型(ss 对象)。经典控制理论中数学模型一般使用前三种模型,状态空间模型属于现代控制理论范畴。 (1)传递函数模型 连续系统的传递函数模型为: 例1、已知系统的传递函数试用MATLAB 建立控制系统的传递函数模型例1.1 法1: >>num=[11]; >>den=[1221]; >>G=tf(num,den) Transfer function: s +1 --------------------- s^3+2s^2+2s +1 32s 3(s) s 2s 2s 1 G +=+++22335(2)(67)()s s s G s +++=+++101101...()(),...() m m m n n n b s b s b num s G s n m a s a s a den s --+++==≥+++

法2: >>S=tf('s'); >>g1=(s+3)/(s^3+2*S^2+2*s+1) Transfer function: s +3 --------------------- s^3+2s^2+2s +1 例1.2 a=[12];b=[11];c=[167]; d=[1021]; e=[10];m=conv(conv(conv(a,a),5),c); n=conv(conv(conv(conv(b,b),b),e),d); g=tf(m,n)Transfer function: 5s^4+50s^3+175s^2+260s +140 ----------------------------------------------- s^7+3s^6+5s^5+8s^4+9s^3+5s^2+s (2)零极点增益模型 零极点模型是是分别对原传递函数的分子、分母进行因式分解,以获得系统的零点和极点的表示形式。式中,K 为系统增益,z1,z2,…,zm 为系统零点,p1,p2,…,pn 为系统极点。例2、已知系统的传递函数 试用MATLAB 建立控制系统的零极点模型 例2 1212()()()()()()() m n K s z s z s z G s s p s p s p --???-=--???-() 10 s 5(s)(s 0.5)(2)(3) G s s +=+++

数学建模(Matlab)

数学规划作业(MatLab) 1、某厂向用户提供发动机,合同规定,第一、二、三季度末分别 交货40台、60台、80台.每季度的生产费用为 ()2 f x ax bx =+(单位: 元), 其中x 就是该季度生产的台数.若交货后有剩余,可用于下季度交货,但需支付存储费,每台每季度c 元.已知工厂每季度最大生产能力为100台,第一季度开始时无存货,设a =50、b =0、2、c =4,问:工厂应如何安排生产计划,才能既满足合同又使总费用最低.讨论a 、b 、c 变化对计划的影响,并作出合理的解释. 解: 问题的分析与假设: 分析: 问题的关键在于由于工厂的生产能力足以满足每个季度用户的需求,但就是为了使总费用最少,那么利用每个季度生产费用的不同,可用利用上个生产费用低的季度多生产来为下个季度进行准备,前提就是本月节省下的费用减去总的发动机存储费用还有剩余,这样生产才有价值,才可能满足合同的同时又能使总费用最低。 基本假设:1工厂的生产能力不受外界环境因素影响。2为使总费用最低,又能满足合同要求,各个季度之间的生产数量之间就是有联系的。3第一季度开始时无存货。4工厂每季度的生关费用与本季度生产的发动机台数有关。5生产要按定单的数量来进行,生产的数量应与订单的数量相同,以避免生产出无用的机器。 符号规定:X1―――第一季度生产发动机的数量 X2―――第二季度生产发动机的数量 X3―――第三季度生产发动机的数量 建模: 1、三个季度发动机的总的生产量为180台。 2、每个季度的生产量与库存机器的数量之与要大于等于本季度的交货数量。 3、每个月的生产数量要符合工厂的生产能力。 4、将实际问题转化为非线性规划问题,建立非线性规划模型 目标函数 min f(x)=50(x1+x2+x3)+0、2(x12+x22+x32)+4(x1-40)+4(x1+x2-100) 整理,得 min f(x)=50(x1+x2+x3)+0、2(x12+x22+x32)+4(2x1+x2-140) 约束函数 s 、t x1+x2≥100; x1+x2+x3=180; 40≤x1≤100; 0≤x2≤100;

数学建模matlab例题参考及练习讲课稿

数学建模m a t l a b例题参考及练习

数学实验与数学建模 实验报告 学院: 专业班级: 姓名: 学号: 完成时间:年月日

承 诺 书 本人承诺所呈交的数学实验与数学建模作业都是本人 通过学习自行进行编程独立完成,所有结果都通过上机验 证,无转载或抄袭他人,也未经他人转载或抄袭。若承诺 不实,本人愿意承担一切责任。 承诺人: 年 月 日 数学实验学习体会 (每个人必须要写字数1200字以上,占总成绩的20%) 练习1 一元函数的图形 1. 画出x y arcsin =的图象. 2. 画出x y sec =在],0[π之间的图象. 3. 在同一坐标系中画出x y = ,2x y =,3x y =,3x y =,x y =的图象. 4. 画出3232)1()1()(x x x f ++-=的图象,并根据图象特点指出函数)(x f 的 奇偶性. 5. 画出)2ln(1++=x y 及其反函数的图象.

6. 画出321+=x y 及其反函数的图象. 练习2 函数极限 1. 计算下列函数的极限. (1)x x x 4cos 12sin 1lim 4-+π→. 程序: sym x ; f=(1+sin(2*x))/(1-cos(4*x)); limit(f,x,pi/4) 运行结果: lx21 ans = 1 (2). 程序: sym x ; f=(1+cos(x))^(3*sec(x)); limit(f,x,pi/2) 运行结果: lx22 ans = exp(3) (3)22)2(sin ln lim x x x -ππ→. 程序: sym x ; f=log(sin(x))/(pi-2*x)^2; limit(f,x,pi/2) 运行结果: lx23 ans = x x x sec 3 2 ) cos 1 ( lim + π →

相关主题