[Python] 特徵值

我只解出一元二次、三次方程式 . . . 我好爛 import math as math def toFactor(matrix) : length = len(matrix) if length == 4 : a, b = matrix[0], matrix[1] c, d = matrix[2], matrix[3] A = 1 B = (a+d) * (-1) C = a*d - b*c return A,B,C if length == 9 : a, b, c = matrix[0], matrix[1], matrix[2] d, f, g = matrix[3], matrix[4], matrix[5] h, j, l = matrix[6], matrix[7], matrix[8] A = 1 B = - a - f - l C = - b*d + a*f - c*h - g*j + a*l + f*l D = c*f*h + b*g*h + c*d*j + a*g*j + b*d*l - a*f*l return A,B,C,D if length == 16 : a, b, c, d = matrix[0], matrix[1], matrix[2], matrix[3] f, g, h, j = matrix[4], matrix[5], matrix[6], matrix[7] l, m, o, p = matrix[8], matrix[9], matrix[10], matrix[11] q, r, s, t = matrix[12], matrix[13], matrix[14], matrix[15] A = 1 B = - a - g - o - t C = - b*f + a*g - c*l - h*m + a*o + g*o - d*q - j*r - p*s + a*t + g*t + o*t D = ( c*g*l - b*h*l - c*f*m + a*h*m + b*f*o - a*g*o + d*g*q - b*j*q + d*o*q - c*p*q - d*f*r + a*j*r + j*o*r - h*p*r - d*l*s - j*m*s + a*p*s + g*p*s + b*f*t - a*g*t + c*l*t + h*m*t - a*o*t - g*o*t) E = (d*h*m*q - c*j*m*q - d*g*o*q + b*j*o*q + c*g*p*q - b*h*p*q - d*h*l*r + c*j*l*r + d*f*o*r - a*j*o*r - c*f*p*r + a*h*p*r + d*g*l*s - b*j*l*s - d*f*m*s + a*j*m*s + b*f*p*s - a*g*p*s - c*g*l*t + b*h*l*t + c*f*m*t - a*h*m*t - b*f*o*t + a*g*o*t) return A,B,C,D,E def solveFunction(f) : length = len(f) if length == 3 : A, B, C = f[0],f[1],f[2] x1 = ( -B + (B*B - 4*A*C)**(1/2)) / (2*A) x2 = ( -B - (B*B - 4*A*C)**(1/2)) / (2*A) return x1,x2 if length == 4 : A, B, C, D = f[0], f[1], f[2], f[3] p = ( -(B*B) / (3*A*A) ) + (C/A) q = ( (2*B*B*B) / (27*A*A*A) ) - ((B*C) / (3*A*A)) + (D/A) w = complex(-1,3**(1/2)) / 2 U = (-q / 2) + ( ( ( q / 2 )**2 + ( p / 3 )**3 )**(1/2) ) V = (-q / 2) - ( ( ( q / 2 )**2 + ( p / 3 )**3 )**(1/2) ) if U > 0 : U = math....

January 4, 2021 · 4 min · CPP

[Python] 回歸線

「欸!你這題怎麽做?」 程式電神曾經說過:「 copy and paste 」 「 . . . 」 我謹記在心 def makeMatrix(m) : length = len(m) size = int( length**(1/2) ) matrix = [] for i in range(size) : newRow = [] for j in range(size) : newRow.append(m[i*size+j]) matrix.append(newRow) return matrix def makeCoordinate(m) : length = len(m) matrix = [] for row in range(length) : newRow = [m[row]] matrix.append(newRow) return matrix def transpose(m) : lengthRow = len(m) lengthCol = len(m[0]) matrix = [] for col in range(lengthCol) : newRow = [] for row in range(lengthRow) : newRow....

December 19, 2020 · 3 min · CPP

[Python] 轉移矩陣

以功能來介紹: 將一維資料轉成二維矩陣 ( makeMatrix ) 將一維資料轉成一行的座標 (makeCoordinate) 轉換轉置矩陣 ( transpose ) 計算行列式 ( determinant ) 計算反矩陣 ( inverse ) 矩陣乘法 ( matrixMutiple ) 轉換基底 ( changeBasis ) def makeMatrix(m) : length = len(m) size = int( length**(1/2) ) matrix = [] for i in range(size) : newRow = [] for j in range(size) : newRow.append(m[i*size+j]) matrix.append(newRow) return matrix def makeCoordinate(m) : length = len(m) matrix = [] for row in range(length) : newRow = [m[row]] matrix....

December 7, 2020 · 2 min · CPP

[Python] 估計圓周率

利用圓的定義以及圓跟正方形的關係, 進而推算出圓周率! import random times = 99999 circle = 0 for _ in range( times ) : x = random.uniform(0.0,1.0) y = random.uniform(0.0,1.0) distance = x**2 + y**2 if distance < 1 : circle += 1 pi = 4 * circle / times print(pi)

November 4, 2020 · 1 min · CPP

[Python] 矩陣運算

因為 Linear Algebra 的 sheng 哥出題不手軟, 所以就把矩陣的各種運算都寫好了! 以免上機的時候腦袋卡住 . . . 行列式: 利用遞迴將陣列縮小,並算出行列式值 遞迴終點為 length==2 (二階行列式定義) 計算原理是 first row 計算 回傳:數字(number) def determinant(m) : length = len(m) if length > 2 : result = 0 coe = [] for i in range(length) : coe.append( (-1)**(i)*m[0][i] ) matrix = [] for j in range(1,length) : row = [] for k in range(length) : if k != i : row.append(m[j][k]) matrix.append(row) result += coe[i]*determinant(matrix) return result else : return m[0][0]*m[1][1]-m[1][0]*m[0][1] 轉置矩陣:...

November 2, 2020 · 3 min · CPP