【问题标题】:write a loop to represent each polynomial from an array for n polynomials编写一个循环来表示数组中的每个多项式,用于 n 个多项式
【发布时间】:2013-02-25 21:56:30
【问题描述】:
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 我的问题是,如果我有 n 个多项式而不是 3 个多项式,如何为 Fn 编写一个循环。我如何编写一个循环来获得 n 多项式的微分,并且可以轻松使用具有不同名称的多项式。例如,F1 代表第一个多项式,F2 代表第二个多项式,依此类推。 我试过这样,但它不起作用

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

【问题讨论】:

  • 您导入numpy 3 次是否有原因?使用单个import numpy as np 语句,并在对该库的所有调用前加上np.。将from lib_name import * 用于大型复杂库(如numpysympy(或者,可以说是任何库))到当前命名空间是一种不好的形式,这就是您对原始版本所做的事情。

标签: python function loops variable-assignment


【解决方案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)]。不过,如果您不打算使用原件,您应该覆盖它们并且可能只使用一个列表。

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

import numpy as np

【讨论】:

  • 感谢您的建议。但是,在使用您的策略后,我无法使用 F[(1,2)]、F[(2,2)]、F[(3,2)] 表示的方程式进行进一步的步骤。例如,当我分别打印 F[(1,2)], F[(2,2)], F[(3,2)] 时,它没有给出所需的值。
猜你喜欢
  • 1970-01-01
  • 2021-11-20
  • 1970-01-01
  • 2016-11-27
  • 1970-01-01
  • 2021-03-02
  • 2016-06-03
  • 2014-11-06
  • 2017-02-21
相关资源
最近更新 更多