实验四第一部分 数学问题的矩阵表示与求解
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 .问题分析与数学模型
以
xn
xn1 0.7 xn 0.6 yn yn 1 0.3 xn 0.4 yn
表示第n年不脱产职工人数, yn 表示第n年脱产职工人数,故:
找出
X n1与 X n 的关系,有:
10000 X0 2000
xn 1 0.7 0.6 xn yn 1 0.3 0.4 yn
可见从第五年即达到平衡状态, 不脱产工人为8000人, 脱产工人为4000人.
4 . 所揭示的特征值和特征向量问题:
事实上,若要使系统达到平衡状态,即:
X n AX n1 , 且X n X n1
令系统的平衡解为X,于是有:
X AX ( A E ) X 0
即:X为矩阵A的特征值为1时,所对应的特征向量! 而前面已经算出: 对应 1 1 的特征向量为
这说明,多年之后, 动物量大得非常惊人。
14
x 10
4
不同年份各年龄段动物数
12
1年 动 物 数 2年 动 物 数 3年 动 物 数
10
动物数
8
6
4
2
0
1
2
3
4
5
6 年份
7
8
9
10
2 .算法与数学模型求解
3.如果每年平均向市场出售动物c=[s s s]T, 分析动物数分布向量变化规律可知:
X (1) LX (0) c X (2) LX (1) c X (3) LX (2) c X
n
1
3 . 问题解答(MATLAB代码)
MATLAB代码如下:
A=[0.7 0.6;0.3,0.4]; [v,d]=eig(A) %得到矩阵A的特征值和特征向量; syms n; %定义符号变量n; X0=[10000;2000] %初始值 X=v*d.^n*inv(v)*X0 %第n年的结果 运行结果为: v= 0.8944 -0.7071 0.4472 0.7071 d= 1.0000 0 0 0.1000 X0 = 10000 2000 X= 8000+2000*(1/10)^n 4000-2000*(1/10)^n
这是一个齐次线性方程组的求解问题.
2 .算法与数学模型求解
求解代码如下:
A=[-2/3,1/3,1/4;1/6,-2/3,1/2;1/2 1/3 -3/4]; format rat;%将输出结果以有理数格式显示 null_A=null(A,'r') %得到齐次方程组的有理解空间 运行结果为: null_A = 6/7 27/28 1
2 p1 1
所以人数为8000及4000人时恰满足比例条件。
例 3 动物养殖的数学实验 养殖场养殖一类动物最多3年(满三年的将送往市场卖掉), 按一岁、二岁和三岁将其分为三个年龄组。一岁组是幼龄组, 二岁组和三岁组是有繁殖后代能力的成年组。 二岁组平均一年繁殖4个后代,三岁组平均一年繁殖3个后代。 一龄组和二龄组动物能养殖成为下一年龄组动物的成功率分 别为0.5和0.25。假设刚开始养殖时有三个年龄组的动物各 1000头,试计算一年后、二年后、三年后各年龄段动物数量。 10年后农场三个年龄段的动物的情况会怎样? 如果每年平均向市场供应动物数c=[s s s]T,考虑每年都必 须保持有每一年龄的动物前提下,c应取多少为好?是否有 最佳方案?
0.7 0.6 令A , 故: 0.3 0.4
记
x X n n,则: yn
X n AX n1 AAX n2 A X 0
n
2 .算法与数学模型求解
为求 A ,可将A对角化,设相似变换矩阵为P,
求出A的特征多项式为: f A ( )
试验四 第一部分 数学问题的矩阵表示与求解
如何将实际问题用数学符号与模型表示, 并进行求解,是本专业学生必备之基本能力
【例1】闭合经济问题
三个朋友A,B,C各饲养家禽,A养鸡,B养鸭,C养兔. 他们同意按照下面的比例分享各人饲养的家禽: A得鸡的1/3,鸭的1/3,兔的1/4; B得鸡的1/6,鸭的1/3,兔的1/2; C得鸡的1/2,鸭的1/3,兔的1/4;
(4)
故:
X (5) L5 X (0) ( L4 L3 L2 L E )c
LX
(3)
c
X (5) LX (4) c
考虑每年都必须保持有每一年龄的动物,应有
2 .算法与数学模型求解
c=input('输入 c:='); x0=[1000;1000;1000]; L=[0 4 3;1/2 0 0;0 1/4 0]; x1=L*x0-c; x2=L*x1-c; x3=L*x2-c; x4=L*x3-c; x5=L*x4-c; [x1,x2,x3,x4,x5] %做成一个大矩阵输出,第i 列为第i年各年龄段的动物数
x1 =1743, x2 = 1928, x3 = 2000
即他们三人的收益各自是1743元,1928元,2000元.
【例2】 公司职工问题(特征值 与特征向量的应用问题)
某公司为了技术更新,计划对职工实行分批脱产轮训. 已知该公司现有2000人正在脱产轮训,而不脱产职工有10000人. 若每年从不脱产职工中抽调30%的人脱产轮训,同时又有60% 脱产轮训职工结业回到生产岗位.设职工总数不变.试通过矩阵 运算表示第n年职工状况,并据此计算第n年不脱产职工与脱 产职工各多少人.
从而有:
2 .算法与数学模型求解
1.由初始数据计算一年后、两年后、三后动物数量, MATLAB程序如下
x0=[1000;1000;1000]; L=[0 4 3;1/2 0 0;0 1/4 0]; x1=L*x0; x2=L*x1; x3=L*x2; x4=L*x3; [x1,x2,x3]
2.计算10年内动物数量变化规律(程序:t3.m)
x1 , x2 , x3
A的收益平衡可描述为:
1 1 1 x1 x2 x3 x1; 3 3 4
B的收益平衡可描述为:
1 1 1 x1 x2 x3 x2 ; 6 3 2
C的收益平衡可描述为:
1 1 1 x1 x2 x3 x3 ; 2 3 4
1 .问题分析与数学模型
1 .问题分析与数学模型
由题设,在初始时刻一岁、二岁、三岁的动物数量分别为:
以一年为一时间段,则某时刻三个年龄段的动物数量可用向量
x1 X x2 表示。 x 3 x1( k ) (k ) (k ) 用向量 X x2 (k ) x3
0.7
0.3 0.6 (1 )(0.1 ) 0.4
n
对应 1 1 的特征向量为
1 对应 2 0.1 的特征向量为 p2 1 1 P 1 AP 故 0.1
2 p1 1
从而可求出
齐次方程组的通解可以表示为:
x1 6/7 x2 k 27 / 28 1 x 3
其中,k 为任意实数.
3 . 问题解答
尽管这一问题是在方程组的无穷多组解中寻求解答,但是由 于题目条件限制,对于参数k,没有更多的选择余地. 为了确定满足条件,x3=2000,故取k=2000,得:
将三个等式联立,可得描述实际问题的方程组.
1 1 1 3 x1 3 x2 4 x3 x1 ; 1 1 1 x1 x2 x3 x2 ; 3 2 6 1 1 1 2 x1 3 x2 4 x3 x3 ;
1 1 2 3 x1 3 x2 4 x3 0; 2 1 1 x1 x2 x3 0; 3 2 6 1 1 3 2 x1 3 x2 4 x3 0;
2 1 1 2 1 An Pn P1 1 1 0.1 1 1
n
n
1
2 1 1 2 1 10000 Xn A X0 1 1 0.1 1 1 2000
表示第k个时间段动物数分布
1 .问题分析与数学模型
当k= 0,1,2,3时,X(k) 分别表示养殖开始时、一年后、 两年后、三年后的动物数量分布
第一个年龄组在第k+1个时间段的数量如下 同理,根据一龄组和二龄组 的养殖成功率,可得等式 建立数学模型如下
1 .问题分析与数学模型
写成矩阵形式
称为莱斯利矩阵。
3 . 问题解答
所谓的最优解,需满足一定条件。 若目标是使市场供应最充足(假设为供不应求), 则最优解应是最大的使得动物不绝种的数量。 经测试,c=99,c=100,c=101,分别计算,可得: 最大供应量可选择100头,可使各年龄段均不会绝种。
本部分实验小结
对实际问题的提炼成数学模型,并引入矩阵表示; 对矩阵表示的数学问题,进行matlab求解; 得到符合实际问题的答案。
要求他们分享家禽之后所获得的收益与他们各自饲养家禽的 收益相等.同时各户的最高收益是二千元,则每户确定他们各 自的收益是多少?要求: (1)列出问题的数学模型,并算出最终他们三人应得的收益; (2)试写出相应的Matlab求解代码.
1 .问题分析与数学模型
根据协议中每人分享饲养后总收益与各自饲养相等的原则, 分别考虑A、B及C的总收益.设他们三人应得收益分别为
X0=[1000;1000;1000]; %各年龄段动物初始值 L=[0 4 3;0.5 0 0;0 0.25 0];%leslie矩阵 for n=1:10 X(:,n)=L^n*X0; %X的第n列为第n年各年龄段动物的值 end bar(X') %使用bar函数绘出条形图,可以直观的显示数据对比结果, 该函数绘制X'的每一列作为同性质的一组数据 legend('1年动物数','2年动物数','3年动物数'); title('不同年份各年龄段动物数') xlabel('年份'); ylabel('动物数')
即:第n年的不脱产职工数为
xn 8000 2000 (0.1)n
第n年的脱产职工数为
yn 4000 2000 (0.1)n
3 . 问题解答(MATLAB代码)
已知X和n的关系后,将n用常数代替,可得到X的值,如: for i=1:6 subs(X,i) end
输出结果为: ans = 8200 3800 ans = 8020 3980 ans = 8002 3998 ans = 1.0e+003 * 8.0002 3.9998 ans = 1.0e+003 * 8.0000 4.0000 ans = 1.0e+003 * 8.0000 4.0000