数学建模选修课第二次作业Word格式.docx
《数学建模选修课第二次作业Word格式.docx》由会员分享,可在线阅读,更多相关《数学建模选修课第二次作业Word格式.docx(15页珍藏版)》请在冰点文库上搜索。
![数学建模选修课第二次作业Word格式.docx](https://file1.bingdoc.com/fileroot1/2023-4/30/5f9829f6-9dd0-4244-a227-7bd8207f2f6c/5f9829f6-9dd0-4244-a227-7bd8207f2f6c1.gif)
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);
%%将该向量转换为多项式
sin(π/8)的近似值为:
\n'
)
m=polyval(p,pi/8)%%用于对已经拟合后的多项式系数,
%%当给出某个点时求其函数值;
计算插值多项式在pi/8处的值
sin(π/8)的真实值为:
n=sin(pi/8)
截断误差Rn(x)为:
R=abs(n-m)
(2)运行结果:
f=
-0.33575x^2+1.164x-2.8824e-016
m=
0.4053
n=
0.3827
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米,计算甲板的面积。
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);
%%一维线性插值函数
梯形积分结果为:
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,'
S=trapz(y1)*0.001%%积分函数
title('
用梯形积分结果图'
xlabel('
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);
%%求样条函数表达式
辛普森积分结果为:
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)
用辛普森积分结果图'
x=
Columns1through11
00.71121.42232.13352.84473.55584.26704.97825.68936.40057.1117
Columns12through13
7.82288.5340
S=
54.6894
11
S2=
65.2824
上面结果是用两种方法来进行计算的,第一个是一维线性插值,第二个是辛普森积分,运行结果如上图,但是无法再给图像命名时再给两个图填充颜色,原因未知。
结果是第一个的结果没有第二个结果好。
四、多项式拟合
对于以下实验数据
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处的值,并绘制相应曲线图。
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);
%拟合出的五次函数的系数
f=poly2str(a,'
poly2sym(a);
x=6.5的近似值为:
m=polyval(a,6.5)%%用于对已经拟合后的多项式系数,
x=12的近似值为:
n=polyval(a,12)%%用于对已经拟合后的多项式系数,
xx=linspace(min(x),max(x));
%绘图用到的点的横坐标
yy=polyval(a,xx);
%拟合曲线的纵坐标
%subplot(2,2,4);
m.'
xx,yy,'
b'
%绘图,原始数据+拟合曲线
legend('
原始数据'
'
拟合曲线'
%图示
五次多项式拟合曲线'
holdon;
x=[6.512];
y=[mn];
gs'
0.00038416x^5-0.01707x^4+0.28271x^3-2.2403x^2+8.6685x
-3.1048
10.2120
8.4585
开始时我用了四个不同次数多项式来进行拟合结果如第一个图,但是由于最后要计算x=6.5,12处的值,我取了误差最小的四次多项式来进行计算,拟合,结果如第二个图。
五、常微分方程数值解
用预估校正Euler法,求解定解问题
求出步长为1的所有点的值,并绘制图形。
y^2-2*x/y'
xx=0:
1:
10;
x=xx;
x
(1)=0;
y
(1)=1;
h=1;
n=10;
每个节点的结果为:
fori=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;
最后的结果为:
m=y(n)
-mo'
)%绘图,原始数据+拟合曲线
预估校正Euler法解定解问题的曲线'
xx=
0
yy=
1
2
5
3
29.2000
4
881.6345
7.7816e+005
6
6.0554e+011
7
3.6667e+023
8
1.3445e+047
9
1.8077e+094
10
3.2676e+188
运行结果如上图。