我們知道,求解方程組的一般方法是高斯消元,時(shí)間復(fù)雜度為 O(n^3)。
如果求得解是實(shí)數(shù)的話,我們可以通過(guò)犧牲精度的方法來(lái)迭代求解。具體見(jiàn)2009年姜碧野的論文。
原理是這樣的:
a11 * x1 + a12 * x2 + ... + a1n * xn = b1 可以變化成
x1 = 1/a11 * (b1 - a12 * x2 - a13 * x3 - .. a1n * xn);
如果x1 ... xn已經(jīng)估計(jì)了一個(gè)值,那么通過(guò)上式進(jìn)行進(jìn)一步迭代就會(huì)得到更精確的解。
如果有解的話,最后一定是收斂的。
但是如果無(wú)解,或者有多個(gè)解,結(jié)果怎么樣我就不知道了。。。。
這種方法叫做 jacobi 迭代法,復(fù)雜度O(k * n^2)。
缺點(diǎn)是后期收斂速度很慢。
有一種改進(jìn)方法,叫做代數(shù)多重網(wǎng)格法(Algebraic Multi-Grid)。迭代過(guò)程中可以逐漸縮小大型矩陣的規(guī)模,使網(wǎng)格由細(xì)變粗。
具體細(xì)節(jié)有待鉆研。