MATLAB论文.docx
《MATLAB论文.docx》由会员分享,可在线阅读,更多相关《MATLAB论文.docx(14页珍藏版)》请在冰豆网上搜索。
MATLAB论文
MATLAB论文
MATLAB在数学建模中的作用
姓名:
冯文俊学号:
201464100129
【摘要】
通过对实际问题的抽象和简化,引入一些数学符号、变量和参数,运用某些规律,用数学语言和数学方法建立变量、参数间的内在联系,得出一个数学结构,该数学结构是实现的一个近似刻画,称之为数学模型。
建立和求解数学模型的全过程就是数学建模,它包括模型的建立、求解、分析、检验循环往返的全过程, MATLAB语言正是处理此类问题的很好工具,既能进行数值求解,又能绘制有关曲线,非常方便实用。
1.数学建模的概念
定义:
数学模型,就是运用科学抽象法,把复杂的研究对象转化为数学问题,经合理简化后,建立起揭示研究对象定量的规律性的数学关系式(或方程式)。
这既是数学方法中最关键的一步,也是最困难的一步;数学建模是指对现实世界的一特定对象, 为了某特定目的,做出一些重要的简化和假设, 运用适当的数学工具得到一个数学结构,用它来解释特定现象的现实性态,预测对象的未来状况,提供处理对象的优化决策和控制,设计满足某种需要的产品等。
2.数学建模的一般步骤
第一步:
根据研究对象的特点,确定研究对象属哪类自然事物或自然现象,从而确定使用何种数学方法与建立何种数学模型。
即首先确定对象与应该使用的数学模型的类别归属问题,是属于“必然”类,还是“随机”类;是“突变”类,还是“模糊”类。
第二步:
确定几个基本量和基本的科学概念,用以反映研究对象的状态。
这需要根据已有的科学理论或假说及实验信息资料的分析确定。
例如在力学系统的研究中,首先确定的摹本物理量是质主(m)、速度(v)、加速度(α)、时间(t)、位矢(r)等。
必须注意确定的基本量不能过多,否则未知数过多,难以简化成可能数学模型,因此必须诜择出实质性、关键性物理量才行。
第三步:
抓住主要矛盾进行科学抽象。
现实研究对象是复杂的,多种因素混在一起,因此,必须变复杂的研究对象为简单和理想化的研究对象,做到这一点相当困难,关键是分清主次。
如何分清主次只能具体问题具体分析,但也有两条基本原则:
一是所建数学模型一定是可能的,至少可给出近似解;二是近似解的误差不能超过实际问题所允许的误差范围。
第四步:
对简化后的基本量进行标定,给出它们的科学内涵。
即标明哪些是常量,哪些是已知量,哪些是待求量,哪些是矢量,哪些是标量,这些量的物理含义是什么?
第五步:
按数学模型求出结果。
第六步:
验证数学模型。
验证时可根据情况对模型进行修正,使其符合程度更高,当然这以求原模型与实际情况基本相符为原则。
简而言之
1) 明确问题
2) 进行合理的假设;
一般模型假设遵从以下原则:
目的性原则:
从原型中抽象出与建模目的有关的因素,简 化掉无关的因素或关系不大的因素。
简明性原则:
所给的假设条件要简单,精确,有利于构造 模型。
真实性原则:
设条款要符合情理,简化带来的误差应满 足实际问题所允许的范围内。
全面性原则:
在对事物原型本身作出的假设的同时,还要 给出原型所处的环境条件。
的表达式,由于处理的是静态的独立数据,故称为数理统计方法。
时序分析法--处理的是动态的相关数据,又称为过程统计方法。
回归分析法--用于对函数f(x) 的一组观测值(xi,fi)i=1,2,„,n, 确定函数
的表达式,由于处理的是静态的独立数据,故称为数理统计方法。
时序分析法--处理的是动态的相关数据,又称为过程统计方法。
3)仿真和其他方法
计算机仿真(模拟)--实质上是统计估计方法,等效于抽样试验。
1.离散系统
仿真--有一组状态变量。
2. 连续系统仿真--有解析表达式或系统结构图。
因子试验法--在系统上作局部试验,再根据试验结果进行不断分析修改,求得
所需的模型结构。
人工现实法--基于对系统过去行为的了解和对未来希望达到的目标,并考虑
到系统有关因素的可能变化,人为地组成一个系统。
4.应用MATLAB进行数学建模研究
数学是在实际应用的需求中产生的, 我们把遇到的实际问题进行分析,发现其中的可以用数学语言来描述的关系或规律,把这个实际问题转化成一个数学问题,建立了数学模型!
。
但数学模型迫切需要一个方便、快捷且功能强大的工具去实现并解决,特别是随着科技的进步,人们在解决问题的时候常常要用到许多比较复杂的数学知识和大量的数据计算, 这无疑加大了人们解决问题的难度,也要耗费更长的时间。
而MATLBA 正是在数学计算和大量数据处理方面具备其它软件所不具备的优势,且操作简单,运算速度快,所以应用MATLBA 进行数学建模也就大大提高了人们的效率。
而且MATLBA还有很强的绘图功能,这就可以使得模型图象化,使得研究人员对建模成果的优劣一目了然,容易进行修正与改进。
5.简单数模问题中MATLAB的应用
例1:
某公司2000年各月生产总值(单位:
万元)分别为:
22 60 88 95 56 23 9 10 14 81 56 23,试显示折线图表示该厂生产总值的变化情况。
在MATLAB命令窗口中键入:
>>p=[22,60,88,95,56,23,9,10,14,81,56,23];plot(p);
可得:
如图:
问2:
根据表1数据作一个多子图。
要求:
第一个图各类网井产油量与年份曲线图,第二个图为01~05年各类网井产油量的对比直方图,第三个图为03年各类网井产油量的饼图,第四个图为七五井和十五井产油量年份的双座标图。
给如下数据:
各类井网在近几年的产油量(万吨)
年份:
199719981999200020012002200320042005
MATLAB语言来对此例题做以下解析:
figure('position',[50,50,800,650]) %在图形窗口左下角建立横纵坐标都为50的,宽度 800,高度650的窗
t1=1997:
2005;%产生行向量t1
t2=2001:
2005;%产生行向量t2
y1=[ 500.6 442.4 428.6 370.1 343.1];%一个行矩阵y1
y2=[ 354.7 318.0 280.7 246.6 229.0];%建立一个行矩阵y2
y3=[197.4 297 412.8 547.0 579.8 547.5 527.0 492.3 437.0];%y3
y4=[ 72.3 218.2 297.1 416.1 508.7]%建立一个行矩阵y4
subplot(2,2,1)%2*2个区中的1号区
plot(t2,y1,t2,y2,t1,y3,t2,y4);%绘制二维图像
title('各类网井产油量与年份曲线图');%标题为各类网井产油量与年份曲线图 legend('七五井','八五井','九五井','十五井',1);%列出图标
t2=2001:
2005;%产生行向量t2
y2=[500.6 354.7 579.8 72.3 442.4 318.0 547.5 218.2 428.6 280.7 527.0 297.1 370.1 246.6 492.3 437.0 343.1 229.0 437.0 508.4];%建立一个行矩阵y2
subplot(2,2,2)%2*2个区中的2号区
bar(t2,y2)
title('01~05年各类网井产油量的对比直方图');%标题为01~05年各类网井产油量的对比直方图
legend('七五井','八五井','九五井','十五井',1);%列出图标
t3=[343.1 229.0 437.0 508.7];%产生行向量t3
subplot(2,2,3))%2*2个区中的3号区
pie(t3);
title('03年各类网井产油量的饼图');%标题'03年各类网井产油量的饼图
legend('七五井','八五井','九五井','十五井',1);%列出图标
t4=2001:
1:
2005;%产生行向量t4
y1=[354.7 318.0 280.7 246.6 229.0];
y2=[72.3 218.2 297.1 416.1 508.7];%建立一个行矩阵y1
subplot(2,2,4);%2*2个区中的4号区
plotyy(t4,y1,t4,y2);%绘制二维图像
title('七五井和十五井产油量与年份的双座标图');%标题七五井和十五井产油量与年份的双座标图 legend('七五井','十五井'); %列出图标
得如下:
例3:
利用MATLAB建立线性系统的数学模型 传递函数表示
1.线性系统的模型建立
G(s)=Y(s)/U(s)=(6s^3+12s^2+6+10)/(s^4+2s^3+3s^2+s+1) 可以将其用下列MATLAB语句来实现:
>>num=[6 12 6 10];den=[1 2 3 1 1];printsys(num,den) 执行结果为 num/den =
6 s^3 + 12 s^2 + 6 s + 10 ----------------------------
s^4 + 2 s^3 + 3 s^2 + s + 1 2.若给定的系统的传递函数为:
G(s)=4(s+2)(s^2+6s+6)/(s(s+1)^3(s^3+3s^2+2s+5)) 解:
>> num=4*conv([1 2],[1 6 6]) num =
4 32 72 48
>>den=conv([1 0],conv([1 1],conv([1 1],[1 3 2 5]))) den =
1 5 9 12 12 5 0
关于从状态空间形式到零极点形式的转换
MATLAB函数ss2zp()的调用格式为:
[Z,P,K]=ss2zp(A,B.C,D,iu)
其中,A,B,C,D为状态空间形式的个系数矩阵;iu为输入的代号。
对于单变量系统iu=1,对于多变量系统iu表示要求的输入序号;返回量矩阵P
储存传递函数的极点;而零点储存在矩阵Z中,
Z的列数等于输出y的维数,每列对应一个输出;对应增益则在列向量K中。
如下示例:
对于以给出状态空间表达式,是根据以上函数求取系统的传递函数矩阵。
X(t)=[0 0 1;-3/2 -2 -1/2;-3 0 -4]x(t)+[1 1;-1 -1;-1 -3]u(t) Y(t)=[1 0 0;0 1 0]x(t)
此系统可由以下MATLAB语句唯一地表示出来 >>A=[0 0 1;-3/2 -2 -1/2;-3 0 -4] >>B=[1 1;-1 -1;-1 -3]
>>C=[1 0 0;0 1 0],D=zeros(2,2) 实验过程如下
>> A=[0 0 1;-3/2 -2 -1/2;-3 0 -4] A =
0 0 1.0000 -1.5000 -2.0000 -0.5000 -3.0000 0 -4.0000 >> B=[1 1;-1 -1;-1 -3] B =
1 1 -1 -1 -1 -3
>> C=[1 0 0;0 1 0],D=zeros(2,2) C =
1 0 0 0 1 0 D =
0 0 0 0 再运行:
>>[Z1,P1,K1]=ss2zp(A,B,C,D,1),[Z2,P2,K2]=ss2zp(A,B,C,D,2) 窗口中出现
Z1 =
-3.0000 -2.0000 -2.0000 -3.0000
P1 = -2 -1 -3
K1 =1 -1
Z2 =
-1.0000 -3.0000 -2.0000 -1.0000 P2 = -2 -1 -3
K2 = 1 -1
再看一个将此多变量系统求其传递函数矩阵的例子
还是上一个例子的系统
解 利用以下MATLAB语句
>>[num1,den1]=ss2tf(A,B,C,D,1),[num2,den2]=ss2tf(A,B,C,D,2)
结果显示:
num1 =
0 1.0000 5.0000 6.0000
0 -1.0000 -5.0000 -6.0000
den1 =
1 6 11 6
num2 =
0 1.0000 3.0000 2.0000
0 -1.0000 -4.0000 -3.0000
den2 =
1 6 11 6
从而可得系统的传递函数矩阵为:
1
1^256^2321
13()=(^256)(^243)1
1^36^21161
2ssssssGssssssssss
通过MATLAB进行最优控制系统设计:
4,已知系统的状态空间表达式为:
010000100231100xxuyx试求使得性能指标:
(^^)0
JxTQxuTRudt
为最小的最优控制u=-Kx的反馈增益矩阵K。
其中:
10000010,1001QR
解:
MATLAB程序为:
%ex8_15.m
A=[0 1 0; 0 0 1;0 -2 -3 ];B=[0;0;1];C=[1;0;0];D=0; Q =diag([100;1;1]);R=1;[K,P,r]=lqr(A,B,Q,R) t=0:
0.1:
10;
figure
(1);step(A-B*K,B,C,D,1,t);
figure
(2);[y,x,t]= step(A-B*K,B,C,D,1,t);plot(t,x,’y’)
执行后得如下结果和如图8—15所示的阶跃响应曲线。
K =
10.0000 8.3632 2.1697
P =
103.6316 51.6975 10.0000
51.6975 37.5749 8.3632
10.0000 8.3632 2.1697
r =
-2.7055
-1.2321 + 1.4758i
-1.2321 - 1.4758i
再次如图
例4:
多目标规划模型
问题一.某钢铁厂准备用5000万用于A、B两个项目的技术改造投资。
设x1、x2分别表示分配给项目A、B的投资。
据专家预估计,投资项目A、B的年收益分别为70%和66%。
同时,投资后总的风险损失将随着总投资和单项投资的增加而增加,已知总的风险损失为0.02x12+0.01x22+0.04(x1+x2)2,问应如何分配资金才能使期望的收益最大,同时使风险损失为最小
建立数学模型
max f1(x)=70x1+66x2
min f2(x)= 0.02x12+0.01x22+0.04(x1+x2)2
x1+x2≤5000
0≤x1, 0≤x2
线性加权构造目标函数:
max f=0.5f1(x) –0.5f2(x) 化最小值问题:
min (-f)=- 0.5f1(x) +0.5f2(x) 首先编辑目标函数M文件ff11.m
function f=ff11(x) %建立函数
f=-0.5*(70*x
(1)+66*x
(2))+0.5*(0.02*x
(1)^2+0.01*x
(2)^2+0.04*(x
(1)+x
(2))^2); %建立函数关系调用单目标规划求最小值问题的函数
x0=[1000,1000] %建立矩阵
A=[1 1]; %建立矩阵
b=5000;
lb=zeros(2,1); %建立矩阵
[x,fval, exitflag]=fmincon(@ff11,x0, A,b,[],[],lb,[]) %使用函数来求值 f1=70*x
(1)+66*x
(2) %建立函数关系
f2=0.02*x
(1)^2+0.01*x
(2)^2+0.04*(x
(1)+x
(2))^2%建立函数关系
结果:
x =
307.1428 414.2857
fval =
-1.2211e+004
exitflag =
1
f1 = 4.8843e+004
f2 = 2.4421e+004
六、总结
通过以上对“MATLAB在简单数学建模中的应用” 的分析。
我们可以认识到MATLAB
中强大的绘图功能以及可靠的数值计算和符号计算功能,它的应用几乎涉及各个领域。
因为它的存在很多的问题也变得十分简单了。
Matlab软件能将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案。
七、体会
经过对MATLAB语言这门课程的学习,我了解并体会到了MATLAB语言相对于其它程序语言的强大功能和优越性,它更加的方便和简洁易懂。
总体来说通过对上述内容的分析讨论,使我对MATLAB中的某些函数的应用更加的熟练,相信对我在以后的学习中会有很大的帮助。
[参考文献]
[1] 赵静.数学建模与数学实验[M].北京:
高等教育出版社, 2000.
[2] 蔡常丰.数学模型建模分析[M].北京:
科学出版社 , 1995.
[3] 王沫然. MATLBA与科学计算[M].北京:
电子工业出版社,2001 .
[4] 陈怀琛.MATLBA 及其在理工课程中的应用指南[M].北京:
西北电子科技大学出2001.
[5] 谢兆鸿.数学建模技术[M].北京:
中国水利水电出版社,2003 .