我需要在PHP中解决一个一次方程组。方程的数量大于变量的数量,但是方程的数量不少于变量的数量。
方程组如下所示。n个方程,m个变量,变量为x[i],其中“i”的值从1到m。该方程组可能有解也可能没有。 m最大可以达到100,n最大可以达到5000(千)。
我将需要解决几千个这样的方程组。速度可能是一个问题,但我现在正在寻找用PHP编写的算法。
a[1][1] * x[1] + a[1][2] * x[2] + ... + a[1][m] * x[m] = number 1
a[2][1] * x[1] + a[2][2] * x[2] + ... + a[2][m] * x[m] = number 2
...
a[n][1] * x[1] + a[n][2] * x[2] + ... + a[n][m] * x[m] = number n
我可以使用Cramer法则来解决这个问题。我可以制作一个系数的1个方阵,用Cramer法则(通过计算矩阵的行列式)解决系统,然后我应该检查未使用的方程中的值。 我相信我可以自己尝试Cramer,但我正在寻找更好的解决方案。
这是一个计算科学问题, http://en.wikipedia.org/wiki/Computational_science#Numerical_simulations 我知道有一些复杂的算法可以解决我的问题,但我不能确定哪个算法适用于我的情况,并且哪个算法是最好的。一个算法比仅有理论和演示更有用。
我的问题是,是否有人知道在PHP中编写的类、脚本、代码或其他形式的API或Web服务,用于解决1级线性方程组? 或者我可以尝试一个API或Web服务,最好是免费的,有偿的也可以。
谢谢。