Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/311.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 写一个循环来表示n个多项式数组中的每个多项式_Python_Function_Loops_Variable Assignment - Fatal编程技术网

Python 写一个循环来表示n个多项式数组中的每个多项式

Python 写一个循环来表示n个多项式数组中的每个多项式,python,function,loops,variable-assignment,Python,Function,Loops,Variable Assignment,这是我的编码,f是这样的数字数组:[[9.6800000e-04 6.95000000e+00 7.49550000e+02] [7.38000000e-04 7.05100000e+00 1.2850000E+03][1.0400000E-03 6.53100000e+00 1.53100000e+03]。 基本上,我想指定f的值来形成多项式,然后对多项式进行微分。结果是这样的0.001936x+6.950.001476x+7.0510.00208x+6.531 我的问题是,如果不是3个多项式

这是我的编码,f是这样的数字数组:
[[9.6800000e-04 6.95000000e+00 7.49550000e+02]
[7.38000000e-04 7.05100000e+00 1.2850000E+03][1.0400000E-03 6.53100000e+00 1.53100000e+03]
。 基本上,我想指定
f
的值来形成多项式,然后对多项式进行微分。结果是这样的
0.001936x+6.950.001476x+7.0510.00208x+6.531
我的问题是,如果不是3个多项式,而是n个多项式,如何为Fn编写循环。我如何写一个循环来获得n个多项式的微分,并且可以很容易地使用具有不同名称的多项式。例如,F1代表第一个多项式,F2代表第二个多项式,依此类推。 我试过这样的东西,但没用

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
i=1
如果i<3:
F(i)=numpy.poly1d(F[i-1])
其他:
i=i+1

您需要使用循环来处理数量可变的多项式,并使用数据结构来存储它们。尝试使用字典,使用for循环进行迭代

i = 1
if i < 3:
    F(i)=numpy.poly1d(f[i-1])
else:
    i = i+1
现在你可以把多项式称为
F1
F2
等,而不是
F[1]
F[2]
等。对于你所说的
F12
F22
F32
将是
F[(1,2)],
F[(2,2)],
F[(3,2)]
。不过,如果你不打算使用原件,你应该覆盖它们,可能只是使用一个列表

这是假设您将numpy的3倍导入更改为:

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)]

是否有理由要导入
numpy
3次?使用单个
import numpy as np
语句,并在对该库的所有调用之前加上
np.
。对于大型、复杂的库,如
numpy
sympy
(或者可以说是任何库),使用
from lib\u name import*
到当前名称空间是不好的,这就是您使用原始版本所做的。感谢您的建议。然而,在使用了您的策略之后,我无法使用由F[(1,2)]、F[(2,2)]、F[(3,2)]表示的方程来进行进一步的步骤。例如,当我分别打印F[(1,2)]、F[(2,2)]、F[(3,2)]时,它不会给出所需的值。
import numpy as np