R 数学上有可能解决这个问题吗? x
不,不可能。你有三个未知数。这意味着您需要三个独立的信息(方程)来解决所有三个问题<代码>y只提供一条信息。知道R 数学上有可能解决这个问题吗? x,r,R,不,不可能。你有三个未知数。这意味着您需要三个独立的信息(方程)来解决所有三个问题y只提供一条信息。知道x是正的会带来约束,但不一定允许您求解。例如: x1+x2+x3=6 不允许你解决。x1=1,x2=2,x3=3是一个解决方案,但x1=1,x2=1,x3=4也是一个解决方案。还有许多其他的解决办法。[施加“全正”约束将排除x1=100、x2=200、x3=-294等解决方案,但通常会留下多个剩余解决方案。] x1+x2+x3=6, x1+x2-x3=0 将x3限制为3,但允许x1和x2的任意
x
是正的会带来约束,但不一定允许您求解。例如:
x1+x2+x3=6
不允许你解决。x1=1,x2=2,x3=3是一个解决方案,但x1=1,x2=1,x3=4也是一个解决方案。还有许多其他的解决办法。[施加“全正”约束将排除x1=100、x2=200、x3=-294等解决方案,但通常会留下多个剩余解决方案。]
x1+x2+x3=6,
x1+x2-x3=0
将x3限制为3,但允许x1和x2的任意解,前提是x1+x2=3
x1+x2+x3=6,
x1+x2-x3=0,
x1-x2+x3=2
给出了唯一的解决方案x1=1,x2=2,x3=3。不,这是不可能的。你有三个未知数。这意味着您需要三个独立的信息(方程)来解决所有三个问题<代码>y只提供一条信息。知道
x
是正的会带来约束,但不一定允许您求解。例如:
x1+x2+x3=6
不允许你解决。x1=1,x2=2,x3=3是一个解决方案,但x1=1,x2=1,x3=4也是一个解决方案。还有许多其他的解决办法。[施加“全正”约束将排除x1=100、x2=200、x3=-294等解决方案,但通常会留下多个剩余解决方案。]
x1+x2+x3=6,
x1+x2-x3=0
将x3限制为3,但允许x1和x2的任意解,前提是x1+x2=3
x1+x2+x3=6,
x1+x2-x3=0,
x1-x2+x3=2
给出唯一的解决方案x1=1,x2=2,x3=3。将f定义为
x <- abs(rnorm(8))
C <- (x[1]*x[2]*x[3])^(1/3)
y <- log(x/C)
在这种情况下,f(x)等于:
反演公式
根据这个公式,给定y并求解x,x的值等于
A %*% log(x)
如果A是可逆的,但不幸的是它不是。例如,rowSums(A)
等于零,这表明A的列是线性相关的,这意味着不可逆性
exp(solve(A) %*% y) ## would equal x if A were invertible
秩与零空间
请注意,A是一个投影矩阵。这是因为它是幂等的,即A%*%A
等于A
all.equal(rowSums(A), rep(0, 8))
## [1] TRUE
其特征值均为0和1这一事实也证明了这一点:
all.equal(A %*% A, A)
## [1] TRUE
从特征值我们可以看到A的秩为7(非零特征值的数目),零空间的维数为1(零特征值的数目)
另一种方法是知道A是一个投影矩阵,它的秩等于它的迹,也就是7,所以它的空空间的维数必须是8-7=1
zapsmall(eigen(A)$values)
## [1] 1 1 1 1 1 1 1 0
采用标量倍数跨越一维空间,因此从nullspace的维度为1这一事实来看,它必须是映射到同一y的全部值
关键公式
现在用广义逆代替上面###中的解,我们有一个关键公式来近似x,假设x的y=f(x):
sum(diag(A)) # rank of A
## [1] 7
或者,如果y=f(x),则等效
虽然它们不能给出x,但它们可以确定x的一个标量倍数。也就是说,如果x'是由上述表达式产生的值,那么对于某些标量常数k,x等于k*x'
例如,使用问题中的x和y:
exp(y - mean(y))
笔记
注意,y-平均值(y)可以写成
exp(ginv(A) %*% y)
## [,1]
## [1,] 1.2321318
## [2,] 0.5060149
## [3,] 3.4266146
## [4,] 0.1550034
## [5,] 0.2842220
## [6,] 3.7703442
## [7,] 1.0132635
## [8,] 2.7810703
exp(y - mean(y)) # same
## [1] 1.2321318 0.5060149 3.4266146 0.1550034 0.2842220 3.7703442 1.0132635
## [8] 2.7810703
exp(y - mean(y))/x
## [1] 2.198368 2.198368 2.198368 2.198368 2.198368 2.198368 2.198368 2.198368
矩阵ginv(A)等于B不是真的,只是它们在A的范围内作用相同,这是我们所需要的。将f定义为
x <- abs(rnorm(8))
C <- (x[1]*x[2]*x[3])^(1/3)
y <- log(x/C)
在这种情况下,f(x)等于:
反演公式
根据这个公式,给定y并求解x,x的值等于
A %*% log(x)
如果A是可逆的,但不幸的是它不是。例如,rowSums(A)
等于零,这表明A的列是线性相关的,这意味着不可逆性
exp(solve(A) %*% y) ## would equal x if A were invertible
秩与零空间
请注意,A是一个投影矩阵。这是因为它是幂等的,即A%*%A
等于A
all.equal(rowSums(A), rep(0, 8))
## [1] TRUE
其特征值均为0和1这一事实也证明了这一点:
all.equal(A %*% A, A)
## [1] TRUE
从特征值我们可以看到A的秩为7(非零特征值的数目),零空间的维数为1(零特征值的数目)
另一种方法是知道A是一个投影矩阵,它的秩等于它的迹,也就是7,所以它的空空间的维数必须是8-7=1
zapsmall(eigen(A)$values)
## [1] 1 1 1 1 1 1 1 0
采用标量倍数跨越一维空间,因此从nullspace的维度为1这一事实来看,它必须是映射到同一y的全部值
关键公式
现在用广义逆代替上面###中的解,我们有一个关键公式来近似x,假设x的y=f(x):
sum(diag(A)) # rank of A
## [1] 7
或者,如果y=f(x),则等效
虽然它们不能给出x,但它们可以确定x的一个标量倍数。也就是说,如果x'是由上述表达式产生的值,那么对于某些标量常数k,x等于k*x'
例如,使用问题中的x和y:
exp(y - mean(y))
笔记
注意,y-平均值(y)可以写成
exp(ginv(A) %*% y)
## [,1]
## [1,] 1.2321318
## [2,] 0.5060149
## [3,] 3.4266146
## [4,] 0.1550034
## [5,] 0.2842220
## [6,] 3.7703442
## [7,] 1.0132635
## [8,] 2.7810703
exp(y - mean(y)) # same
## [1] 1.2321318 0.5060149 3.4266146 0.1550034 0.2842220 3.7703442 1.0132635
## [8] 2.7810703
exp(y - mean(y))/x
## [1] 2.198368 2.198368 2.198368 2.198368 2.198368 2.198368 2.198368 2.198368
矩阵ginv(A)不是真的等于B。它们在A的范围内的作用是相同的,这是我们所需要的。我认为这在数学上是不可能的,因为如果给定
y
x
值是C
的倍数,当你试图计算C
时,总是会返回1
。因此,我认为您无法计算x[1:3]
欢迎使用堆栈溢出。这是一个关于编程和代码问题的网站。问你的问题会更好吗?提示:你可以使用对数属性编写一个线性方程组,其形式为y[1]、y[2]、y[3]
和log(x[1])、log(