请问如何精确解方程Ax=b

m
microsat
楼主 (北美华人网)
有一个方程Ax=b A是3 x 7维。 x是7x1维。 b是3x1. x是0或者1.
请问不用挨个挨个试的方法,如何能精确得出x。
挨个试的方法是把0和1 扔进 7x1的的向量。这样总共有 2^7的组合。 这个方法禁止使用。因为实际情况,以上的维度A是300 x 700维。 x是700x1维。 b是300x1.


g
gokgs
brute force, 矩阵乘法 得 300 个变量的 一次方程, 简答消元 或替代法应该都能解。
s
stones
不能精确求解吧,A没有 left inverse, 有无限多组解。
r
rituximab
我以为大学一年级大家都上过线性代数课?
m
microsat
不能精确求解吧,A没有 left inverse, 有无限多组解。
stones 发表于 2023-07-20 11:13

好像有无限多组解。有什么方法能把所有可能的解都列出来呢?
x = inv(A) * b
我还发现上面这个解和原值存在差异。
如果能列出所有可能的解,那么可以再一一去验证,用排除法去除掉有误差的解。最终得出正确的解。
核心问题:怎么能弄出所有可能的解?

m
momosun
有一个方程Ax=b A是3 x 7维。 x是7x1维。 b是3x1. x是0或者1.
请问不用挨个挨个试的方法,如何能精确得出x。
挨个试的方法是把0和1 扔进 7x1的的向量。这样总共有 2^7的组合。 这个方法禁止使用。因为实际情况,以上的维度A是300 x 700维。 x是700x1维。 b是300x1.



microsat 发表于 2023-07-20 10:54

你有七个变量只有三个方程,肯定是无穷多解呀。
m
microsat
你有七个变量只有三个方程,肯定是无穷多解呀。
momosun 发表于 2023-07-20 11:22

怎么能用计算(或者编程)的方法,把这无穷多解,都弄出来呢?
g
genia
这是个非线性优化问题, 是否等价于给出N个数, x1, x2, ..., xN, 以及b, 从xi中任意找出m个数(1<=m<=N), 使得这m个xi之和与b的差最小? 这是NP-Complete问题吧?
不好意思瞎猜的, 多年前的算法分析课, LOL
w
worldconcepts
怎么能用计算(或者编程)的方法,把这无穷多解,都弄出来呢?
microsat 发表于 2023-07-20 11:23

这个肯定不能穷举啦,用solver吧。你另外一个问题也是一样。可以试试pulp https://www.analyticsvidhya.com/blog/2022/03/linear-programming-discrete-optimization-with-pulp/
m
momosun
怎么能用计算(或者编程)的方法,把这无穷多解,都弄出来呢?
microsat 发表于 2023-07-20 11:23

都告诉你是无穷多解了,怎么可能都弄出来?想弄出一组解很容易呀。你把其中四个未知数设成0,自然就剩三个未知数三个方程,不就有解了?
C
Cath226
我以为大学一年级大家都上过线性代数课?
rituximab 发表于 2023-07-20 11:15

他这个x只有0,1而且似乎是欠定方程,不是线性代数里学的那种。
C
Cath226
这是个非线性优化问题, 是否等价于给出N个数, x1, x2, ..., xN, 以及b, 从xi中任意找出m个数(1<=m<=N), 使得这m个xi之和与b的差最小? 这是NP-Complete问题吧?
不好意思瞎猜的, 多年前的算法分析课, LOL
genia 发表于 2023-07-20 11:36

no,是线性的,只不过是整数规划。 整数规划一般NP hard