日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Sympy简单教程(6)

發(fā)布時(shí)間:2023/12/29 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Sympy简单教程(6) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SymPy - 函數(shù)類(lèi)

Sympy 包中有函數(shù)?Function 類(lèi), 定義在模塊?sympy.core.function 之中. 它是所有的應(yīng)用數(shù)學(xué)函數(shù)的基類(lèi), 另外也作為抽象(未定義的)函數(shù)的構(gòu)造函數(shù).

如下的函數(shù)類(lèi)型是從?Function 類(lèi)繼承而來(lái)??

  • 復(fù)數(shù)函數(shù)
  • 三角函數(shù)
  • 整數(shù)相關(guān)函數(shù)
  • 組合函數(shù)
  • 其它不常用函數(shù)

復(fù)(數(shù))函數(shù)

此類(lèi)函數(shù)定義在模塊?sympy.functions.elementary.complexes?之中.

實(shí)部 re

這個(gè)函數(shù)返回一個(gè)表達(dá)式的實(shí)部??

>>> from sympy import * >>> re(5+3*I)

上述代碼給出結(jié)果 ?

5

>>> re(I)

上述代碼給出結(jié)果 ?

0

虛部 Im

這個(gè)函數(shù)給出表達(dá)式的虛部 ?

>>> im(5+3*I)

上述代碼給出結(jié)果??

3

>>> im(I)

上述代碼給出結(jié)果??

1

符號(hào) sign

這個(gè)函數(shù)返回一個(gè)表達(dá)式的復(fù)數(shù)符號(hào).

對(duì)于實(shí)數(shù)表達(dá)式, 符號(hào)將會(huì)是??

  • 1 如果表達(dá)式是正的
  • 0 如果表達(dá)式等于零
  • -1 如果表達(dá)式是負(fù)的

如果表達(dá)式是純虛數(shù)將返回結(jié)果如下 ?

  • I 如果 im(expression) 是正的
  • -I 如果 im(expression) 是負(fù)的
>>> sign(1.55), sign(-1), sign(S.Zero)

上述代碼得到結(jié)果??

(1, -1, 0)

>>> sign (-3*I), sign(I*2)

上述代碼給出結(jié)果??

(-I, I)

絕對(duì)值(模)Abs

這個(gè)函數(shù)返回復(fù)數(shù)的絕對(duì)值或者模. 也就是在復(fù)平面上從點(diǎn) (a,b) 到原點(diǎn) (0,0) 的距離. 這個(gè)函數(shù)是內(nèi)建函數(shù) abs() 的拓展以接收符號(hào)值.

>>> Abs(2+3*I)

上述代碼給出結(jié)果??

共軛復(fù)數(shù)conjugate

這個(gè)函數(shù)返回復(fù)數(shù)的共軛. 為尋求共軛復(fù)數(shù)只需要把虛部改變符合即可.

>>> conjugate(4+7*I)

執(zhí)行上述代碼得到??

4 - 7i

三角函數(shù)

SymPy 定義了所有的三角函數(shù)例如?- sin cos, tan 等, 另外還有它們的反函數(shù),例如?asin, acos, atan 等. 這些函數(shù)計(jì)算給定的各種角無(wú)論是弧度或者角度.

>>> sin(pi/2), cos(pi/4), tan(pi/6)

執(zhí)行上述代碼得到??

(1, sqrt(2)/2, sqrt(3)/3)

>>> asin(1), acos(sqrt(2)/2), atan(sqrt(3)/3)

執(zhí)行上述代碼得到??

(pi/2, pi/4, pi/6)

整數(shù)上的函數(shù)

這一類(lèi)函數(shù)是針對(duì)整數(shù)進(jìn)行的各種操作.

上取整ceiling

這個(gè)函數(shù)是一個(gè)一元函數(shù)返回不小于給定參數(shù)的最小整數(shù). 在復(fù)數(shù)情形下, 則是分別對(duì)實(shí)部和虛部進(jìn)行上取整.

>>> ceiling(pi), ceiling(Rational(20,3)), ceiling(2.6+3.3*I)

執(zhí)行上述代碼得到??

(4, 7, 3 + 4*I)

下取整floor

這個(gè)函數(shù)返回不超過(guò)參數(shù)的最大整數(shù). 在復(fù)數(shù)情形下, 這個(gè)函數(shù)對(duì)于實(shí)部和虛部分別下取整.

>>> floor(pi), floor(Rational(100,6)), floor(6.3-5.9*I)

執(zhí)行上述代碼得到??

(3, 16, 6 - 6*I)

分?jǐn)?shù)frac

這個(gè)函數(shù)返回 x 的分?jǐn)?shù)部分.

>>> frac(3.99), frac(Rational(10,3)), frac(10)

執(zhí)行上述代碼得到??

(0.990000000000000, 1/3, 0)

組合函數(shù)

組合數(shù)學(xué) Combinatorics 是數(shù)學(xué)的一個(gè)領(lǐng)域, 關(guān)注于選擇、排列以及在一個(gè)有限或離散系統(tǒng)上操作的數(shù)學(xué)問(wèn)題.

階乘函數(shù)factorial

階乘在組合數(shù)學(xué)組合是非常重要的, 結(jié)果表示n 個(gè)對(duì)象不同的排列總數(shù). 用符號(hào)可以表示為"!". 這個(gè)階乘函數(shù)定義于非負(fù)整數(shù), 如果參數(shù)是負(fù)的則返回復(fù)無(wú)窮complex infinity.

>>> x=Symbol('x') >>> factorial(x)

執(zhí)行上述代碼得到??

x!

>>> factorial(5)

執(zhí)行上述代碼得到??

120

>>> factorial(-1)

執(zhí)行上述代碼得到??

∞∽

組合數(shù) binomial

這個(gè)函數(shù)給出從n個(gè)不同元素中選取k個(gè)不同元素的方法總數(shù).

>>> x,y=symbols('x y') >>> binomial(x,y)

執(zhí)行上述代碼得到 ?

>>> binomial(4,2)

執(zhí)行上述代碼得到??

6

楊輝三角(西方人稱為Pascal's triangle)的行可以通過(guò)組合數(shù)函數(shù)得到.

>>> for i in range(5): print ([binomial(i,j) for j in range(i+1)])

執(zhí)行上述代碼得到??

[1]

[1, 1]

[1, 2, 1]

[1, 3, 3, 1]

[1, 4, 6, 4, 1]

斐波那契數(shù)列fibonacci

斐波那契數(shù)列?是由初始條件?F0=0, F1=1 以及遞歸式定義的數(shù)列?

>>> [fibonacci(x) for x in range(10)]

執(zhí)行上述代碼得到??

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

三階斐波那契數(shù)列tribonacci

斐波那契數(shù)列 事實(shí)上就是二階差分方程 因此?三階斐波那契數(shù)列也可以類(lèi)似定義為:初始條件為?F0=0, F1=1, F2=1, 迭代關(guān)系式為?Fn=Fn-1+Fn-2+Fn-3的數(shù)列.

>>> tribonacci(5, Symbol('x'))

執(zhí)行上述代碼得到??

>>> [tribonacci(x) for x in range(10)]

執(zhí)行上述代碼得到??

[0, 1, 1, 2, 4, 7, 13, 24, 44, 81]

不常用函數(shù)

接下來(lái)是一些常用函數(shù)??

Min?? 返回列表的最小值t. 它的名稱?Min 之所以首字母大寫(xiě)是為了和內(nèi)建函數(shù)?min相區(qū)分.

Max?? 返回列表的最大值. 它的名稱?Max 是為了不和內(nèi)建函數(shù) max 沖突.

root?? 返回 x 的第 n 個(gè)根.

sqrt?? 返回 x 的主平方根.

cbrt?? 這個(gè)函數(shù)計(jì)算 x 的主三次方根, (就是?x**Rational(1,3)的簡(jiǎn)寫(xiě)).

接下來(lái)就是上述不常用函數(shù)的示例及其各自的輸出??

>>> Min(pi,E)

e

>>> Max(5, Rational(11,2))

112112

>>> root(7,Rational(1,2))

49

>>> sqrt(2)

2–√2

>>> cbrt(1000)

10

SymPy - 解方程

因?yàn)榉?hào)?= 和?== 定義為Python中的賦值和等式算子,所以它們不能用于刻畫(huà)符號(hào)方程. 在 SymPy 中提供了函數(shù)?Eq() 來(lái)建立一個(gè)方程.

>>> from sympy import * >>> x,y=symbols('x y') >>> Eq(x,y)

上述命令給出一個(gè)等價(jià)于如下結(jié)果的輸出 ?

x = y

因?yàn)?x=y 是可能的當(dāng)且僅當(dāng)?if x-y=0, 上述方程可以寫(xiě)作??

>>> Eq(x-y,0)

上述代碼給出一個(gè)等價(jià)于如下結(jié)果的輸出??

x ? y = 0

SymPy 中?solver 模塊中的函數(shù) solveset() 它的原型如下 ?

solveset(equation, variable, domain)

默認(rèn)的定義域是復(fù)數(shù)域?S.Complexes. 使用函數(shù)?solveset(), 我們可以解一個(gè)代數(shù)方程, 例如??

>>> solveset(Eq(x**2-9,0), x)

上述命令輸出結(jié)果 ?

{?3, 3}

>>> solveset(Eq(x**2-3*x, -2),x)

執(zhí)行上述命令得到如下結(jié)果 ?

{1,2}

solveset 的輸出是一個(gè)解的?FiniteSet 有限集合. 如果沒(méi)有解, 返回空集EmptySet

>>> solveset(exp(x),x)

執(zhí)行上述命令得到如下結(jié)果??

?

線性方程

我們必須使用函數(shù)?linsolve() 以求解線性方程組.

例如, 如下的線性方程組 ?

>>> from sympy import * >>> x,y=symbols('x y') >>> linsolve([Eq(x-y,4),Eq( x + y ,1) ], (x, y))

執(zhí)行上述命令得到如下結(jié)果??

函數(shù) linsolve() 也可以求解用矩陣形式表示的線性方程組.

>>> a,b=symbols('a b') >>> a=Matrix([[1,-1],[1,1]]) >>> b=Matrix([4,1]) >>> linsolve([a,b], (x,y))

執(zhí)行上述命令得到如下結(jié)果??

非線性方程(組)

我們使用 nonlinsolve() 函數(shù)計(jì)算非線性方程(組). 這類(lèi)方程的示例如下??

>>> a,b=symbols('a b') >>> nonlinsolve([a**2 + a, a - b], [a, b])

執(zhí)行上述命令得到如下結(jié)果??

微分方程(組)

首先通過(guò)給函數(shù) symbols 傳遞一個(gè)參數(shù)?cls=Function 來(lái)定義一個(gè)未知函數(shù). 解微分方程(組)使用函數(shù) desolve.

>>> x=Symbol('x') >>> f=symbols('f', cls=Function) >>> f(x)

執(zhí)行上述命令得到如下結(jié)果??

f(x)

這里的?f(x) 是一個(gè)未定義的函數(shù). 它的導(dǎo)數(shù)定義如下??

>>> f(x).diff(x)

執(zhí)行上述命令得到如下結(jié)果??

首先創(chuàng)建對(duì)應(yīng)于如下微分方程的?Eq 對(duì)象

>>> eqn=Eq(f(x).diff(x)-f(x), sin(x)) >>> eqn

執(zhí)行上述命令得到等價(jià)于如下表達(dá)式的結(jié)果??

>>> dsolve(eqn, f(x))

執(zhí)行上述命令得到等價(jià)于如下表達(dá)式的結(jié)果??

總結(jié)

以上是生活随笔為你收集整理的Sympy简单教程(6)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。