2013-03-10 54 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