清华大学谢金星数学实验作业5.docx
《清华大学谢金星数学实验作业5.docx》由会员分享,可在线阅读,更多相关《清华大学谢金星数学实验作业5.docx(21页珍藏版)》请在冰豆网上搜索。
清华大学谢金星数学实验作业5
实验5线性方程组解法
实验6非线性方程求解
【实验目的】
1.学会用MATLAB软件数值求解线性代数方程组,对迭代法的收敛性误差作初步分析;
2.通过实例学习用线性代数方程组解决简化的实际问题。
3.学会用MATLAB软件数值求解线性代数方程组,对迭代法的收敛性误差作初步分析;
4.通过实例学习用线性代数方程组解决简化的实际问题。
【实验内容】
一.种群繁殖问题(教材5.9)
(1)建立数学模型
根据问题描述,建立如下所示的模型:
-
=
令
,
则有:
(当稳定后
和
是一样的)
所以
(2)求解x1~x5:
●用matlab编程如下:
..
●当给定b,s,h的数值以后,可以求出满足条件的x,运行结果如图所示:
(3)将h的数值改变,仍然运行以上代码即可,所得结果如下:
●给出的结果中出现了负数,因此认为提给的要求是无法实现的。
另外在解决该题的过程中发现整个建模的过程中没有用到
这个值,这可能是原题的失误或者自己理解的错误(也希望老师可以指出其中的问题所在)。
二.(6.6)共沸混合物问题
●1)该题的模型已经在教材中建立,只需要用matlab进行计算即可,需要注意的是第四种物质可以直接由1-前三种物质的比例得到,这样可以减少用fsolve命令解方程组带来的误差。
相应的程序如下所示:
其中的M函数如下所示:
2)运行结果如下所示:
3)为了得到更多情况下的组成结构,改变初始比例和初始温度,会得到不同的结果,比如在XT=(0.5,0.5,0,70)时候,得到结果如下
当XT=(0,0,0.5,80)时候,得到结果如下:
当XT=(0.6,0.1,0.1,40)时候,得到结果如下所示:
●简单地绘制一个表格表示如下:
初值
解
XT0
X1
X2
X3
X4
T
[0.25,0.25,0.25,50]
0.0000
0.5858
0.4142
0.0000
71.9657
[0.5,0.5,0,70]
0.0000
0.7803
0.0000
0.2197
76.9613
[0,0,0.5,80]
0.0000
-0.0000
1.0000
0.0000
82.5567
[0.6,0.6,0.1,40]
0.0000
0.5858
0.4142
0.0000
71.9657
●
(1)从表格中看出,不同的初值会对最后的平衡产生影响,可能最后达到一个共同的平衡,比如第一组和第四组数据,也可能达到不同的平衡。
表格中的数据不一定包含所有的平衡状况,但是较好的说明了问题;
(2)计算结果中有的部分出现了微小的负数的情况,这可能是matlab本身算法存在的误差或者摄入误差等带来的
三.(6.8)期望价格问题
●首先根据题意给出相应的数学模型、迭代公式:
带入数值即为:
以上为q(t)进行迭代的依据
●下面给出相关的matlab程序进行不同c值下的迭代运算。
迭代的chaos程序在教材中已经给出,如下所示:
然后给出迭代公式的M函数:
运行chaos函数,可以得到不同c值下的迭代过程的混沌图案,相应代码如下:
其相应的图形为:
由于是中心对称的,故只研究如下的右侧部分:
与课本展示的图案不同,该图从左右两边向中间变得更加复杂,分叉点在左右两边均有,而中间会变得非常复杂,于是从左右两侧分别估计出分叉点的c值,然后绘制出在一系列给定c值的情况下的迭代波动情况。
●给定右侧的c值为[2,1,0.92,0.89]时,相应的代码如下所示
得到的图形为:
相应的数值:
k
c=2
c=1
c=0.92
c=0.89
0
0
0
0
0
1.0000
2.4000
1.2000
1.1040
1.0680
2.0000
2.2990
0.3613
0.2157
0.1618
3.0000
2.2328
0.1956
0.2917
0.3888
4.0000
2.1896
0.4323
0.1674
0.0455
5.0000
2.1616
0.1566
0.4089
0.8418
6.0000
2.1435
0.5362
0.0707
0.0635
7.0000
2.1317
0.1351
0.7607
0.7576
8.0000
2.1242
0.6043
0.0723
0.0354
9.0000
2.1193
0.1364
0.7537
0.8908
10.0000
2.1161
0.5997
0.0702
0.0823
11.0000
2.1141
0.1361
0.7629
0.6742
12.0000
2.1128
0.6010
0.0730
0.0146
13.0000
2.1119
0.1362
0.7508
0.9941
14.0000
2.1114
0.6006
0.0694
0.1268
15.0000
2.1110
0.1361
0.7667
0.5005
16.0000
2.1108
0.6007
0.0741
0.0067
17.0000
2.1107
0.1361
0.7457
1.0341
18.0000
2.1106
0.6007
0.0680
0.1455
19.0000
2.1105
0.1361
0.7732
0.4384
20.0000
2.1105
0.6007
0.0761
0.0223
21.0000
2.1105
0.1361
0.7369
0.9558
22.0000
2.1104
0.6007
0.0655
0.1096
23.0000
2.1104
0.1361
0.7843
0.5634
24.0000
2.1104
0.6007
0.0796
0.0024
25.0000
2.1104
0.1361
0.7218
1.0556
26.0000
2.1104
0.6007
0.0615
0.1558
27.0000
2.1104
0.1361
0.8027
0.4065
28.0000
2.1104
0.6007
0.0856
0.0359
29.0000
2.1104
0.1361
0.6959
0.8883
30.0000
2.1104
0.6007
0.0552
0.0813
31.0000
2.1104
0.1361
0.8317
0.6784
32.0000
2.1104
0.6007
0.0958
0.0155
33.0000
2.1104
0.1361
0.6540
0.9899
34.0000
2.1104
0.6007
0.0469
0.1249
35.0000
2.1104
0.1361
0.8710
0.5074
36.0000
2.1104
0.6007
0.1105
0.0057
37.0000
2.1104
0.1361
0.5962
1.0389
38.0000
2.1104
0.6007
0.0398
0.1478
39.0000
2.1104
0.1361
0.9054
0.4311
40.0000
2.1104
0.6007
0.1242
0.0250
41.0000
2.1104
0.1361
0.5458
0.9420
42.0000
2.1104
0.6007
0.0387
0.1036
43.0000
2.1104
0.1361
0.9109
0.5866
44.0000
2.1104
0.6007
0.1265
0.0032
45.0000
2.1104
0.1361
0.5378
1.0519
46.0000
2.1104
0.6007
0.0390
0.1540
47.0000
2.1104
0.1361
0.9092
0.4119
48.0000
2.1104
0.6007
0.1258
0.0333
49.0000
2.1104
0.1361
0.5402
0.9010
50.0000
2.1104
0.6007
0.0389
0.0864
51.0000
2.1104
0.1361
0.9098
0.6565
52.0000
2.1104
0.6007
0.1260
0.0113
53.0000
2.1104
0.1361
0.5394
1.0106
54.0000
2.1104
0.6007
0.0389
0.1344
55.0000
2.1104
0.1361
0.9096
0.4744
56.0000
2.1104
0.6007
0.1260
0.0117
57.0000
2.1104
0.1361
0.5396
1.0090
58.0000
2.1104
0.6007
0.0389
0.1337
59.0000
2.1104
0.1361
0.9097
0.4770
60.0000
2.1104
0.6007
0.1260
0.0111
不同的c值分别对应了1,2,4,8个收敛点(最后一个不明显,因为迭代的次数不够多),如上所示。
●给定左侧的c值为[0,0.200,0.450,0.525],相应代码为:
绘出的图形如下所示:
相应的数据为:
K
C=0
C=0.200
C=0.450
C=0.525
0
0
0
0
0
1.0000
0
0.2400
0.5400
0.6300
2.0000
0
-0.6191
-0.5251
-0.4307
3.0000
0
1.3021
1.6041
1.6728
4.0000
0
-0.5431
-0.0671
0.0647
5.0000
0
1.3052
0.8668
0.3139
6.0000
0
-0.5414
-0.4551
-0.3321
7.0000
0
1.3052
1.5912
1.6102
8.0000
0
-0.5414
-0.0749
0.0266
9.0000
0
1.3052
0.9016
0.4964
10.0000
0
-0.5414
-0.4413
-0.4306
11.0000
0
1.3052
1.5868
1.6728
12.0000
0
-0.5414
-0.0776
0.0647
13.0000
0
1.3052
0.9134
0.3140
14.0000
0
-0.5414
-0.4365
-0.3322
15.0000
0
1.3052
1.5850
1.6102
16.0000
0
-0.5414
-0.0786
0.0266
17.0000
0
1.3052
0.9179
0.4962
18.0000
0
-0.5414
-0.4346
-0.4306
19.0000
0
1.3052
1.5843
1.6728
20.0000
0
-0.5414
-0.0790
0.0647
21.0000
0
1.3052
0.9198
0.3140
22.0000
0
-0.5414
-0.4338
-0.3322
23.0000
0
1.3052
1.5840
1.6103
24.0000
0
-0.5414
-0.0792
0.0266
25.0000
0
1.3052
0.9205
0.4960
26.0000
0
-0.5414
-0.4335
-0.4306
27.0000
0
1.3052
1.5839
1.6728
28.0000
0
-0.5414
-0.0793
0.0647
29.0000
0
1.3052
0.9209
0.3140
30.0000
0
-0.5414
-0.4334
-0.3323
31.0000
0
1.3052
1.5839
1.6103
32.0000
0
-0.5414
-0.0793
0.0267
33.0000
0
1.3052
0.9210
0.4960
34.0000
0
-0.5414
-0.4333
-0.4306
35.0000
0
1.3052
1.5838
1.6728
36.0000
0
-0.5414
-0.0793
0.0647
37.0000
0
1.3052
0.9210
0.3141
38.0000
0
-0.5414
-0.4333
-0.3323
39.0000
0
1.3052
1.5838
1.6103
40.0000
0
-0.5414
-0.0793
0.0267
41.0000
0
1.3052
0.9211
0.4959
42.0000
0
-0.5414
-0.4333
-0.4306
43.0000
0
1.3052
1.5838
1.6728
44.0000
0
-0.5414
-0.0793
0.0647
45.0000
0
1.3052
0.9211
0.3141
46.0000
0
-0.5414
-0.4333
-0.3323
47.0000
0
1.3052
1.5838
1.6103
48.0000
0
-0.5414
-0.0793
0.0267
49.0000
0
1.3052
0.9211
0.4959
50.0000
0
-0.5414
-0.4333
-0.4306
51.0000
0
1.3052
1.5838
1.6728
52.0000
0
-0.5414
-0.0793
0.0647
53.0000
0
1.3052
0.9211
0.3141
54.0000
0
-0.5414
-0.4333
-0.3323
55.0000
0
1.3052
1.5838
1.6103
56.0000
0
-0.5414
-0.0793
0.0267
57.0000
0
1.3052
0.9211
0.4959
58.0000
0
-0.5414
-0.4333
-0.4306
59.0000
0
1.3052
1.5838
1.6728
60.0000
0
-0.5414
-0.0793
0.0647
从上表看出,不同的c分别对应了1,2,4,8个收敛点,如上所示。
比较有趣的是c=0正好对应了整个混沌图形中间那一个黑点,该点严重偏移了整个图形,只要c有一个微小的变化,就会引起收敛点的突跃,所以c=0是不稳定的。
●接下来求分叉点,按照标准的方法,应该先接触迭代函数的不动点,然后求导,观察该不动点出的导数的绝对值是否小于1。
但本题中的迭代函数
难以求出解析解,而且导数十分复杂,进一步迭代下去的话,即使是用matlab求解也十分困难,而且可能会有较高的累积误差,故采用细化局部然后直接观察的方式。
1)[1.07,1.09]之间作图,可以估计出右侧12分叉点为1.0827(最后一位估读);
.3-.
2)[0.945,0.955]之间作图,可以估计出右侧2-4分叉点为0.9483;
3)[0.90,0.91]之间作图,可以估计出右侧4-8分叉点为0.9068;
4)[0.89,0.90]之间作图,可以估计出右侧8-16分叉点为0.8967;
5)[0.41,0.42]之间作图,可以估计出左侧2-4分叉点为0.4143;
4)[0.52,0.53]之间作图,可以估计出左侧4-8分叉点为0.5220;
5)[0.53,0.54]之间作图,可以估计出左侧8-16分叉点为0.5320
6)比较有趣的现象是在0.535~0.585之间呈现一片混乱,但是刚刚脱离0.585的状态则显得十分清晰。
则说明从在图形中部其实并不如最初展示的[0,1.5]区间图形那样混乱,在某些部位甚至出现了规则的4分,8分,更说明了混沌的复杂性。
●计算是否符合Feigenbaum规律:
(右侧)
b1
b2
b3
b4
1.0827
0.9483
0.9068
0.8967
①(0.9483-1.0827)/(0.9068-0.9483)=3.2386
②(0.9068-0.9483)/(0.8967-0.9068)=4.1089;
(左侧)
b1
b2
b3
0.4143
0.5220
0.5320
(0.5220-0.4143)/(0.5320-0.5220)=10.77
●分析以上数据,左侧的结果由于只有一组数据,刚开始离4.6692有较大出入,但是右侧的数据可以较好地说明规律,随着迭代的深入,结果值逐渐向理论的4.6692靠近。
当然如果要深入分析,需要更多的数据。
【实验总结】
本次实验前两题较为容易,主要是复习巩固课堂和教材上的知识,加深对线性方程组和非线性方程组求解方法的掌握。
第三个问题有较多的需要讨论的地方,通过该题,对混沌现象有了直观的了解,绘图过程中更是感受到了数学实验的乐趣!