[英]write a loop to represent each polynomial from an array for n polynomials
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
我的問題是,如果我有3個多項式而不是3個多項式,那么如何為Fn寫一個循環。 我怎么能寫一個循環來獲得n個多項式的微分,並能輕松地使用具有不同名稱的多項式。 例如,F1代表第一個多項式,F2代表第二個多項式,依此類推。 我試過這樣的東西,但是不起作用
i = 1
if i < 3:
F(i)=numpy.poly1d(f[i-1])
else:
i = i+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)]
現在您可以將多項式不是F1
, F2
等,而是F[1]
, F[2]
等。對於您所說的F12
, F22
, F32
, F32
F[(1,2)]
, F[(2,2)]
, F[(3,2)]
。 但是,如果您不打算使用原件,則應覆蓋原件,並可能僅使用列表。
假設您將numpy的3x導入更改為:
import numpy as np
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.