写在前面
本博客用于记录(或者说是用来备份)我在2021a 高等数学实验课 梁志勇老师的课上写的程序习题
所有的代码均通过编译,matlab版本为R2016a
课程链接:高等数学实验
由于题量的关系和对于篇幅的考虑,故一章到两章会做一篇博文,更多后续章节的答案可以点击我的头像查看或者点击下面的链接查看:
第一、第二章
第五、第六章
第七章
网上参考答案
3.2.3 矩阵代数
-
设a=(1,2,3),b=(2,4,3), 分别计算a./b, a.\b, a/b, a\b, 分析结果的意义。
-
求下列矩阵的行列式、逆、特征值和特征向量
(4) n阶三对角方阵
阶数n 分别为5, 50.
注意: 由于输出结果太多, 答题框里放不下. 请大家只写出n 分别为5, 50对应的程序, 输出结果只写n=5的.
生成(对角线上元素相同的)三对角矩阵
clear all;clc;
n = 5;%当n=50时,替换此即可
A = diag(linspace(6,6,n-1),1)+...
diag(linspace(5,5,n))+...
diag(linspace(1,1,n-1),-1)%构造n阶三对角方阵
inv(A)%逆矩阵
[v,d] = eig(A)
- 判断上题第(1)小题是否为正定矩阵。
判断矩阵是正定、半正定还是负定
从参考的代码中获取我们需要的判定部分~,如下
A = [4 1 -1;3 2 -6;1 -5 3];
if issymmetric(A) % 检查矩阵是否对称
d = eig(A) % 计算矩阵特征值
if all(d > 0)
disp('矩阵正定');
end
else
disp('矩阵不正定');
end
3.3 线性方程组的通解
-
用矩阵除法解下列线性方程组,并判断解的意义. 用矩阵乘法验算,只要求做第(1)、(4)小题。
(1)
注意,该题中如果用较为准确的判断,如A*x-b
或A*x==b
将会发现在1e^-15处二者不相等,而由于’=='的判断精度是16位,因此也会报错。这个问题应该来源于精度损失,即x的有效数字为16位以上,导致matlab没有完整的地记录下该数据,导致之后的逆运算中出现误差。
(4)
-
求上题第(4)小题的通解
【法一】用rref化为行最简形以后求解
进一步计算:
【法二】使用除法得到一特解,再用null得到空间的一个正交规范基
易知结果为kx+x0,与法一自洽 -
求下列向量组的秩和它的一个最大线性无关组,并将其余向量用该最大无关组线性表示。
a1= (4, -3, 1,3), a2= (2, -1, 3, 5), a3= (1, -1, -1, -1), a4= (3, -2, 3, 4), a5= (7, -6, -7, 0)
将其余向量用该最大无关组线性表示:
3.4 投入产出分析和基因遗传
- (人口流动趋势)对城乡人口流动作年度调查,发现有一个稳定的朝向城镇流动的趋势,每年农村居民的5%移居城镇而城镇居民的1%迁出,现在总人口的20%位于城镇。假如城乡总人口保持不变,并且人口流动的这种趋势继续下去,那么
(1)一年以后住在城镇人口所占比例是多少?两年以后呢?十年以后呢?
(2)很多年以后呢?
(3)如果现在总人口70%位于城镇,很多年以后城镇人口所占比例是多少?
(4)计算转移矩阵的最大特征值及对应的特征向量,与问题(2)(3)有何关系?
(1)
clear all;clc;
x0 = [0.2;0.8];%城市和农村的人口占比
a = [0.99 0.05;0.01 0.95];
x = x0;
for i = 1:1:10
x = a*x;
if (i== 1)|(i==2)|(i==10)
i
x
end
end
高级版两个池子互相灌水的程序设计题hhh
编写的思路是找一个流动矩阵,能够迭代地进行满足题目要求的人口流动(因为矩阵的乘法规则,所以一定得这么乘)
检验代码结果的正确性的方法为:
因为人口没有流失,所以要将x中的元素相加,恒为1
即0.2+0.8=1;
一年后0.238+0.762=1;
两年后0.2737+0.7263=1;
十年后0.4922+0.5078=1
运行结果:
即一年以后城市人口占23.8%;两年后占27.37%;十年后占49.22%
(2)观察x(1)的趋势,易知其单调递增,故用增幅来考察多年后的人口占比极限
clear all;clc;
x0 = [0.2;0.8];%城市和农村的人口占比
a = [0.99 0.05;0.01 0.95];
i = 1;
x1 = a*x0;%一年后城市与农村的人口占比
while abs(x1(1)-x0(1)) > 1e-6,
i = i+1;
x0 =