第一个问题是计算(z-A)的逆矩阵,其中z是一组不同的复数,而A是2×2矩阵。 第二个问题是在计算了逆矩阵集的2范数后,将其与某个数字进行比较,如何编写if语句,以便如果2的特征值是2,则z的集可以绘制在图上,特征值为A (zA)的逆矩阵的范数大于该数。
我尝试生成不同的复数,并计算2范数。
A <- matrix(c(1, 0, 0, 1), 2, 2, byrow=TRUE)
ev <- eigen(A)
z <- complex(real = stats::rnorm(100), imaginary = stats::rnorm(100))
for (i in 1:100) {X <- solve(z-A)}
Y<- norm(X, "2")
a <- 0.1
if(Y > a){ }
期望最终图形应该是复杂图形中的圆,其中心为(1,0),即矩阵A的特征值。
答案 0 :(得分:0)
这是您的代码被重写
# use lapply to define X (also, note that in your loop you didn't have the indexing on z)
X <- lapply(1:100, function(k) solve(z[k]-A))
# let's check
X[[1]] %*% (z[1]-A)
# Almost equal to I_2 (small erorrs are normal)
# [,1] [,2]
# [1,] 1.000000e+00+0.000000e+00i -1.665335e-16+2.220446e-16i
# [2,] 1.110223e-16-2.220446e-16i 1.000000e+00-0.000000e+00i
Y <- sapply(1:100, function(k) norm(X[[k]], '2'))
# your a value (strange choice since all the Y's are > a)
a <- 0.1
# you can subset the Y's that are bigger than a like this
ind <- Y > a
Y[ind]
# and here are the corresponding z's
z[ind]
# and for plotting
plot(z[ind])
一些评论:
1;0
。我的线性代数很生锈,我还没有检查自己,但是R
似乎认为值是1;1
solve(z[i]-A)
。而且,Y > 0.1
对于所有TRUE
都是Y[k]
,因此选择a <- 0.1
有点奇怪