EE263 Homework 2

课程主页:https://see.stanford.edu/Course/EE263

这次回顾EE263作业2。

3.2

(a)令

如果$p,\tilde p$无法识别,那么

即$p-\tilde p \in \mathcal N(A)$。

(b)题目的含义是问,是否存在非负系数$a_1,a_2,a_3​$,使得

显然,这和$A\left[ \begin{array}{lll}{u} & {v} & {w}\end{array}\right]$有关,所以不一定成立。

(c)利用(b)求解即可:

1
2
3
4
5
6
%(c)
A = [L_coefficients; M_coefficients; S_coefficients];
b = A * test_light;
B = A * [ R_phosphor; G_phosphor; B_phosphor;]';
coef = B \b;
coef
1
2
3
4
coef =
0.4226
0.0987
0.5286

(d)Beth正确。令$r_i, \tilde r_i$为两个物体的反射率,$p$为光谱,如果

那么

这说明要使得等式成立,必然有$p\in \mathcal N(A(R-\tilde R))$,所以如果$p\notin \mathcal N(A(R-\tilde R))$,那么该关系并不能成立。

3.3

所以

3.10

(a)因为二次函数大于等于$0$恒成立,所以

等号成立当且仅当

此时存在$\lambda $,使得

(b)

(c)化简$(v+\lambda w)^{T}(v+\lambda w)​$可得

对该式应用(a)(b)得到

(d)由(a)可知,此时存在$\lambda $使得

所以存在$\lambda ​$使得

所以当$v,w$平行时,等号成立。

3.11

(a)$\mathcal R(G)$表示所有可能的$y$。

(b)$\mathcal N(H)$表示使得解码结果为$0$的编码,特别的,如果$v\in \mathcal N(H)$,那么

(c)题目的要求是,找到$H$,使得

  • 存在$G$,使得$HG=I_3$
  • $He_i = 0, i=1,2,3$(一位非$0$的向量输出为$0$)

由第二个条件可得$H$每一列都是$0$,所以$H$所有元素全为$0$,这就与第一个条件矛盾,因此无法构造。

3.16

由定义可得

那么线性方程组为

要使得上述方程对任意$\rho $有唯一解,那么$P$列满秩即可,即

3.17

(a)错误,例如

(b)错误,例如

(c)正确,因为$A,B$为onto,所以存在$A_1,B_1$,使得

那么

(d)错误,例如

(e)正确,因为$\left[ \begin{array}{l}{A} \ {B}\end{array}\right]$为onto,所以该矩阵的行向量线性无关,因此$A$的行向量线性无关,$B$的行向量无关,即$A,B$都是onto

(f)正确,记

如果

那么

因此

由条件可知$A$列向量线性无关,所以

因此列向量线性无关,即列满秩,因此结论成立。

补充题

1

由仿射函数的定义可得,存在$A\in \mathbb R^{2\times 3},b\in \mathbb R^2$,使得

现在的条件为

我们的目标是解出$A,b$,现在将后面三个式子减去第一个式子得到

因此上述方程可以合并为

如果$\tilde P$可逆,那么

求解出$A$之后,带入任意一个式子即可得到$b$:

这部分代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import numpy as np

#数据
P_1 = np.array([10, 10, 10])
P_2 = np.array([100, 10, 10])
P_3 = np.array([10, 100, 10])
P_4 = np.array([10, 10, 100])
T_1 = np.array([27, 29])
T_2 = np.array([45, 37])
T_3 = np.array([41, 49])
T_4 = np.array([35, 55])

#计算
P = np.c_[P_2-P_1, P_3-P_1, P_4-P_1]
T = np.c_[T_2-T_1, T_3-T_1, T_4-T_1]
A = T.dot(np.linalg.inv(P))
b = T_1 - A.dot(P_1)

print("A =", A)
print("b =", b)
1
2
3
A = [[0.2        0.15555556 0.08888889]
[0.08888889 0.22222222 0.28888889]]
b = [22.55555556 23. ]

现在假设

那么

要使得

那么

求解该线性方程组即可,注意该问题中$a_{ij}>0$,所以

这部分代码如下:

1
2
3
4
T0 = 70
tmp = (T0 - b) / np.sum(A, axis=1)
pmin = np.min(tmp)
print("p_min =", pmin)
1
p_min = 78.33333333333333

2

由条件可得

由条件可得

所以只要计算$t=\frac{| a|}{| b|}​$的范围即可。

由条件可得

求解该方程即可,对应代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import numpy as np

eta_ab = 0.1
a1 = 1 - eta_ab ** 2
b1 = 2
c1 = 1
b2 = -2

def solve(a, b, c):
delta = b ** 2 - 4 * a * c
x1 = (-b - np.sqrt(delta)) / (2 * a)
x2 = (-b + np.sqrt(delta)) / (2 * a)

return x1, x2

t1, t2 = solve(a1, b1, c1)
t3, t4 = solve(a1, b2, c1)
print(t1, t2)
print(t3, t4)

tmin = t3
tmax = t4
eta_bamin = eta_ab * tmin
eta_bamax = eta_ab * tmax
print("eta_ba的最小值为{}".format(eta_bamin))
print("eta_ba的最大值为{}".format(eta_bamax))
1
2
3
4
-1.1111111111111112 -0.9090909090909091
0.9090909090909091 1.1111111111111112
eta_ba的最小值为0.09090909090909091
eta_ba的最大值为0.11111111111111112

接着求解$\theta = \angle (a,b)$的范围,依然利用定义:

所以

因为

所以$\cos(\theta)>0$,即

求解得到:

1
2
3
4
5
#求角度
theta_min = 0
theta_max = np.arccos(np.sqrt(1-eta_ab**2))
print("theta的最小值为{}".format(theta_min))
print("theta的最大值为{}".format(theta_max))
1
2
theta的最小值为0
theta的最大值为0.10016742116155969

3

利用matlab如下命令即可:

1
rank([F g])==rank(F)

依次删除某行的数据,记删除后的矩阵为$A_1, y_1$,之后判断$[A_1, y_1]$的秩是否和$A_1$的秩相等即可,如果相等,则出错的位置为删除的行:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
n =  length(ytilde);
flag = 0;
for i = 1:n
index = [1:(i-1) (i+1):n];
A1 = A(index, :);
y1 = ytilde(index);
res = (rank([A1 y1])==rank(A1));
if res == 1
flag = i;
break;
end
end

fprintf("第%d个传感器出错\n", flag);
1
第11个传感器出错

本文标题:EE263 Homework 2

文章作者:Doraemonzzz

发布时间:2019年05月23日 - 11:08:00

最后更新:2019年05月23日 - 11:08:42

原始链接:http://doraemonzzz.com/2019/05/23/EE263 Homework 2/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。