2013-03-10 47 views
0
import csv 
import numpy 
from sympy import * 
import numpy as np 
from numpy import * 
import json 

reader=csv.reader(open("/Users/61/Desktop/pythonlearning/generator1.csv","rU"),delimiter=',') 
a=list(reader) 
result=numpy.array(a) 
print a 

b = [] 
for n in range(3): 
    b.append(a[n+1][0:3]) 
print b 
e = np.array(b) 
f = e.astype(np.float) 
print f 

x = Symbol("x") 
y = Symbol("y") 

coeffs = f 
F1 = numpy.poly1d(f[0]) 
F12 = np.polyder(F1) 
print F12 
F2 = numpy.poly1d(f[1]) 
F22 = np.polyder(F2) 
print F22 
F3 = numpy.poly1d(f[2]) 
F32 = np.polyder(F3) 
print F32 

這是我的編碼和f是數字的陣列是這樣的:[[ 9.68000000e-04 6.95000000e+00 7.49550000e+02] [ 7.38000000e-04 7.05100000e+00 1.28500000e+03] [ 1.04000000e-03 6.53100000e+00 1.53100000e+03]]。 基本上,我想分配f的值以形成多項式,然後區分多項式。結果它是這樣的0.001936 x + 6.95 0.001476 x + 7.051 0.00208 x + 6.531 我的問題是如何爲Fn編寫一個循環,如果不是3個多項式,而是有n個多項式。我怎麼能寫一個循環來獲得n個多項式的微分,並且可以很容易地使用不同名稱的多項式。例如,F1表示第一多項式,F2表示第二多項式等等。 我想某事像這樣,但它不工作寫一個循環來表示從一個陣列,每個多項式對於n多項式

i = 1 
if i < 3: 
    F(i)=numpy.poly1d(f[i-1]) 
else: 
    i = i+1 
+0

是否有要導入'numpy' 3次,原因是什麼?使用一個'numpy作爲np'語句,並用'np.'將所有對這個庫的調用作爲前綴。將'from lib_name import *'用於像'numpy'和'sympy'(或者可以說,任何庫)這樣的大型,複雜的庫到當前名稱空間中是一種糟糕的形式,這就是您使用原始版本進行的操作。 – MattDMo 2013-03-10 19:43:56

回答

1

你需要使用一個循環來處理多項式的變量數和數據結構來存儲它們。嘗試使用字典,使用for循環進行迭代。

numberPolynomials = 3 
F = {} 
for n in range(1, numberPolynomials+1): 
    F[n] = np.poly1d(f[n-1]) 
    F[(n, 2)] = np.polyder(F[n]) 
    print F[(n, 2)] 

現在,您可以參考多項式不是F1F2等,但作爲F[1]F[2],等等。你曾叫什麼F12F22F32然後將F[(1,2)]F[(2,2)]F[(3,2)]。雖然,如果你不打算使用原件,你應該覆蓋它們,可能只是使用一個列表。

這是假設,你改變了3倍進口numpy的到:

import numpy as np 
+0

謝謝您的建議。然而,在使用您的策略之後,我無法使用F [(1,2)],F [(2,2)],F [(3,2)]表示的方程式作爲進一步的步驟。例如,當我單獨打印F [(1,2)],F [(2,2)],F [(3,2)]時,它不會給出所需的值。 – 2013-03-11 00:58:58

相關問題