王笑权
非同阶矩阵倒车计算的办法 上篇
本人这几天看《线性代数》,大量的理论知识把我头都看晕了。尤其伤脑筋的是经常遇到形如AB=X的矩阵问题,因为常常想了解A,B,X各个矩阵的实际情况,而当这些矩阵均非同阶时,用任意两个矩阵求第三个矩阵成为不可能,若干本《线性代数》并没有讲道如何解决这个问题,现有SAS程序要解决这个问题也是“小老头看新娘”—别想。本人根据今天揣摩出来的经验,在SAS中试探编程,能较好的解决这个问题。现予曝光。
虽然a、b维数不同,但是计算AB=X是件很轻松的事,不予讨论;本次针对三者均非同维,X(以后简称结果矩) 已知,A(以后简称左矩)、B(以后简称右矩)只知道其中之一的情况下SAS的编程计算。
鉴于矩阵互求最大障碍取决于矩阵固有维数的限制,尤其是返回式(以后简称倒车)计算导致障碍,基于此思想,将不同阶矩阵方程左矩,右矩各添加一行、一列数字在末行、列,而该行、列向量的数字均取1(此后简称添数)。分析矩阵运算的一般规律可知:左矩末行添数使结果矩的末行向量是右矩的行和;右矩末列添数使结果矩的末列向量是左矩的列和;若添数n行、列,结果矩仍然遵循规律并且后n个行、列相等。
在此思想指导下各矩可化成同维,实现根据矩阵一般运算规律的任意运算。
总而言之,别的不多说了,一切都在编程中。
例如1 AB=X 已知 a x 求 b
proc iml;/*其他改变此次不予讨论*/
a0={1 2 2,1 3 -2};/*原始2行3列左矩*/
c0={9 11,3 10};/*原始结果矩阵2行2列,说明右矩阵是2行2列*/
x=a0;
create wxq var{x1 x2 x3};
append from x;
y=c0;
create wxq1 var{y1 y2};
append from y;
data wxq16;merge wxq wxq1;/*调用数据集编程观察实现结果矩阵元素的数值组合*/
do b1=1 to 5; do b2=1 to 3;do b3=1 to 5;/*属于转置状态的右矩变量数值组合*/
a=sum(x1*b1,x2*b2,x3*b3);/*左右矩数值组合的积和*/
if y1=a | y2=a then g=1;else g=. ;/*a等于结果矩阵的元素时,对应的几个循环变量和便是右矩的行和,该和配置在结果矩阵末行*/
output;end;end;end; proc print; run;
data wxq168;set wxq16;if g=. then delete;if dif(a)=0 then delete;if dif2(a)=0 then delete;/*尽量删除符合条件的重复*/
t=sum(of b1-b3);/*右矩阵行和,结果矩阵末行元素*/keep x1-x3 y1-y2 t;proc print data=wxq168;
proc iml;/*根据wxq168结果重新组合矩阵编程反求右矩阵 关键就是求得结果矩阵的末行向量=右矩阵行和*/
use wxq168;
read all into wx;
print wx[rowname=({a1 a11 a2 a22}) colname=({x1 x2 x3 y1 y2 t})];
a1=wx[1,1:3]//wx[3,1:3];
n=ncol(a1);/*列和*/n1=repeat(1,n,1);a=a1//n1`;/*左矩阵末一行添加单位向量 致结果矩阵末行等于右矩阵行和*/
b1=wx[1,4:5]//wx[3,4:5]//(wx[1,6]||wx[3,6])||a[,+];/*根据编程所得数字 结果矩阵末行第一种组合*/
b2=wx[1,4:5]//wx[3,4:5]//(wx[1,6]||wx[4,6])||a[,+];/*根据编程所得数字 结果矩阵末行第二种组合*/
b3=wx[1,4:5]//wx[3,4:5]//(wx[2,6]||wx[3,6])||a[,+];
b4=wx[1,4:5]//wx[3,4:5]//(wx[2,6]||wx[4,6])||a[,+];
x1=inv(a)*b1;/*解1*/
x2=inv(a)*b2;/*当该矩阵的末列均为1时便是所求的右矩阵*/
x22=x2[1:3,1:2];/*返回原始右矩阵*/
x3=inv(a)*b3;/*解3*/
x4=inv(a)*b4;/*解4*/
print a n1 b1 b2 b3 b4 x1 x2 x3 x22 x4 ;
下一篇 为了照顾本人在人大的生意,扩大地盘,现将其发到人大。
例如2 AB=X 已知 b x 求 a
结果
SAS 系统 2008年03月19日 星期三 下午08时48分23秒 1
Obs X1 X2 X3 Y1 Y2 b1 b2 b3 a g
1 1 2 2 9 11 1 1 1 5 .
2 1 2 2 9 11 1 1 2 7 .
3 1 2 2 9 11 1 1 3 9 1
4 1 2 2 9 11 1 1 4 11 1
5 1 2 2 9 11 1 1 5 13 .
6 1 2 2 9 11 1 2 1 7 .
7 1 2 2 9 11 1 2 2 9 1
8 1 2 2 9 11 1 2 3 11 1
9 1 2 2 9 11 1 2 4 13 .
10 1 2 2 9 11 1 2 5 15 .
11 1 2 2 9 11 1 3 1 9 1
12 1 2 2 9 11 1 3 2 11 1
13 1 2 2 9 11 1 3 3 13 .
14 1 2 2 9 11 1 3 4 15 .
15 1 2 2 9 11 1 3 5 17 .
16 1 2 2 9 11 2 1 1 6 .
17 1 2 2 9 11 2 1 2 8 .
18 1 2 2 9 11 2 1 3 10 .
19 1 2 2 9 11 2 1 4 12 .
20 1 2 2 9 11 2 1 5 14 .
21 1 2 2 9 11 2 2 1 8 .
22 1 2 2 9 11 2 2 2 10 .
23 1 2 2 9 11 2 2 3 12 .
24 1 2 2 9 11 2 2 4 14 .
25 1 2 2 9 11 2 2 5 16 .
26 1 2 2 9 11 2 3 1 10 .
27 1 2 2 9 11 2 3 2 12 .
28 1 2 2 9 11 2 3 3 14 .
29 1 2 2 9 11 2 3 4 16 .
30 1 2 2 9 11 2 3 5 18 .
31 1 2 2 9 11 3 1 1 7 .
32 1 2 2 9 11 3 1 2 9 1
33 1 2 2 9 11 3 1 3 11 1
34 1 2 2 9 11 3 1 4 13 .
35 1 2 2 9 11 3 1 5 15 .
36 1 2 2 9 11 3 2 1 9 1
37 1 2 2 9 11 3 2 2 11 1
38 1 2 2 9 11 3 2 3 13 .
39 1 2 2 9 11 3 2 4 15 .
40 1 2 2 9 11 3 2 5 17 .
41 1 2 2 9 11 3 3 1 11 1
42 1 2 2 9 11 3 3 2 13 .
43 1 2 2 9 11 3 3 3 15 .
44 1 2 2 9 11 3 3 4 17 .
45 1 2 2 9 11 3 3 5 19 .
46 1 2 2 9 11 4 1 1 8 .
47 1 2 2 9 11 4 1 2 10 .
48 1 2 2 9 11 4 1 3 12 .
49 1 2 2 9 11 4 1 4 14 .
50 1 2 2 9 11 4 1 5 16 .
51 1 2 2 9 11 4 2 1 10 .
52 1 2 2 9 11 4 2 2 12 .
53 1 2 2 9 11 4 2 3 14 .
54 1 2 2 9 11 4 2 4 16 .
55 1 2 2 9 11 4 2 5 18 .
56 1 2 2 9 11 4 3 1 12 .
57 1 2 2 9 11 4 3 2 14 .
58 1 2 2 9 11 4 3 3 16 .
59 1 2 2 9 11 4 3 4 18 .
60 1 2 2 9 11 4 3 5 20 .
61 1 2 2 9 11 5 1 1 9 1
62 1 2 2 9 11 5 1 2 11 1
63 1 2 2 9 11 5 1 3 13 .
64 1 2 2 9 11 5 1 4 15 .
65 1 2 2 9 11 5 1 5 17 .
66 1 2 2 9 11 5 2 1 11 1
SAS 系统 2008年03月19日 星期三 下午08时48分23秒 2
Obs X1 X2 X3 Y1 Y2 b1 b2 b3 a g
67 1 2 2 9 11 5 2 2 13 .
68 1 2 2 9 11 5 2 3 15 .
69 1 2 2 9 11 5 2 4 17 .
70 1 2 2 9 11 5 2 5 19 .
71 1 2 2 9 11 5 3 1 13 .
72 1 2 2 9 11 5 3 2 15 .
73 1 2 2 9 11 5 3 3 17 .
74 1 2 2 9 11 5 3 4 19 .
75 1 2 2 9 11 5 3 5 21 .
76 1 3 -2 3 10 1 1 1 2 .
77 1 3 -2 3 10 1 1 2 0 .
78 1 3 -2 3 10 1 1 3 -2 .
79 1 3 -2 3 10 1 1 4 -4 .
80 1 3 -2 3 10 1 1 5 -6 .
81 1 3 -2 3 10 1 2 1 5 .
82 1 3 -2 3 10 1 2 2 3 1
83 1 3 -2 3 10 1 2 3 1 .
84 1 3 -2 3 10 1 2 4 -1 .
85 1 3 -2 3 10 1 2 5 -3 .
86 1 3 -2 3 10 1 3 1 8 .
87 1 3 -2 3 10 1 3 2 6 .
88 1 3 -2 3 10 1 3 3 4 .
89 1 3 -2 3 10 1 3 4 2 .
90 1 3 -2 3 10 1 3 5 0 .
91 1 3 -2 3 10 2 1 1 3 1
92 1 3 -2 3 10 2 1 2 1 .
93 1 3 -2 3 10 2 1 3 -1 .
94 1 3 -2 3 10 2 1 4 -3 .
95 1 3 -2 3 10 2 1 5 -5 .
96 1 3 -2 3 10 2 2 1 6 .
97 1 3 -2 3 10 2 2 2 4 .
98 1 3 -2 3 10 2 2 3 2 .
99 1 3 -2 3 10 2 2 4 0 .
100 1 3 -2 3 10 2 2 5 -2 .
101 1 3 -2 3 10 2 3 1 9 .
102 1 3 -2 3 10 2 3 2 7 .
103 1 3 -2 3 10 2 3 3 5 .
104 1 3 -2 3 10 2 3 4 3 1
105 1 3 -2 3 10 2 3 5 1 .
106 1 3 -2 3 10 3 1 1 4 .
107 1 3 -2 3 10 3 1 2 2 .
108 1 3 -2 3 10 3 1 3 0 .
109 1 3 -2 3 10 3 1 4 -2 .
110 1 3 -2 3 10 3 1 5 -4 .
111 1 3 -2 3 10 3 2 1 7 .
112 1 3 -2 3 10 3 2 2 5 .
113 1 3 -2 3 10 3 2 3 3 1
114 1 3 -2 3 10 3 2 4 1 .
115 1 3 -2 3 10 3 2 5 -1 .
116 1 3 -2 3 10 3 3 1 10 1
117 1 3 -2 3 10 3 3 2 8 .
118 1 3 -2 3 10 3 3 3 6 .
119 1 3 -2 3 10 3 3 4 4 .
120 1 3 -2 3 10 3 3 5 2 .
121 1 3 -2 3 10 4 1 1 5 .
122 1 3 -2 3 10 4 1 2 3 1
123 1 3 -2 3 10 4 1 3 1 .
124 1 3 -2 3 10 4 1 4 -1 .
125 1 3 -2 3 10 4 1 5 -3 .
126 1 3 -2 3 10 4 2 1 8 .
127 1 3 -2 3 10 4 2 2 6 .
128 1 3 -2 3 10 4 2 3 4 .
129 1 3 -2 3 10 4 2 4 2 .
130 1 3 -2 3 10 4 2 5 0 .
131 1 3 -2 3 10 4 3 1 11 .
132 1 3 -2 3 10 4 3 2 9 .
SAS 系统 2008年03月19日 星期三 下午08时48分23秒 3
Obs X1 X2 X3 Y1 Y2 b1 b2 b3 a g
133 1 3 -2 3 10 4 3 3 7 .
134 1 3 -2 3 10 4 3 4 5 .
135 1 3 -2 3 10 4 3 5 3 1
136 1 3 -2 3 10 5 1 1 6 .
137 1 3 -2 3 10 5 1 2 4 .
138 1 3 -2 3 10 5 1 3 2 .
139 1 3 -2 3 10 5 1 4 0 .
140 1 3 -2 3 10 5 1 5 -2 .
141 1 3 -2 3 10 5 2 1 9 .
142 1 3 -2 3 10 5 2 2 7 .
143 1 3 -2 3 10 5 2 3 5 .
144 1 3 -2 3 10 5 2 4 3 1
145 1 3 -2 3 10 5 2 5 1 .
146 1 3 -2 3 10 5 3 1 12 .
147 1 3 -2 3 10 5 3 2 10 1
148 1 3 -2 3 10 5 3 3 8 .
149 1 3 -2 3 10 5 3 4 6 .
150 1 3 -2 3 10 5 3 5 4 .
SAS 系统 2008年03月19日 星期三 下午08时48分23秒 4
Obs X1 X2 X3 Y1 Y2 t
1 1 2 2 9 11 5
2 1 2 2 9 11 6
3 1 3 -2 3 10 5
4 1 3 -2 3 10 7
SAS 系统 2008年03月19日 星期三 下午08时48分23秒 5
WX
X1 X2 X3 Y1 Y2 T
A1 1 2 2 9 11 5
A11 1 2 2 9 11 6
A2 1 3 -2 3 10 5
A22 1 3 -2 3 10 7
A N1 B1 B2 B3
1 2 2 1 9 11 5 9 11 5 9 11 5
1 3 -2 1 3 10 2 3 10 2 3 10 2
1 1 1 1 5 5 3 5 7 3 6 5 3
B4 X1 X2 X3
9 11 5 1 -1 1 1 3 1 3 -1 1
3 10 2 2 4.6 1 2 3 1 1.2 4.6 1
6 7 3 2 1.4 1 2 1 1 1.8 1.4 1
X22 X4
1 3 3 3 1
2 3 1.2 3 1
2 1 1.8 1 1