2015-04-06 174 views
-1

因此,我想用兩個變量(例如x和y各有50個值)求解方程z。我想計算這樣的東西:如何用Python中的兩個變量求解方程

import numpy as np 
x = np.linspace(0, 50, 51) 
y = np.linspace(100, 150, 51) 

z=y-x 

print z 

with open("output_data.csv","w") as out_file: 
    for i in range(len(x)): 
     #print i 
     out_string="" 
     out_string+=str(x[i]) 
     #out_string+=str(real(ky2)[i]) 
     #print out_string 
     out_string += "," + str(z[i]) 
     out_string += "\n" 
     out_file.write(out_string) 

但是,我想計算所有y的第一個x與所有的第二個x; y再次等等,直到我得到一組50個z值,每個值都有50個值。然後保存在50列文件中。

我的代碼在做什麼,脂肪只計算第1個x和第1個y,第2個x和第2個y等等的50個z。

任何想法?

回答

1

你需要,所以你計算zfor循環內更改代碼:

for i in range(len(x)): 
    words = [] 
    z = y-x[i] 
    words.append(str(x[i])) 
    words.append(", ".join((str(_z) for _z in z))) 
    outfile.write(": ".join(words)) 
    outfile.write("\n") 

與您的代碼,你只計算z一次(外循環),這確實的項式差異正如你所看到的那樣,你可以使用yx

話雖如此,你應該改變你的代碼不要str += ...。如果你正在積累字符串,請使用列表來代替:

words = [] 
words.append(str(x[i]) ... 
+0

我做了第一部分,它確實工作正常,但用字替換字符串並沒有真正起作用。你能在這一部分更清楚一點嗎? – Mac

+1

我添加了一個更新,它說明了「單詞」列表的使用。基本上你是爲你的out_string調用的每個'+'創建一個新的字符串。將組件存儲在「列表」(單詞)中是一種常見的python習慣用法,用於更有效地生成更長的字符串。 – vikramls

+0

它只給我錯誤: words = [] ^ IndentationError:預計一個縮進塊 – Mac