欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Gauss-Seidel迭代算法的Python實現(xiàn)詳解

 更新時間:2019年06月29日 10:18:08   作者:Fengqiao_x  
這篇文章主要介紹了Gauss-Seidel迭代算法的Python實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
import numpy as np
import time

1.1 Gauss-Seidel迭代算法

def GaussSeidel_tensor_V2(A,b,Delta,m,n,M):
start=time.perf_counter()
find=0
X=np.ones(n)
d=np.ones(n)
m1=m-1
m2=2-m
for i in range(M):
print('X',X)
x=np.copy(X)
#迭代更新
for j in range(n):
a=np.copy(A)
for k in range(m-2):
a=np.dot(a,x)
for k in range(n):
d[k]=a[k,k]
a[k,k]=m2*a[k,k] 
x[j]=(b[j]-np.dot(a[j],x))/(m1*d[j])
#判斷是否滿足精度要求
if np.max(np.fabs(X-x))<Delta:
find=1
break 
X=np.copy(x)
end=time.perf_counter()
print('時間:',end-start)
print('迭代',i)
return X,find,i,end-start

1.2張量A的生成函數(shù)和向量b的生成函數(shù):

def Creat_A(m,n):#生成張量A
size=np.full(m, n)
X=np.ones(n)
while 1:
#隨機生成給定形狀的張量A
A=np.random.randint(-49,50,size=size)
#判斷Dx**(m-2)是否非奇異,如果是,則滿足要求,跳出循環(huán)
D=np.copy(A)
for i1 in range(n):
for i2 in range(n):
if i1!=i2:
D[i1,i2]=0
for i in range(m-2):
D=np.dot(D,X)
det=np.linalg.det(D)
if det!=0:
break
#將A的對角面張量擴大十倍,使對角面占優(yōu)
for i1 in range(n):
for i2 in range(n):
if i1==i2:
A[i1,i2]=A[i1,i2]*10
print('A:')
print(A)
return A
#由A和給定的X根據(jù)Ax**(m-1)=b生成向量b
def Creat_b(A,X,m):
a=np.copy(A)
for i in range(m-1):
a=np.dot(a,X)
print('b:')
print(a)
return a

1.3 對稱張量S的生成函數(shù):

def Creat_S(m,n):#生成對稱張量B
size=np.full(m, n)
S=np.zeros(size)
print('S',S)
for i in range(4):
#生成n為向量a
a=np.random.random(n)*np.random.randint(-5,6)
b=np.copy(a)
#對a進行m-1次外積,得到秩1對稱張量b
for j in range(m-1):
b=outer(b,a)
#將不同的b疊加得到低秩對稱張量S
S=S+b
print('S:')
print(S)
return S
def outer(a,b):
c=[]
for i in b:
c.append(i*a)
return np.array(c)
return a

1.4 實驗二

def test_2():
Delta=0.01#精度
m=3#A的階數(shù)
n=3#A的維數(shù)
M=200#最大迭代步數(shù)
X_real=np.array( [2,3,4])
A=Creat_A(m,n) 
b=Creat_b(A,X_real,m)
GaussSeidel_tensor_V2(A,b,Delta,m,n)

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python 實現(xiàn)取矩陣的部分列,保存為一個新的矩陣方法

    Python 實現(xiàn)取矩陣的部分列,保存為一個新的矩陣方法

    今天小編就為大家分享一篇Python 實現(xiàn)取矩陣的部分列,保存為一個新的矩陣方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python中的wordcloud庫安裝問題及解決方法

    Python中的wordcloud庫安裝問題及解決方法

    這篇文章主要介紹了Python中的wordcloud庫安裝問題及解決方法,本文通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • python高效的素數(shù)判斷算法

    python高效的素數(shù)判斷算法

    這篇文章主要介紹了python高效的素數(shù)判斷算法,研究算法的同學一定要看一下
    2021-04-04
  • python如何讀取100G的大文件實例探究

    python如何讀取100G的大文件實例探究

    這篇文章主要為大家介紹了python如何讀取100G的大文件實例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Python字典的核心底層原理講解

    Python字典的核心底層原理講解

    今天小編就為大家分享一篇關(guān)于Python字典的核心底層原理講解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Django中實現(xiàn)一個高性能計數(shù)器(Counter)實例

    Django中實現(xiàn)一個高性能計數(shù)器(Counter)實例

    這篇文章主要介紹了Django中實現(xiàn)一個高性能計數(shù)器(Counter)實例,分解成一步一步去講解,并配有例子,需要的朋友可以參考下
    2014-07-07
  • Python實現(xiàn)的掃碼工具居然這么好用!

    Python實現(xiàn)的掃碼工具居然這么好用!

    二維碼作為一種信息傳遞的工具在當今社會發(fā)揮了重要作用.從手機用戶登錄到手機支付,生活的各個角落都能看到二維碼的存在.那你知道二維碼是怎么解析的嗎?有想過自己實現(xiàn)一個掃碼工具嗎?如果想的話就繼續(xù)看下去吧!需要的朋友可以參考下
    2021-06-06
  • python實現(xiàn)讀取Excel內(nèi)容并展示成json

    python實現(xiàn)讀取Excel內(nèi)容并展示成json

    這篇文章主要為大家詳細介紹了如何使用python實現(xiàn)讀取Excel內(nèi)容并展示成json功能,文中的示例代碼講解詳細,感興趣的小伙伴可以參考一下
    2023-12-12
  • ZABBIX3.2使用python腳本實現(xiàn)監(jiān)控報表的方法

    ZABBIX3.2使用python腳本實現(xiàn)監(jiān)控報表的方法

    今天小編就為大家分享一篇ZABBIX3.2使用python腳本實現(xiàn)監(jiān)控報表的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • PyCharm中的terminal運行從PS修改成cmd方式

    PyCharm中的terminal運行從PS修改成cmd方式

    這篇文章主要介紹了PyCharm中的terminal運行從PS修改成cmd方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-06-06

最新評論