数学建模选修课第二次作业.docx
《数学建模选修课第二次作业.docx》由会员分享,可在线阅读,更多相关《数学建模选修课第二次作业.docx(15页珍藏版)》请在冰点文库上搜索。
数学建模选修课第二次作业
数学建模作业
一、回答以下问题
1.什么是数学模型?
答:
所谓数学模型,是指针对或参照现实世界中某类事物系统的主要特征、主要关系,经过简化与抽象,用形式化的数学语言概括或近似地加以表述的一种数学结构.一般表现为数理逻辑的逻辑表达式、各种数学方程(如代数方程、微分方程、积分方程等)及反映量与量之间相互关系的图形、表格等形式.它或者能解释特定现象的现实状态,或者能预测对象的未来状态,或者能提供处理对象的最优决策与控制.好的数学模型应具备可靠性和可解性(也叫适用性)两方面的特性:
可靠性指在允许的误差范围内,能反映出该系统有关特性的内在联系;可解性指易于数学处理与计算.数学
模型方法将复杂的研究对象简单化、抽象化,撇开对象的一些具体特征,减少其参数,只抽取其主要量、量的变化及量与量之间的相互关系,在“纯粹”的形态上进行研究,突出主要矛盾,忽略次要矛盾,用数学语言刻画出客观对象量的规律性,简洁明了地描述现实原形,揭示出其本质的规律,并在对模型修正、求解的基础上使原问题得以解决.可以说,数学模型是对现实原形的一种理想化处理是一个科学的抽象过程,因而具有高度的抽象性与形式化特征.这一特征使其成为一种经典的数学方法,并随着科学技术的数学化趋势,超越数学范畴,广泛地应用于自然科学、工程技术和社会科学的一切领域.。
2.数学模型是如何分类的?
答:
用字母、数字和其他数学符号构成的等式或不等式,或用图表、图像、框图、数理逻辑等来描述系统的特征及其内部联系或与外界联系的模型。
它是真实系统的一种抽象。
数学模型是研究和掌握系统运动规律的有力工具,它是分析、设计、预报或预测、控制实际系统的基础。
3.建立数学模型一般应遵循什么原则?
答:
模型假设是整个建模的起点,是模型建立的基础,不同的人对同一事物的认识因其角度及深度不一致而产生不同的假设条件,从而导致不同的模型建立恰当进行模型假设是极为重要的。
同时模型假设和模型建立是一个不易分离的整体过程。
.在进行模型假设和模型建立的过程中,我们应遵从以下两个基本原则,并按两个基本原则的顺序进行反复的操作。
(1)分割原则分割成若干个独立的研究对象并说明对象间应有联系可用图来表示对象间联系。
(2)联系原则构造出对象之间的联系的具体方式或细节
分割的复杂性在于不存在绝对的客观分割的标准因为任何一个分割方式都带有一定的主观性,
分割问题不单纯是数学问题,还需要有其他学科的观点,这就构成模型假设的复杂性。
对其复杂性我们有必要作深入探讨和研究。
4.建立数学模型一般都有什么方法?
答:
建模的一般方法:
机理分析:
根据对现实对象特性的认识,分析其因果关系,找出反映内部机理的规律,所建立的模型常有明确的物理或现实意义。
测试分析方法:
将研究对象视为一个“黑箱”系统,内部机理无法直接寻求,通过测量系统的输入输出数据,并以此为基础运用统计分析方法,按照事先确定的准则在某一类模型中选出一个数据拟合得最好的模型。
测试分析方法也叫做系统辩识。
将这两种方法结合起来使用,即用机理分析方法建立模型的结构,用系统测试方法来确定模型的参数,也是常用的建模方法。
在实际过程中用那一种方法建模主要是根据我们对研究对象的了解程度和建模目的来决定建立数
5.建立数学模型的一般步骤是什么?
答:
建模的具体步骤大致如下:
1、实际问题通过抽象、简化、假设,确定变量、参数;
2、建立数学模型并数学、数值地求解、确定参数;
3、用实际问题的实测数据等来检验该数学模型;
二、多项式插值
由函数y=sinx在三点0,π/4,π/2处的函数值,构造二次插值多项式P2(x),计算sin(π/8)的近似值,并估计截断误差。
解:
令
,
则
(1)程序代码:
clearall;
clc;
x=[0pi/4pi/2];%%计算各个插值点的x的值
y=sin(x);%%sin中一定要带括号
p=polyfit(x,y,2);%%构造二次插值多项式
f=inline('sinx');%%将sinx定义成内联函数以便使用
fprintf('运行结果为:
\n\n')%%输出语句
disp('构造的二次插值多项式P2(x)为:
')%%输出语句
f=poly2str(p,'x')%%将拟合后的多项式系数(双精度数组)转换为字符形式的函数
poly2sym(p);%%将该向量转换为多项式
fprintf('sin(π/8)的近似值为:
\n')
m=polyval(p,pi/8)%%用于对已经拟合后的多项式系数,
%%当给出某个点时求其函数值;计算插值多项式在pi/8处的值
fprintf('sin(π/8)的真实值为:
\n')
n=sin(pi/8)
fprintf('截断误差Rn(x)为:
\n')%%输出语句
R=abs(n-m)
(2)运行结果:
运行结果为:
构造的二次插值多项式P2(x)为:
f=
-0.33575x^2+1.164x-2.8824e-016
sin(π/8)的近似值为:
m=
0.4053
sin(π/8)的真实值为:
n=
0.3827
截断误差Rn(x)为:
R=
0.0226
(3)结果分析:
在编写程序时用了poly2str和poly2sym函数,开始时没有运用第二个将该向量转换为多项式的函数,即无法计算,经查资料后修改得到结果如上。
三、数值积分
轮船的甲板成近似半椭圆面形,为了得到甲板的面积,首先测得横向最大相间8.534米,然后等距离的测得纵向高度,自左向右分别为
0.914,5.060,7.772,8.717,9.083,9.144,9.083,8.992,8.687,7.376,2.073米,计算甲板的面积。
解:
(1)程序代码:
x=linspace(0,8.534,13)%由0到8.534将其分为13等份计算其相应的坐标点
y=[00.9145.0607.7728.7179.0839.1449.0838.9928.6877.3762.0730];
x0=0:
0.001:
8.534;
y1=interp1(x,y,x0);%%一维线性插值函数
fprintf('梯形积分结果为:
\n\n')%%输出语句
x=[x,fliplr([x
(1),x,x(end)])];
y=[y/2,fliplr([y
(1)/2,-y/2,y(end)/2])];
subplot(1,2,1);
plot(x,y,'-r')%,x0,y1,'-r')
S=trapz(y1)*0.001%%积分函数
title('用梯形积分结果图');
xlabel('x');
ylabel('y');
y=[0.914,5.060,7.772,8.717,9.083,9.144,9.083,8.992,8.687,7.376,2.073];
n=length(y)
x=linspace(0,8.534,n);
pp=spline(x,y);%%求样条函数表达式
fprintf('辛普森积分结果为:
\n\n')%%输出语句
S2=quadl(@ppval,0,8.534,[],[],pp)%%高阶法数值积分
%%%绘制甲板的图形
subplot('position',[200,150,900,400])%%subplot('Position',[leftbottom%widthheight])
%figure的位置和大小,距离屏幕左边200,底部150,宽900,高400,默认单位是像素
xx=[x,fliplr([x
(1),x,x(end)])];%%把x矩阵的第1个到最后一个元素沿垂直轴左右翻转
yy=[y/2,fliplr([y
(1)/2,-y/2,y(end)/2])];%实现矩阵的左右翻转
subplot(1,2,2)
plot(xx,yy)
title('用辛普森积分结果图');
xlabel('x');
ylabel('y');
(2)运行结果:
x=
Columns1through11
00.71121.42232.13352.84473.55584.26704.97825.68936.40057.1117
Columns12through13
7.82288.5340
梯形积分结果为:
S=
54.6894
n=
11
辛普森积分结果为:
S2=
65.2824
(3)结果分析:
上面结果是用两种方法来进行计算的,第一个是一维线性插值,第二个是辛普森积分,运行结果如上图,但是无法再给图像命名时再给两个图填充颜色,原因未知。
结果是第一个的结果没有第二个结果好。
四、多项式拟合
对于以下实验数据
x=(11.522.533.544.555.567891011)
y=(44.688.49.289.59.79.861010.210.3210.3010.2410.1810.009.40)
给出拟合多项式,计算x=6.5,12处的值,并绘制相应曲线图。
解:
(1)程序代码:
clearall;
clc;
x=[11.522.533.544.555.567891011];
y=[44.688.49.289.59.79.861010.210.3210.3010.2410.1810.009.40];
a=polyfit(x,y,5);%拟合出的五次函数的系数
fprintf('运行结果为:
\n\n')%%输出语句
disp('构造的二次插值多项式P2(x)为:
')%%输出语句
f=poly2str(a,'x')%%将拟合后的多项式系数(双精度数组)转换为字符形式的函数
poly2sym(a);%%将该向量转换为多项式
fprintf('x=6.5的近似值为:
\n')
m=polyval(a,6.5)%%用于对已经拟合后的多项式系数,
fprintf('x=12的近似值为:
\n')
n=polyval(a,12)%%用于对已经拟合后的多项式系数,
xx=linspace(min(x),max(x));%绘图用到的点的横坐标
yy=polyval(a,xx);%拟合曲线的纵坐标
%subplot(2,2,4);
plot(x,y,'m.',xx,yy,'b');%绘图,原始数据+拟合曲线
xlabel('x');
ylabel('y');
legend('原始数据','拟合曲线');%图示
title('五次多项式拟合曲线');
holdon;
x=[6.512];
y=[mn];
plot(x,y,'gs')
(2)运行结果:
运行结果为:
构造的二次插值多项式P2(x)为:
f=
0.00038416x^5-0.01707x^4+0.28271x^3-2.2403x^2+8.6685x
-3.1048
x=6.5的近似值为:
m=
10.2120
x=12的近似值为:
n=
8.4585
(3)结果分析:
开始时我用了四个不同次数多项式来进行拟合结果如第一个图,但是由于最后要计算x=6.5,12处的值,我取了误差最小的四次多项式来进行计算,拟合,结果如第二个图。
五、常微分方程数值解
用预估校正Euler法,求解定解问题
求出步长为1的所有点的值,并绘制图形。
解:
(1)程序代码:
clc;
clearall;
f=inline('y^2-2*x/y');
xx=0:
1:
10;
x=xx;
x
(1)=0;
y
(1)=1;
h=1;
n=10;
fprintf('每个节点的结果为:
\n\n')%%输出语句
fori=1:
1:
n+1
x(i+1)=x(i)+h;
y(i+1)=y(i)+h*f(x(i),y(i));
xx=x(i)
yy=y(i)
end;
fprintf('最后的结果为:
\n\n')%%输出语句
m=y(n)
plot(x,y,'-mo')%绘图,原始数据+拟合曲线
xlabel('x');
ylabel('y');
title('预估校正Euler法解定解问题的曲线');
(2)运行结果:
每个节点的结果为:
xx=
0
yy=
1
xx=
1
yy=
2
xx=
2
yy=
5
xx=
3
yy=
29.2000
xx=
4
yy=
881.6345
xx=
5
yy=
7.7816e+005
xx=
6
yy=
6.0554e+011
xx=
7
yy=
3.6667e+023
xx=
8
yy=
1.3445e+047
xx=
9
yy=
1.8077e+094
xx=
10
yy=
3.2676e+188
最后的结果为:
m=
1.8077e+094
(3)结果分析:
运行结果如上图。