簡體   English   中英

編寫一個循環來表示n個多項式數組中的每個多項式

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

現在您可以將多項式不是F1F2等,而是F[1]F[2]等。對於您所說的F12F22F32F32 F[(1,2)]F[(2,2)]F[(3,2)] 但是,如果您不打算使用原件,則應覆蓋原件,並可能僅使用列表。

假設您將numpy的3x導入更改為:

import numpy as np

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM