1樓:縱然不盡然
想要用隨機生成的陣列去窮盡所有可能還是不太現實,長度為n的數列,一共就有2^n種可能,我試了一下,如果是4個數,也就是16種情況,在1000次重複下,平均要隨機生成53次才能全部生成全部可能,最多的要156次。若果有10個數生成1024種的話,我的電腦已經跑不動了,5個數512種的話平均3447次,最多的4976次。所以用隨機的方式去生成所有情況是不現實的,肯定是窮舉法比較現實。
import numpy as np
#生成係數矩陣
def func(n):
xs =
i = 1
while ix_list =
for x in xs[i]:
i+=1
xs[i] = x_list
return xs[n]
#輸入任意數,給定k,輸出求和結果
def main(input_list,k):
x = np.array(input_list)n = len(input_list)
func_n = func(n)
func_T = np.array(func_n).Tresult = np.dot(x,func_T)for index,name in enumerate(result):
if name == k:
print(func_n[index])
start = time.time()
main([1,2,3,4,5,6,7,8,9,10],10)end = time.time()
print(end-start)
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1][0, 0, 0, 1, 0, 1, 0, 0, 0, 0][0, 0, 1, 0, 0, 0, 1, 0, 0, 0][0, 1, 0, 0, 0, 0, 0, 1, 0, 0][0, 1, 1, 0, 1, 0, 0, 0, 0, 0][1, 0, 0, 0, 0, 0, 0, 0, 1, 0][1, 0, 0, 1, 1, 0, 0, 0, 0, 0][1, 0, 1, 0, 0, 1, 0, 0, 0, 0][1, 1, 0, 0, 0, 0, 1, 0, 0, 0][1, 1, 1, 1, 0, 0, 0, 0, 0, 0]0.002000331878662109410個數也是挺快的
20個數稍微慢點3.55秒
因為畢竟是窮盡,時間複雜度應該是O(n^2)個數越多時間越長。
可以優化一下,比如先剔除出不可能的解之類的。
python 怎麼擬合二元一次方程?
IT野狐禪 用梯度下降法擬合 損失函式用平方差。下面示例上損失函式用絕對值,效果沒平方差好 二元線性擬合 import tensorflow astf 定義模型 Y w X bX tf.placeholder tf float32,None,1 w tf Variable tf zeros 1 1 ...
六元一次方程整數解?
誰問我 試問方程1999a 1299b 1499c 2799d 2499e 3299f 2328450.在約束條件 a 0,607 b 0,534 c 0,60 d 0,660 e 0,100 f 0,209 下的整數解?include intmain int argc char argv else...
Python怎麼求解一元三次方程?
調包方法是使用符號化運算庫,常用庫有Theano SympyTheano不知道有沒有,Sympy可以用以下方式求解import sympy as sp x sp.Symbol x f x 3 2 x 2 1 sp.solve f 輸出 1,1 2 sqrt 5 2,sqrt 5 2 1 2 返回結果...