# 數值分析 numerical analysis lecture 04 **** 1. Numpy array 1 ``` ex: import random array2=[] numberofrows=eval(input("enter the rows:")) numberofcolumns=eval(input("enter the columns:")) for row in range(numberofrows): array2.append([]) for column in range(numberofcolumns): array2[row].append(random.randint(1,10)) print(array2) total=0 for row in array2: for value in row: total+=value print("the total is :",total) ``` 上述程式碼的結果會根據使用者所輸入的行、列數量帶帶入隨機數字,後續我也加進了計算行列總和的程式,在運算array時我們可以發現如果先宣告row或是column其中一項後,在宣告下一項時會要加入前者的參數,像是array2[row].append(random.randint(1,10))這行,我們其實就能看成先前先建立好了row,並在其基礎上在接續建立column 2. Numpy array 2 ``` ex: def getdata(): array2=[] numberofrows=int(input("enter the rows:")) numberofcolumns=int(input("enter the columns:")) for row in range(numberofrows): array2.append([]) #在初始串列中新增 列(row) 到其中 for columns in range(numberofcolumns): data=int(input("enter the number:")) array2[row].append(data) #在"列"中新增"行"的值 return array2 def total(array2): tot=0 for row in array2: tot += sum(row) return tot def main(): array2data=getdata() print(array2data) print("the sum is:",total(array2data)) main() ``` 第二個程式碼和第一個相比起來就比較是根據使用者所輸入的值來建立矩陣,包含當中的數值,而同樣的從row的基礎上再建立column的概念我們可以再次看到 3. Numpy array 常見的函式庫 ``` ex: np.zeros(8,dtype=int) np.ones((3,4),dtype=float) np.full((2,3),4) ``` 第一個是建立0矩陣 第二個則是建立一個3*4矩陣,當中數字全部都是1 第三個是建立23矩陣,當中數字全部都是4 4. Numpy 高斯消去法 會想介紹高斯消去是因為在之前作業有接觸到 以下會有題目的圖片:![](https://i.imgur.com/q0hCBIZ.png) ``` ex: from numpy import array,zeros,fabs,linalg a = array([[1,1,0,0,0,0,0,0,0,0],[0,0,1,1,0,0,0,0,0,0], [0,0,0,0,1,0.6,0,0,0,0],[0,0,-1,0,0,-0.8,0,0,0,0], [0,0,0,0,0,0,-1,-0.8,0,0],[0,0,0,0,-1,0,0,0.6,0,0], [-1,0,0,0,0,-0.6,0,0,1,0],[0,0,0,0,0,0.8,1,0,0,0], [0,0,0,0,0,0,0,-0.6,-1,0],[0,0,0,0,0,0,0,0.8,0,1]],float) b = array([0,0,-74,0,24,0,0,0,0,0],float) print("solution by numpy is") print(linalg.solve(a,b)) ``` a矩陣對應到係數,b矩陣對應到常數,如下:![](https://i.imgur.com/2U2yEpg.png) 其實只要將矩陣資料寫完再套用linalg就能使用高斯消去來快速帶出各項之值,比起拿筆算更為快速,所以能善用工具也何嘗不是一件壞事呢 另外關於numpy的資訊我也很推youtube上的影片,像是彭彭老師 https://www.youtube.com/watch?v=nJUMpIo5rmg