问题5.2
Matlab求解微分方程组的数值解
方法
利用软件计算离散的数值解
结果
代码
function dy=rigid(t,y)%rigid:方程组
dy=zeros(3,1);
dy(1)=y(2)*y(3);
dy(2)=-y(1)*y(3);
dy(3)=-0.51*y(1)*y(2);
end
%命令行
>> [T,Y]=ode45('rigid',[0 12],[0 1 1]);%句柄,区间,初始值
>> plot(T,Y(:,1),'-',T,Y(:,2),'*',T,Y(:,3),'+')
一、问题5.3
层次分析法,5个因素得到的两两比较矩阵为A,判断矩阵为A是否接近一致矩阵。
二、方法
计算最大特征根λ=5.073
特征向量为w =(0.263,0.475,0.055,0.090,0.110)T
一致性指标CI=0.018
随机一致性指标 RI=1.12 (查表)
一致性比率CR=0.018/1.12=0.016<0.1
通过一致性检验
权向量(特征向量)w =(0.263,0.475,0.055,0.090,0.110)T
三、结果
"lamda_max=" "5.0721"
"CI=" "0.018021"
"CR=" "0.01609"
通过一致性检验
权重为:
0.2636
0.4758
0.0538
0.0981
0.1087
四、代码
A = [1 1/2 4 3 3;2 1 7 5 5;1/4 1/7 1 1/2 1/3;1/3 1/5 2 1 1;1/3 1/5 3 1 1];
lamda_max = max(eig(A));%最大特征根
disp(["lamda_max=",num2str(lamda_max)]);
[~,n] = size(A);%get rows and cols,~表示不获取这一位置的参数
CI = (lamda_max - n)/(n-1);
disp(["CI=",num2str(CI)])
%平均一致性指标表
RI = [0 0 0.52 0.89 1.12 1.26 1.26 1.36 1.41 1.49 1.52 1.54 1.56 1.58 1.59];
CR = CI/RI(n);
disp(["CR=",num2str(CR)]);
if CR<0.1
disp("通过一致性检验")
else
disp("不通过一致性检验")
end
%特征法求权重
if CR<0.1
[v,d] = eig(A);%v特征向量,d特征值构成的对角矩阵
[max_r,max_c] = find(d == lamda_max);%寻找最大特征值所在位置
e = v(:,max_c)/sum(v(:,max_c));
disp("权重为:");
disp(e);
end
一、问题5.4
卫星图像的初始数据包含 400 万个 3 维向量中,其协方差矩阵是G,求数据的主成分,且给出由第一主成分确定的新变量.
二、方法
主成分分析
三、结果
四、代码
G = [2383.78 2611.84 2136.20;2611.84 3106.47 2553.90;2136.20 2553.90 2650.71];
[Q,D] = eig(G);%得到特征向量、特征根矩阵
d = diag(D);%得到特征根
eig1 = sort(d,'descend');%贡献值由大到小排
Q = fliplr(Q);%对应向量也按特征值由大到小排列
disp(d);%显示特征值
disp(Q)%显示特征向量
S=0;
i=0;
%筛选主成分
while S/sum(eig1)<0.85
i=i+1;
S=S+eig1(i);
end
NEW = Q(:,1:i);%主成分的线性表示
disp(NEW);