答案 0 :(得分:1)
这是一个数学问题,而不是编程。一些计算将有助于编程任务更容易。
首先,假设c_1
和c_2
等于零以简化。我们可以通过移动轴轻松恢复原始比例。
然后,矩阵计算可以写成如下。
现在让我z = ax + by
和w = cx + dy
。然后,具有绝对值度量的第一个等式将写为:
从这个等式中,假设伽玛是正数,您可以将z
和w
可视化如下。
因此,您可以找到满足要求的一组(z, w
)组合并转换回(x, y)
。
具有最大度量的第二个等式可以写成如下:
这意味着可以将(z, w)
可视化如下。
同样,您可以生成此类(z, w)
对并转换回(x, y)
。
这是第一个等式的R代码。您可以自己尝试第二种方法。
library(ggplot2)
# A is (a,b; c,d) matrix
A <- matrix(c(1, 2, -1, 0),
nrow=2, ncol=2, byrow=TRUE)
gamma <- 1
c1 <- 0.2
c2 <- 0.1
###############################
z <- seq(-gamma, gamma, length=100)
w <- abs(gamma - abs(z))
z <- c(z, z)
w <- c(w, -w)
qplot(z, w) + coord_fixed()
# computing back (x,y) from (z,w)
z_mat <- rbind(z, w)
x_mat <- solve(A, z_mat)
x <- x_mat[1,] + c1
y <- x_mat[2,] + c2
qplot(x, y) + coord_fixed()
################################