Python使用scipy進行多項式計算與符號計算

2021-07-31 10:41:18 字數 2860 閱讀 5164

本文**主要演示如何使用poly1d進行多項式計算和符號計算。

>>> from scipyimport poly1d

>>> p1 = poly1d([1,2,3,4])

# 輸出結果中,第一行的數字為第二行對應位置項中x的指數

>>> print(p1)

3     2

1 x + 2 x + 3 x + 4

# 等價於p2=(x-1)(x-2)(x-3)(x-4)

>>> p2 = poly1d([1,2,3,4], true)

>>> print(p2)

4      3      2

1 x - 10 x + 35 x - 50 x + 24

# 使用z作為變數,這只是個形式,並不影響計算

>>> p3 = poly1d([1,2,3,4], variable='z')

>>> print(p3)

3     2

1 z + 2 z + 3 z + 4

# 把多項式中的變數替換為指定的值

# 多項式求值

>>> p1(0)

4>>> p1(1)10

# 計算多項式對應方程的根

>>> p1.r

array([-1.65062919+0.j        , -0.17468540+1.54686889j,

-0.17468540-1.54686889j])

# 把根帶入多項式驗證一下

>>> p1(p1.r[0])

(-8.8817841970012523e-16+0j)

# 檢視和修改多項式的係數

>>> p1.c

array([1, 2, 3, 4])

>>> print(p3)

3     2

1 z + 2 z + 3 z + 4

>>> p3.c[0] = 5

>>> print(p3)

3     2

5 z + 2 z + 3 z + 4

# 檢視多項式最高端

>>> p1.order3

# 檢視指定指數對應的項的係數

# 例如,在p1多項式中,指數為3的項的係數為1

>>> p1[3]

1>>> p1[0]4

# 加、減、乘、除、冪運算

>>> print(p1)

3     2

1 x + 2 x + 3 x + 4

>>> print(-p1)

3     2

-1 x - 2 x - 3 x - 4

>>> print(p2)

4      3      2

1 x - 10 x + 35 x - 50 x + 24

>>> print(p1 + 3)

3     2

1 x + 2 x + 3 x + 7

>>> print(p1 + p2)

4     3      2

1 x - 9 x + 37 x - 47 x + 28

>>> print(p1 - 5)

3     2

1 x + 2 x + 3 x - 1

>>> print(p2 - p1)

4      3      2

1 x - 11 x + 33 x - 53 x + 20

>>> print(p1 * 3)

3     2

3 x + 6 x + 9 x + 12

>>> print(p1 * p2)

7     6      5     4      3      2

1 x - 8 x + 18 x - 6 x - 11 x + 38 x - 128 x + 96

>>> p1 * p2

poly1d([   1.,   -8.,   18.,   -6.,  -11.,   38., -128.,   96.])

# 除法返回商多項式和餘多項式

>>> print(p1*p2 / p2)

(poly1d([ 1.,  2.,  3.,  4.]), poly1d([ 0.]))

>>> print(p2/p1)

(poly1d([  1., -12.]), poly1d([ 56., -18.,  72.]))

# 多項式的冪運算

>>> print(p1 ** 2)

6     5      4      3      2

1 x + 4 x + 10 x + 20 x + 25 x + 24 x + 16

>>> print(p1 * p1)

6     5      4      3      2

1 x + 4 x + 10 x + 20 x + 25 x + 24 x + 16

# 一階導數

>>> print(p1.deriv())

23 x + 4 x + 3

# 二階導數

>>> print(p1.deriv(2))

6 x + 4

# 當x=1時二階導數多項式的值

>>> print(p1.deriv(2)(1))10

# 多項式的不定積分

# 一重不定積分,設常數項為0

>>> print(p1.integ(m=1, k=0))

4          3       2

0.25 x + 0.6667 x + 1.5 x + 4 x

# 二重不定積分,設常數項為3

>>> print(p1.integ(m=2, k=3))

5          4       3     2

0.05 x + 0.1667 x + 0.5 x + 2 x + 3 x + 3

numpy及scipy的使用

把list a轉換為numpy 矩陣 np.array a np.array a,int32 numpy載入txt檔案裡面的矩陣 matrix np.loadtxt txt name,dtype i delimiter 將nparray裡面每個元素轉換為int型 nparray.astype int...

Python 解決scipy匯入出錯問題

scipy是一款方便 易於使用 專為科學和工程設計的python工具包.它包括統計,優化,整合,線性代數模組,傅利葉變換,訊號和影象處理,常微分方程求解器等。使用這些功能需要scipy,但是python 2.7.12在安裝時沒有改軟體,直接匯入會報錯 importerror no module na...

python安裝scipy 遇到的問題

首先關於anaconda,沒有用過,但是它的安裝必須把原生的python全部卸掉再換裝成它自己。只拿他來做科學計算當然無所謂,但是python對我而言又不是只用來做科學計算的,還是要用一些其他第三方庫包的,因此這樣的做法讓我很警惕,所以暫且不提。以下所有安裝過程假設電腦中安裝有pip,如果沒有就請裝...