Python解線性方程組的迭代法(3)————逐次超鬆弛(SOR)迭代法
程式碼
import numpy as np
def sor(A, b, N, w):
x = np.mat(np.zeros((A.shape[0], 1)))
k = 0
n = A.shape[0]
xj = x.copy()
while k <= N:
for i in range(n):
for j in range(n):
x[i, 0] = (1 - w) * x[i, 0] + w * (b[i, 0] - A[i, 0:i]*x[0:i, 0] - A[i, i+1:n] * xj[i+1:n, 0])/A[i, i]
if sum(abs(A*x - b)) < 10*-8:
break
k = k + 1
xj = x.copy()
if k == N:
print('超過最大迭代次數')
return x
if __name__ == "__main__":
w = float(input('請輸入鬆弛因子:'))
A = np.mat([[10, -1, -2],
[-1, 10, -2],
[-1, -1, 5]])
b = np.mat([[72], [83], [42]])
print('求解結果:')
print(sor(A, b, 1000, w))
求解結果如下:
相關文章
- 牛頓迭代法 - 求解非線性方程根的近似解
- 方程求根的迭代法
- 牛頓單點線割迭代法求解非線性方程
- 線性方程組
- 高等代數:3 線性方程組的解集的結構
- 學習SVM(五)理解線性SVM的鬆弛因子
- 牛頓迭代法求根
- 線性代數中的線性方程組方法
- 程式設計師的數學筆記3--迭代法程式設計師筆記
- 線性方程組 入門概念
- 二叉樹的遍歷 (迭代法)二叉樹
- MATLAB版線性代數-線性方程組1Matlab
- 求平方根 && 牛頓迭代法
- 線性方程組的直接解法——Gauss消去法
- Python實現連結串列反轉的方法【迭代法與遞迴法】Python遞迴
- 數值分析:線性方程組的直接解法(上)
- 一階線性非齊次方程組的通解
- matlab練習程式(線性常微分方程組矩陣解)Matlab矩陣
- 九章算術與線性方程組
- python來擬合Langmuir非線性方程PythonUI
- 增補部落格 第二十二篇 python 牛頓迭代法Python
- 【數值計算方法】線性方程組迭代演算法的Python實現演算法Python
- 快速傅立葉變換的迭代法程式碼實現
- 齊次方程組(超定方程組)的最小二乘解,及利用其擬合空間平面
- 【數值計算方法】線性方程組的迭代解法-數值實驗
- 線性差分方程解法
- matlab求解非線性方程的Regula Falsi方法Matlab
- 一文讀懂連結串列反轉(迭代法和遞迴法)遞迴
- 高等代數理論基礎24:線性方程組有解判別定理
- 如何在鬆弛中建立互動式按鈕
- js 線性最小二乘迴歸線方程JS
- 利用matlab求解方程和方程組Matlab
- Python3 pickle模組的使用詳解Python
- 連續性方程
- 流線方程
- 新的量子演算法有望破解非線性方程 - Quanta Magazine演算法
- matlab求解方程組Matlab
- Python線性優化基礎講解~Python優化