数学建模作业
- 格式:docx
- 大小:226.48 KB
- 文档页数:4
一. 某旅游景点从山脚到山顶有一缆车索道,全长约1471m,高度 差为380m 。
采用循环单线修建,从下站到上站行经8个铁塔,将缆绳分为九段,各段的水平距离用i d 表示,高差用i h 表示,其数据见下表:每一段缆绳垂下来的最低点不低于两端铁塔最低塔顶悬挂绳处1m 。
要求:(1)折线法;(2)抛物线法,估计整个索道工程所用的缆绳总长度。
解:(一)折线法思路:考虑到实际中工程架线不能过紧,但又为了节省原料,我们采取求出最大折线和最小折线,对两者求取平均值,以得到对缆线总长度的估测。
由于八个铁塔分九段,因此此题分两部分考虑:(1) 第一段:直接求出发点到第一个铁塔的距离,即21211h d l +=(2) 第二到九段:建立坐标系,运用距离公式求取l 的长度。
设A (x -,1),B(i d x -,1i h +)得:l =用此公式求最大最小值。
matlab 求解第一段syms h1 d1h1=50d1=220l1=sqrt(d1.^2+h1.^2)第二段求最小值clearl='sqrt((-x)^2+1)+sqrt((200-x)^2+(45+1)^2)' ezplot(l,[0,200]);[xmin,lmin]=fminbnd(l,0,200)得图形可得当x=4.2553时,取得最小值205.45由图形可得当x=200时取得最大值,即clearl='sqrt((-x)^2+1)+sqrt((200-x)^2+(45+1)^2)' ezplot(l,[0,200]);[xmin,lmin]=fminbnd(l,0,200)x=200;lmax=eval(l);l=(lmin+lmax)/2;得lmax=246.0025l=225.7254第三段到第九段算法与第二段相同,所以结果为第一段:l1 = 225.6103第二到九段分别为: 225.7254 ,163.5839 ,142.7476,120.6438,142.7476,163.5839,225.7254,248.5321总长为:1658.9m抛物线法思路:参照示意图,因为将绳的形状看做抛物线,为了方便研究,以抛物线的最低点为原点建立抛物线2y ax =,则每段绳的长度为l =,最后相加求总长。
【陈文滨】1、在稳定的椅子问题中,如设椅子的四脚连线呈长方形,结论如何?【模型假设】(1)椅子四条腿一样长,椅脚与地面接触处视为一点,四脚的连线呈长方形.(2)地面高度是连续变化的,沿任何方向都不会出现间断 (没有像台阶那样的情况),即从数学的角度看,地面是连续曲面.这个假设相当于给出了椅子能放稳的必要条件.(3)椅子在任何位置至少有三只脚同时着地.为保证这一点,要求对于椅脚的间距和椅腿的长度而言,地面是相对平坦的.因为在地面上与椅脚间距和椅腿长度的尺寸大小相当的范围内,如果出现深沟或凸峰(即使是连续变化的),此时三只脚是无法同时着地的。
【模型建立】在上述假设下,解决问题的关键在于选择合适的变量,把椅子四只脚同时着地表示出来.首先,引入合适的变量来表示椅子位置的挪动.生活经验告诉我们,要把椅子通过挪动放稳,通常有拖动或转动椅子两种办法,也就是数学上所说的平移与旋转变换.然而,平移椅子后问题的条件没有发生本质变化,所以用平移的办法是不能解决问题的.于是可尝试将椅子就地旋转,并试图在旋转过程中找到一种椅子能放稳的情形.注意到椅脚连线呈长方形,长方形是中心对称图形,绕它的对称中心旋转180度后,椅子仍在原地.把长方形绕它的对称中心O旋转,这可以表示椅子位置的改变。
于是,旋转角度θ这一变量就表示了椅子的位置.为此,在平面上建立直角坐标系来解决问题.如下图所示,设椅脚连线为长方形ABCD,以对角线AC所在的直线为x轴,对称中心O为原点,建立平面直角坐标系.椅子绕O点沿逆时针方向旋转角度θ后,长方形ABCD转至A1B1C1D1 的位置,这样就可以用旋转角θ(0≤θ≤π)表示出椅子绕点O旋转θ后的位置.其次,把椅脚是否着地用数学形式表示出来.我们知道,当椅脚与地面的竖直距离为零时,椅脚就着地了,而当这个距离大于零时,椅脚不着地.由于椅子在不同的位置是θ的函数,因此,椅脚与地面的竖直距离也是θ的函数.由于椅子有四只脚,因而椅脚与地面的竖直距离有四个,它们都是θ的函数.而由假设(3)可知,椅子在任何位置至少有三只脚同时着地,即这四个函数对于任意的θ,其函数值至少有三个同时为0.因此,只需引入两个距离函数即可.考虑到长方形ABCD是中心对称图形,绕其对称中心 O沿逆时针方向旋转180°后,长方形位置不变,但A,C和B,D对换了.因此,记A、B两脚与地面竖直距离之和为f(θ),C、D两脚与地面竖直距离之和为g(θ),其中θ∈[0,π],从而将原问题数学化。
数学建模作业姓名:叶勃学号:班级:024121一:层次分析法1、 分别用和法、根法、特征根法编程求判断矩阵1261/2141/61/41A ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦11/2433217551/41/711/21/31/31/52111/31/5311A ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦的特征根和特征向量(1)冪法求该矩阵的特征根和特征向量 程序为:#include<iostream> #include<math.h> using namespace std;#define n 3 //三阶矩阵#define N 20 #define err 0.0001 //幂法求特征值特征向量 void main(){cout<<"**********幂法求矩阵最大特征值及特征向量***********"<<endl; int i,j,k;double A[n][n],X[n],u,y[n],max;cout<<"请输入矩阵:\n"; for(i=0;i<n;i++) for(j=0;j<n;j++)cin>>A[i][j]; //输入矩阵 cout<<"请输入初始向量:\n"; for(i=0;i<n;i++)cin>>X[i]; //输入初始向量 k=1; u=0;while(1){ max=X[0]; for(i=0;i<n;i++) {if(max<X[i]) max=X[i]; //选择最大值 }for(i=0;i<n;i++)y[i]=X[i]/max; for(i=0;i<n;i++)X[i]=0;for(j=0;j<n;j++)X[i]+=A[i][j]*y[j]; //矩阵相乘}if(fabs(max-u)<err){cout<<"A的特征值是 :"<<endl; cout<<max<<endl; cout<<"A的特征向量为:"<<endl; for(i=0;i<n;i++) cout<<X[i]/(X[0]+X[1]+X[2])<<" ";cout<<endl;break;}else{if(k<N) {k=k+1;u=max;} else {cout<<"运行错误\n";break;}}} }程序结果为:(2)和法求矩阵最大特征值及特征向量程序为:#include<stdio.h>#include<iostream>#include<math.h> using namespace std;#define n 3 //三阶矩阵#define N 20void main(){int i,j,k;double A[n][n],w[n],M[n],u[n],W[n][n],max;cout<<"********和法求矩阵的特征根及特征向量*******"<<endl;cout<<"请输入矩阵:\n";for(i=0;i<n;i++)for(j=0;j<n;j++)cin>>A[i][j]; //输入矩阵 //计算每一列的元素和M[0]=0;M[1]=0;M[2]=0;for(i=0;i<n;i++)for(j=0;j<n;j++){M[i]+=A[j][i];}//将每一列向量归一化for(i=0;i<n;i++)for(j=0;j<n;j++){W[j][i]=A[j][i]/M[i];}//输出按列归一化之后的矩阵Wcout<<"按列归一化后的矩阵为:"<<endl;for(i=0;i<n;i++)for(j=0;j<n;j++){cout<<W[i][j]<<" ";if(j==2)cout<<endl;} //求特征向量w[0]=0;w[1]=0;w[2]=0;for(i=0;i<n;i++)for(j=0;j<n;j++){w[i]+=W[i][j];}cout<<"特征向量为:"<<endl; for(i=0;i<n;i++){u[i]=w[i]/(w[0]+w[1]+w[2]);cout<<u[i]<<" "<<endl;}//求最大特征值max=0;for(i=0;i<n;i++){w[i] = 0;for(j=0;j<n;j++){w[i] += A[i][j]*u[j];}}for(i = 0;i < n;i++){max += w[i]/u[i];}cout<<"最大特征根为:"<<endl;cout<<max/n<<endl; }运行结果为:(3)根法求矩阵最大特征值及特征向量:程序为:#include<stdio.h>#include<iostream>#include<math.h>using namespace std;#define n 3 //三阶矩阵#define N 20void main(){int i,j;double A[n][n],w[n],M[n],u[n],W[n][n],max;cout<<"********根法求矩阵的特征根及特征向量*******"<<endl; cout<<"请输入矩阵:\n";for(i=0;i<n;i++)for(j=0;j<n;j++)cin>>A[i][j]; //输入矩阵//计算每一列的元素和M[0]=0;M[1]=0;M[2]=0;for(i=0;i<n;i++)for(j=0;j<n;j++){M[i]+=A[j][i];}//将每一列向量归一化for(i=0;i<n;i++)for(j=0;j<n;j++){W[j][i]=A[j][i]/M[i];}//输出按列归一化之后的矩阵Wcout<<"按列归一化后的矩阵为:"<<endl;for(i=0;i<n;i++)for(j=0;j<n;j++){cout<<W[i][j]<<" ";if(j==2)cout<<endl;}//求特征向量//w[0]=A[0][0];w[1]=A[0][1];w[2]=A[0][2];w[0]=1;w[1]=1;w[2]=1;for(i=0;i<n;i++){for(j=0;j<n;j++){w[i]=w[i]*W[i][j];}w[i]=pow(w[i], 1.0/3);}cout<<"特征向量为:"<<endl;for(i=0;i<n;i++){u[i]=w[i]/(w[0]+w[1]+w[2]);cout<<u[i]<<" "<<endl;}//求最大特征值max=0;for(i=0;i<n;i++){w[i] = 0;for(j=0;j<n;j++){w[i] += A[i][j]*u[j];}}for(i = 0;i < n;i++){max += w[i]/u[i];}cout<<"最大特征值为:"<<endl; cout<<max/n;}运行结果为:2、编程验证n阶随机性一致性指标RI:运行结果:3、考虑景色、费用、居住、饮食、旅途五项准则,从桂林、黄山、北戴河三个旅游景点选择最佳的旅游地。
数学建模案例作业作业1 商人过河问题三名商人各带一个随从乘船渡河,一只小船只能容纳二人,由他们自己划行(六个人都会划船)。
随从们密谋,无论何时,一旦随从的人数比商人多,就杀人越货。
但是如何乘船渡河的决定权掌握在商人手中。
商人们怎样才能安全渡河?示意图如下: 随从:商人: 一、状态变量一次决策),(k k k y x S = 3,2,1=k 表示第k 次渡河时,此岸的商人数,随从数. 最初 )3,3(0=S 且为整数)3,0(≤≤k k y x)}0,0(),1,0(),2,0(),3,0(),0,1(),1,1(),2,1(),3,1(),0,2(),1,2(),2,2(),3,2(),0,3(),1,3(),2,3(),3,3{(=S要安全过河,需保证彼岸此岸都安全,及随从数不能大于商人数,所以安全的情况有10种,即)}0,0(),1,0(),2,0(),3,0(),1,1(),2,2(),0,3(),1,3(),2,3(),3,3{(=S ② 二、决策变量设),(k k k v u d =2,0(≤≤k k v u 且)21≤+≤k k v u 表示第k 次渡河时,船上的商人数和随从数 )}1,0(),0,1(),2,0(),1,1(),0,2{(=D与状态变量相结合,安全的情况有三种,即 )}1,0(),2,0(),1,1{((=D ③ 三、状态转移方程奇数次(此案到彼岸)k k k d S S -=+1 偶数次(彼岸到此案)k k k d S S +=+1 即k k k k d S S )1(1-+=+ ① 数学建模:由①确定的转移方程下,经过n 次决策,将初始状态转移到最终状态)0,0(=n S . 每次的决策取自③式,每次到达的状态在②中. 图解法:①从右上角移到左下角,每次最多移两步;②奇数次渡河往左下方,偶数次渡河往右下方。
建立平面直角坐标系如图:n S 过河方案:从A 点)3,3(0=S 出发到D 点)0,0(=n S 结束① 小船一次最多能载两人,所以每次最多移动两个格子② 由此岸即彼岸时人员减少,即奇数遍时向左下方行走;有彼岸及此岸时人员增加,即偶数遍时向右上方行走。
数学建模作业(1)
数模
数模
1.学校共学校共1000名学生,235人住在宿名学生,人住在A宿名学生人住在人住B宿舍人住在C宿舍舍,333人住宿舍,432人住在宿舍人住宿舍,人住在宿舍.学生们要组织一个10人的委员会人的委员会,学生们要组织一个人的委员会,试用下列办法分配各宿舍的委员数:列办法分配各宿舍的委员数:(1)按比例分配取整数的名额后,剩下的名按比例分配取整数的名额后,按比例分配取整数的名额后额按惯例分给小数部分较大者。
额按惯例分给小数部分较大者。
(2)用Q值方法。
值方法。
用值方法
数模
如果委员会从10人增至人如果委员会从人增至15人,用以上人增至2种方法再分配名额。
将2种方法两次分配种方法再分配名额。
种方法再分配名额种方法两次分配的结果列表比较。
的结果列表比较。
(3)你能提出其它的方法吗?用你的方你能提出其它的方法吗?你能提出其它的方法吗法分配上面的名额。
法分配上面的名额。
数模
2.考察模拟水下爆炸的比例模型.爆炸物质量m,在距爆炸点距离r处设置仪器,接收到的冲击波压强为p,记大气初始压强p0,水的密度ρ,水的体积弹性模量k,用量纲分析法已经得到
p0ρrp=p0(,)km3
数模
设模拟实验与现场的p0,ρ,k相同,而爆炸物模型的质量为原模型的1/1000.为了使实验中接收到与现场相同的压强p,问实验时应如何设置接收冲击波的仪器,即求实验仪器与爆炸点之间的距离是现场的多少倍?
p0,ρ,k。
徐州工程学院个性化教育数学建模(大作业)试卷班级 学号 姓名 得分1、某农场饲养的某种动物所能达到的最大年龄为15岁,将其分成三个年龄组:第一组,0~5岁;第二组,6~10岁;第三组,11~15岁。
动物从第二年龄组开始繁衍后代,经过长期统计,第二组和第三组的繁殖率分别为4和3,第一年龄和第二年龄组的动物能顺利进入下一个年龄组的存活率分别为1/2和1/4。
假设农场现有三个年龄段的动物各100头,问15年后农场三个年龄段的动物各有多少头?解:由于年龄分为五岁一段,所以时间周期取5年。
设(k)i x 表示第k 个时间周期,第i 组年龄阶段动物的数量。
因为某一时间周期第二年龄组和第三年龄组的动物数量是由上一周期上一年龄组存活下来的动物的数量决定的,所以有(k)(k 1)(k)(k 1)213211,22x x x x --== 又因为某一时间周期,第一年龄组的动物数量是由上一时间周期各个年龄组出生的动物数量决定的,所以有(k)(k 1)(k 1)12343x x x --=+由此得到递推关系式: (k)(k 1)(k 1)123(k)(k 1)21(k)(k 1)32431214x x x x x x x ----⎧=+⎪⎪⎪=⎨⎪⎪=⎪⎩ 用矩阵表示为: (k)(k 1)11(k)(k 1)22(k)(k 1)3304310021004x x x x x x ---⎡⎤⎢⎥⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎢⎥⎣⎦即(k)(k 1)x Lx -=,其中(n)043100100,10021001004L x ⎡⎤⎢⎥⎡⎤⎢⎥⎢⎥⎢⎥==⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎢⎥⎣⎦则有()()()(3)(2)(1)(0)1437.5137.587.5x Lx L Lx L L Lx ⎡⎤⎢⎥====⎢⎥⎢⎥⎣⎦计算过程代码如下: >> x0=[100;100;100];>> L=[0,4,3;1/2,0,0;0,1/4,0]; >> x1=L*x0; >> x2=L*x1; >> x3=L*x2x3 =1.0e+03 * 1.4375 0.1375 0.0875结果分析:由于动物的数量不可能出现小数,所以根据实际,15年后农场饲养动物的数量2、深洞的估算: 假如你站在洞口且身上仅带着一只具有跑秒功能的计算器,你出于好奇心想用扔下一块石头听回声的方法来估计洞的深度,假定你捡到一块质量是1KG 的 石头,并准确的测定出听到回声的时间T=5S ,就下面给定情况,分析这一问题,给出相应的数学模型,并估计洞深。
数学建模例题和答案
题目:
一个汽车公司拥有两个工厂,分别生产两种型号的汽车,A型和B型,每种型号的汽车都有一定的销售价格。
现在,该公司需要在两个工厂中生产A型和B型汽车,使得总收入最大。
答案:
1、建立数学模型
设A型汽车在第一个工厂生产的数量为x,在第二个工厂生产的数量为y,A型汽车的销售价格为a,B型汽车的销售价格为b,则该公司的总收入可以表示为:
总收入=ax+by
2、确定目标函数
由于题目要求使得总收入最大,因此可以将总收入作为目标函数,即:
最大化Z=ax+by
3、确定约束条件
由于两个工厂的生产能力有限,因此可以设置约束条件:
x+y≤M,其中M为两个工厂的总生产能力
4、求解
将上述模型转化为标准的数学规划模型:
最大化Z=ax+by
s.t. x+y≤M
x≥0,y≥0
由于该模型是一个线性规划模型,可以使用数学软件进行求解,得到最优解:
x=M,y=0
即在第一个工厂生产M件A型汽车,在第二个工厂不生产B型汽车,此时该公司的总收入最大,为Ma。
数学建模作业姓名:叶勃学号:班级:024121一:层次分析法1、 分别用和法、根法、特征根法编程求判断矩阵1261/2141/61/41A ⎡⎤⎢⎥=⎢⎥⎢⎥⎣⎦11/2433217551/41/711/21/31/31/52111/31/5311A ⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎣⎦的特征根和特征向量(1)冪法求该矩阵的特征根和特征向量 程序为:#include<iostream> #include<math.h> using namespace std;#define n 3 //三阶矩阵#define N 20 #define err 0.0001 //幂法求特征值特征向量 void main(){cout<<"**********幂法求矩阵最大特征值及特征向量***********"<<endl; int i,j,k;double A[n][n],X[n],u,y[n],max;cout<<"请输入矩阵:\n"; for(i=0;i<n;i++) for(j=0;j<n;j++)cin>>A[i][j]; //输入矩阵 cout<<"请输入初始向量:\n"; for(i=0;i<n;i++)cin>>X[i]; //输入初始向量 k=1; u=0;while(1){ max=X[0]; for(i=0;i<n;i++) {if(max<X[i]) max=X[i]; //选择最大值 }for(i=0;i<n;i++)y[i]=X[i]/max; for(i=0;i<n;i++)X[i]=0;for(j=0;j<n;j++)X[i]+=A[i][j]*y[j]; //矩阵相乘}if(fabs(max-u)<err){cout<<"A的特征值是 :"<<endl; cout<<max<<endl; cout<<"A的特征向量为:"<<endl; for(i=0;i<n;i++) cout<<X[i]/(X[0]+X[1]+X[2])<<" ";cout<<endl;break;}else{if(k<N) {k=k+1;u=max;} else {cout<<"运行错误\n";break;}}} }程序结果为:(2)和法求矩阵最大特征值及特征向量程序为:#include<stdio.h>#include<iostream>#include<math.h> using namespace std;#define n 3 //三阶矩阵#define N 20void main(){int i,j,k;double A[n][n],w[n],M[n],u[n],W[n][n],max;cout<<"********和法求矩阵的特征根及特征向量*******"<<endl;cout<<"请输入矩阵:\n";for(i=0;i<n;i++)for(j=0;j<n;j++)cin>>A[i][j]; //输入矩阵 //计算每一列的元素和M[0]=0;M[1]=0;M[2]=0;for(i=0;i<n;i++)for(j=0;j<n;j++){M[i]+=A[j][i];}//将每一列向量归一化for(i=0;i<n;i++)for(j=0;j<n;j++){W[j][i]=A[j][i]/M[i];}//输出按列归一化之后的矩阵Wcout<<"按列归一化后的矩阵为:"<<endl;for(i=0;i<n;i++)for(j=0;j<n;j++){cout<<W[i][j]<<" ";if(j==2)cout<<endl;} //求特征向量w[0]=0;w[1]=0;w[2]=0;for(i=0;i<n;i++)for(j=0;j<n;j++){w[i]+=W[i][j];}cout<<"特征向量为:"<<endl; for(i=0;i<n;i++){u[i]=w[i]/(w[0]+w[1]+w[2]);cout<<u[i]<<" "<<endl;}//求最大特征值max=0;for(i=0;i<n;i++){w[i] = 0;for(j=0;j<n;j++){w[i] += A[i][j]*u[j];}}for(i = 0;i < n;i++){max += w[i]/u[i];}cout<<"最大特征根为:"<<endl;cout<<max/n<<endl; }运行结果为:(3)根法求矩阵最大特征值及特征向量:程序为:#include<stdio.h>#include<iostream>#include<math.h>using namespace std;#define n 3 //三阶矩阵#define N 20void main(){int i,j;double A[n][n],w[n],M[n],u[n],W[n][n],max;cout<<"********根法求矩阵的特征根及特征向量*******"<<endl; cout<<"请输入矩阵:\n";for(i=0;i<n;i++)for(j=0;j<n;j++)cin>>A[i][j]; //输入矩阵//计算每一列的元素和M[0]=0;M[1]=0;M[2]=0;for(i=0;i<n;i++)for(j=0;j<n;j++){M[i]+=A[j][i];}//将每一列向量归一化for(i=0;i<n;i++)for(j=0;j<n;j++){W[j][i]=A[j][i]/M[i];}//输出按列归一化之后的矩阵Wcout<<"按列归一化后的矩阵为:"<<endl;for(i=0;i<n;i++)for(j=0;j<n;j++){cout<<W[i][j]<<" ";if(j==2)cout<<endl;}//求特征向量//w[0]=A[0][0];w[1]=A[0][1];w[2]=A[0][2];w[0]=1;w[1]=1;w[2]=1;for(i=0;i<n;i++){for(j=0;j<n;j++){w[i]=w[i]*W[i][j];}w[i]=pow(w[i], 1.0/3);}cout<<"特征向量为:"<<endl;for(i=0;i<n;i++){u[i]=w[i]/(w[0]+w[1]+w[2]);cout<<u[i]<<" "<<endl;}//求最大特征值max=0;for(i=0;i<n;i++){w[i] = 0;for(j=0;j<n;j++){w[i] += A[i][j]*u[j];}}for(i = 0;i < n;i++){max += w[i]/u[i];}cout<<"最大特征值为:"<<endl; cout<<max/n;}运行结果为:2、编程验证n阶随机性一致性指标RI:运行结果:3、考虑景色、费用、居住、饮食、旅途五项准则,从桂林、黄山、北戴河三个旅游景点选择最佳的旅游地。
数学建模作业一学校共1000名学生,235人住在A 宿舍,333人住在B 宿舍,432人住在C 宿舍。
学生们要组织一个10人的委员会,试用下列方法分配各宿舍的委员数:(1) 按比例分配取整数的名额后,剩下的名额按惯例分给小数部分较大的。
(2) Q 值方法:m 方席位分配方案:设第i 方人数为i p ,已经占有i n 个席位,i=1,2,…,m .当总席位增加1席时,计算2(1)i i i i p Q n n =+,i=1,2,…,m 把这一席分给Q 值大的一方。
(3) d ’Hondt 方法:将A ,B ,C 各宿舍的人数用正整数n=1,2,3,…相除,其商数如下表:将所得商数从大到小取前10个(10为席位数),在数字下标以横线,表中A,B,C 行有横线的数分别为2,3,5,这就是3个宿舍分配的席位。
(试解释其道理。
)(4) 试提出其他的方法。
数学建模作业二假定人口的增长服从这样的规律:时刻t 的人口为)(t x ,t 到t+ t 时间内人口的增长与m x -)(t x 成正比例(其中m x 为最大容量).试建立模型并求解.作出解的图形并与指数增长模型、阻滞增长模型的结果进行比较。
解:=r(x m -x),r 为比例系数,x(0)=x 0 解为:x(t)= x m -( x m - x 0),如下图粗线,当t →∞时,它与Logistic 模型相似。
数学建模作业三一容器内盛入盐水100L,含盐50g .然后将含有2g/L的盐水流如容器内,流量为3L/min.设流入盐水与原盐水搅拌而成均匀的混合物。
同时,此混合物又以2L/min的流量流出,试求在30min时,容器内所含的盐量。
若以同样流量放进的是淡水,则30min时,容器内还剩下多少盐?要求写出分析过程。
解:设x(t)为t时刻容器内剩余的盐的质量①x(t)=2(100+t)-1.5(100+t)-2X(t=30)=171.24② x(t)=(100+t)-2 X(t=30)=29.59数学建模作业四商业集团公司在123,,A A A 三地设有仓库,它们分别库存40,20,40个单位质量的货物,而其零售商店分布在地区,1,,5i B i ,它们需要的货物量分别是25,10,20,30,15个单位质量。
54)(3)u(t)=e cos(21)5y ()10()35''()50'()24()5''()4'()2()t t t y t y t y t y t u t u t u t -++++++=++(4.已知输入信号为,求下面微分方程的解。
解:此题是求解关于独立变量t 的微分方程
在Matlab 中输入下列指令
>> u=exp(-5*t)*cos(2*t+1)+5; >> m=5*diff(u,t,2)+4*diff(u,t)+2*u
输出:m =87*exp(-5*t)*cos(2*t+1)+92*exp(-5*t)*sin(2*t+1)+10
>> y=dsolve('D4y+10*D3y+35*D2y+50*Dy+24*y=
87*exp(-5*t)*cos(2*t+1)+92*exp(-5*t)*sin(2*t+1)+10','t')
输出:y=
5/12-547/520*exp(-5*t)*sin(2*t+1)-343/520*exp(-5*t)*cos(2*t+1)+C1*exp(-2*t)+C2*exp(-4*t)+C3*exp(-t)+C4*exp(-3*t)
注:如下解法也可以:
解:此题是求解关于独立变量t 的微分方程,初始条件为5u(t)=e cos(21)5t t -++
(1)在Matlab 中输入下列指令,将计算的结果返回到了一个结构A 中:
>>A=dsolve('D4y+10*D3y+35*D2y+50*Dy+24*y=5*D2u+4*Du+2*u','u=exp(-5*t)*cos(2*t+1)+5','t');
(2)利用指令>>A.y 和A.u 可以观察到y 和u 的值,如下所示:
>>A.y
ans =
5/12-547/520*exp(-5*t)*sin(2*t+1)-343/520*exp(-5*t)*cos(2*t+1)+C1*exp(-2*t)+C2*exp(-t)+C3*exp(-4*t)+C4*exp(-3*t)
>>A.u
ans =
exp(-5*t)*cos(2*t+1)+5
''()2'()()2()'()4()3()4t t x t x t x t y t e y t x t y t e --⎧⎫+=+-⎪⎪⎨⎬=++⎪⎪⎩⎭
5.试求解下面线性微分方程组。
解:此题是求解x 和y 关于独立变量t 的微分方程组的通解
(1)在Matlab 中输入以下指令,将计算结果返回结果A 中
>> A=dsolve('D2x+2*Dx=x+2*y-exp(-t)','Dy=4*x+3*y+4*exp(-t)','t')
(2)输入指令A.y 和A.x 就能查看y 和x 的解,如下所示:
>>A.x
ans =
-6*t*exp(-t)+C1*exp(-t)+C2*exp((1+6^(1/2))*t)+C3*exp(-(-1+6^(1/2))*t)
>>A.y
ans =
6*t*exp(-t)-C1*exp(-t)+4*C2*exp((1+6^(1/2))*t)+2*C2*exp((1+6^(1/2))*t)*6^(1/2)+4*C3*exp(-(-1+6^(1/2))*t)-2*C3*exp(-(-1+6^(1/2))*t)*6^(1/2)+1/2*exp(-t)
22211122212211222211120.5457exp(0.75 3.75 1.5,1p ,)0.7575exp(6),110.5457exp(0.75 3.75 1.5),1x x x x x x x x x x x x x x x ⎧⎫---+>⎪⎪=---<+≤⎨⎬⎪⎪--++≤-⎩⎭
8.某函数概率密度的函数由下面的分段函数表示:
(x 试绘制此函数的三维曲面。
解:此题是求分段函数的三维曲面图
在Matlab 中输入如下指令:
>>x1=-3:0.005:3;x2=x1;[X1,X2]=meshgrid(x1,x2);%生成“格点”矩阵
>>Y=0.545*exp(-0.75*X2.^2-3.75*X1.^2-1.5*X1).*(X1+X2>1)
+0.7575*exp(-X2.^2-6*X1.^2).*(abs(X1+X2)<=1)+0.5457*exp(-0.75*X2.^2-3.75*X1.^2+1.5*X1).*(X1+X2<=-1);%输入分段函数方程
>>surf(X1,X2,Y);%绘制三维网格图
最后所得的图像如下:
从图中可以看到整个曲面有明显的界限,分成了三个部分
z (,)f x y ==9.试绘制二元函数
解:此题是求一个存在两条无意义的直线的三维曲面图
在Matlab 中输入如下指令:
>>x=-10:0.01:10; y=x;[X,Y]=meshgrid(x,y);%生成“格点”矩阵
>>Z=ones(1,size(x))./sqrt((X-1).^2+Y.^2+eps).*((1-X).^2+Y .^2>0)+ones(1,size(x))./sqrt((X+1).^2+Y.^2+eps).*((1+X).^2+Y.^2>0);%输入曲面的方程
>>surf(X,Y ,Z);%生产曲面图
最后所得的图像如下:
这是这个曲面的俯视图,从图中可以看到在(-1,0)和(1,0)两个位置有两个空白点
这是这个曲面图的侧视图,图中明显可以看到整个曲面分成了两个对称的部分
M
12.建立一个文件,求所有的“水仙花数”。
所谓“水仙花数”是指一个三位数,其各位数字的立方和等于该数本身。
M文件的代码如下:
clear;%清除Matlab工作空间保存的变量
for x=100:999 %x在100和999之间取值
a=floor(x/100);%获取x的百位数字
b=floor((x-100*a)/10);%获取x的十位数字
c=x-a*100-b*10;%获取x的个位数
if(a.^3+b.^3+c.^3==x) y=x;%判断x是否为“水仙花数”
y
end
end
运行M 文件后命令窗口显示出所有的“水仙花数”
y =
153
y =
370
y =
371
y =
407
151M x x (),2x 10n n n a x x +-=+13.编写文件,用迭代法求要求前后两次求出的的误差值小于。
M 文件内容如下:
clear;%清除Matlab 工作空间保存的变量
a=-1;%将迭代公式中的变量a 设为-1
while(a<0) a=input('Input a>>');%要求用户输入a 的值,如果a 为负数就重复要求用户输入 end
x(1)=a/2;%设置迭代公式的初始值
for i=1:100 %此迭代过程不大于100次
x(i+1)=0.5*(x(i)+a/x(i));%运行迭代公式
if(abs(x(i+1)-x(i))<10^-5) break;%检查前后两次求出的x 的误差是否满足条件就终止迭代 end
end
x
Matlab 命令窗口中的内容如下:
Input a>>-6(输入-6)
Input a>>9(程序要求再次输入a 的值,于是输入9)
x =
4.5000 3.2500 3.0096 3.0000 3.0000 3.0000
Input a>>100(第二次测试输入的a 值为100)
x =
50.0000 26.0000 14.9231 10.8121 10.0305 10.0000 10.0000 10.0000。