<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # SymPy 教程 > 原文: [http://zetcode.com/python/sympy/](http://zetcode.com/python/sympy/) SymPy 教程展示了如何使用 SymPy 模塊在 Python 中進行符號計算。 這是對 SymPy 的簡要介紹。 計算機代數系統(CAS)是一種數學軟件,能夠以類似于數學家和科學家的傳統手動計算方式來處理數學表達式。 符號計算象征性地處理數學對象的計算。 數學對象是準確而非近似地表示的,具有未求值變量的數學表達式以符號形式保留。 ## SymPy SymPy 是用于符號數學的 Python 庫。 它旨在成為功能齊全的計算機代數系統。 SymPy 包括從基本符號算術到微積分,代數,離散數學和量子物理學的功能。 它可以在 LaTeX 中顯示結果。 ```py $ pip install sympy ``` SymPy 是使用`pip install sympy`命令安裝的。 ## `Rational`值 SymPy 具有用于處理有理數的`Rational`。 有理數是可以表示為兩個整數(分子`p`和非零分母`q`)的商或分數`p / q`的任何數字。 `rational_values.py` ```py #!/usr/bin/env python from sympy import Rational r1 = Rational(1/10) r2 = Rational(1/10) r3 = Rational(1/10) val = (r1 + r2 + r3) * 3 print(val.evalf()) val2 = (1/10 + 1/10 + 1/10) * 3 print(val2) ``` 該示例使用有理數。 ```py val = (r1 + r2 + r3) * 3 print(val.evalf()) ``` 該表達形式為符號形式。 我們使用`evalf()`方法對其進行求值。 ```py $ rational_values.py 0.900000000000000 0.9000000000000001 ``` 注意,當不使用有理數時,輸出中會有一個小錯誤。 ## SymPy `pprint` `pprint()`用于在控制臺上精美打印輸出。 LaTeX 可以達到最佳效果,例如在 Jupyter 筆記本中。 `prettify.py` ```py #!/usr/bin/env python from sympy import pprint, Symbol, exp, sqrt from sympy import init_printing init_printing(use_unicode=True) x = Symbol('x') a = sqrt(2) pprint(a) print(a) print("------------------------") c = (exp(x) ** 2)/2 pprint(c) print(c) ``` 程序會美化輸出。 ```py init_printing(use_unicode=True) ``` 對于某些字符,我們需要啟用 unicode 支持。 ```py $ prettify.py √2 sqrt(2) ------------------------ 2?x ? ──── 2 exp(2*x)/2 ``` 這是輸出。 請注意,使用 Jupyter 筆記本會提供更好的輸出。 ## 平方根 平方根是一個數字,乘以它會產生指定的數量。 `square_root.py` ```py #!/usr/bin/env python from sympy import sqrt, pprint, Mul x = sqrt(2) y = sqrt(2) pprint(Mul(x, y, evaluate=False)) print('equals to ') print(x * y) ``` 程序輸出一個包含平方根的表達式。 ```py pprint(Mul(x, y, evaluate=False)) ``` 我們使用`evaluate`屬性推遲對乘法表達式的求值。 ```py $ square_root.py √2?√2 equals to 2 ``` 這是輸出。 ## SymPy 符號 符號計算適用于符號,以后可以對其進行求值。 使用符號之前,必須在 SymPy 中定義符號。 `def_sym.py` ```py #!/usr/bin/env python # ways to define symbols from sympy import Symbol, symbols from sympy.abc import x, y expr = 2*x + 5*y print(expr) a = Symbol('a') b = Symbol('b') expr2 = a*b + a - b print(expr2) i, j = symbols('i j') expr3 = 2*i*j + i*j print(expr3) ``` 該程序顯示了三種在 SymPy 中定義符號的方法。 ```py from sympy.abc import x, y ``` 可以從`sympy.abc`模塊導入符號。 它將所有拉丁字母和希臘字母導出為符號,因此我們可以方便地使用它們。 ```py a = Symbol('a') b = Symbol('b') ``` 可以用`Symbol`定義 ```py i, j = symbols('i j') ``` 可以使用`symbols()`方法定義多個符號。 ## SymPy 規范表達形式 SymPy 會自動將表達式轉換為規范形式。 SymPy 僅執行廉價操作; 因此,表達式可能無法求值為最簡單的形式。 `canonical_form.py` ```py #!/usr/bin/env python from sympy.abc import a, b expr = b*a + -4*a + b + a*b + 4*a + (a + b)*3 print(expr) ``` 我們有一個帶有符號`a`和`b`的表達式。 該表達可以容易地簡化。 ```py $ canonical_form.py 2*a*b + 3*a + 4*b ``` 這是輸出。 ## SymPy 擴展代數表達式 使用`expand()`,我們可以擴展代數表達式; 即該方法嘗試消除冪和乘法。 `expand.py` ```py #!/usr/bin/env python from sympy import expand, pprint from sympy.abc import x expr = (x + 1) ** 2 pprint(expr) print('-----------------------') print('-----------------------') expr = expand(expr) pprint(expr) ``` 該程序擴展了一個簡單的表達式。 ```py $ expand.py 2 (x + 1) ----------------------- ----------------------- 2 x + 2?x + 1 ``` 這是輸出。 ## SymPy 簡化表達式 可以使用`simplify()`將表達式更改為更簡單的形式。 `simplify.py` ```py #!/usr/bin/env python from sympy import sin, cos, simplify, pprint from sympy.abc import x expr = sin(x) / cos(x) pprint(expr) print('-----------------------') expr = simplify(expr) pprint(expr) ``` 例如將`sin(x)/sin(y)`表達式簡化為`tan(x)`。 ```py $ simplify.py sin(x) ────── cos(x) ----------------------- tan(x) ``` 這是輸出。 ## SymPy 比較表達式 SymPy 表達式與`equals()`而不是`==`運算符進行比較。 `expr_equality.py` ```py #!/usr/bin/env python from sympy import pprint, Symbol, sin, cos x = Symbol('x') a = cos(x)**2 - sin(x)**2 b = cos(2*x) print(a.equals(b)) # we cannot use == operator print(a == b) ``` 該程序比較兩個表達式。 ```py print(a.equals(b)) ``` 我們用`equals()`比較兩個表達式。 在應用該方法之前,SymPy 嘗試簡化表達式。 ```py $ expr_equality.py True False ``` 這是輸出。 ## SymPy 求值表達式 可以通過替換符號來求值表達式。 `evaluating.py` ```py #!/usr/bin/env python from sympy import pi print(pi.evalf(30)) ``` 該示例將`pi`值求值為 30 個位。 ```py $ evaluating.py 3.14159265358979323846264338328 ``` 這是輸出。 `evaluating2.py` ```py #!/usr/bin/env python from sympy.abc import a, b from sympy import pprint expr = b*a + -4*a + b + a*b + 4*a + (a + b)*3 print(expr.subs([(a, 3), (b, 2)])) ``` 本示例通過用數字替換`a`和`b`符號來求值表達式。 ```py $ evaluating.py 3.14159265358979323846264338328 ``` 這是輸出。 ## SymPy 求解方程 用`solve()`或`solveset()`求解方程。 `solving.py` ```py #!/usr/bin/env python from sympy import Symbol, solve x = Symbol('x') sol = solve(x**2 - x, x) print(sol) ``` 該示例使用`solve()`解決了一個簡單方程。 ```py sol = solve(x**2 - x, x) ``` `solve()`的第一個參數是公式。 該公式以適合 SymPy 的特定形式編寫; 即`x**2 - x`代替`x**2 = x`。 第二個參數是我們需要解決的符號。 ```py $ solving.py [0, 1] ``` 該方程式有兩個解:0 和 1。 或者,我們可以將`Eq`用于公式。 `solving2.py` ```py #!/usr/bin/env python from sympy import pprint, Symbol, Eq, solve x = Symbol('x') eq1 = Eq(x + 1, 4) pprint(eq1) sol = solve(eq1, x) print(sol) ``` 該示例解決了一個簡單的`x + 1 = 4`方程。 ```py $ solving2.py x + 1 = 4 [3] ``` 這是輸出。 `solving3.py` ```py #!/usr/bin/env python from sympy.solvers import solveset from sympy import Symbol, Interval, pprint x = Symbol('x') sol = solveset(x**2 - 1, x, Interval(0, 100)) print(sol) ``` 使用`solveset()`,我們找到了給定間隔的解決方案。 ```py $ solving3.py {1} ``` 這是輸出。 ## SymPy 序列 序列是其中允許重復的對象的枚舉集合。 序列可以是有限的或無限的。 元素的數量稱為序列的長度。 與集合不同,同一元素可以在序列中的不同位置出現多次。 元素的順序很重要。 `sequence.py` ```py #!/usr/bin/env python from sympy import summation, sequence, pprint from sympy.abc import x s = sequence(x, (x, 1, 10)) print(s) pprint(s) print(list(s)) print(s.length) print(summation(s.formula, (x, s.start, s.stop))) # print(sum(list(s))) ``` 本示例創建一個由數字 1、2,...,10 組成的序列。 我們計算這些數字的總和。 ```py $ sequence.py SeqFormula(x, (x, 1, 10)) [1, 2, 3, 4, …] [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 10 55 ``` 這是輸出。 ## SymPy 極限 極限是函數(或序列)“接近”作為輸入(或索引)“接近”某個值的值。 `limit.py` ```py #!/usr/bin/env python from sympy import sin, limit, oo from sympy.abc import x l1 = limit(1/x, x, oo) print(l1) l2 = limit(1/x, x, 0) print(l2) ``` 在示例中,我們具有`1/x`函數。 它具有左側和右側限制。 ```py from sympy import sin, limit, sqrt, oo ``` `oo`表示無窮大。 ```py l1 = limit(1/x, x, oo) print(l1) ``` 我們計算`1/x`的極限,其中`x`接近正無窮大。 ```py $ limit.py 0 oo ``` 這是輸出。 ## SymPy 矩陣 在 SymPy 中,我們可以使用矩陣。 矩陣是數字或其他數學對象的矩形數組,為其定義了運算(例如加法和乘法)。 矩陣用于計算,工程或圖像處理。 `matrix.py` ```py #!/usr/bin/env python from sympy import Matrix, pprint M = Matrix([[1, 2], [3, 4], [0, 3]]) print(M) pprint(M) N = Matrix([2, 2]) print("---------------------------") print("M * N") print("---------------------------") pprint(M*N) ``` 該示例定義了兩個矩陣并將它們相乘。 ```py $ matrix.py Matrix([[1, 2], [3, 4], [0, 3]]) ?1 2? ? ? ?3 4? ? ? ?0 3? --------------------------- M * N --------------------------- ?6 ? ? ? ?14? ? ? ?6 ? ``` 這是輸出。 ## SymPy 繪圖 SymPy 包含用于繪圖的模塊。 它基于 Matplotlib 構建。 `simple_plot.py` ```py #!/usr/bin/env python # uses matplotlib import sympy from sympy.abc import x from sympy.plotting import plot plot(1/x) ``` 該示例繪制了`1/x`函數的二維圖。 這是 SymPy 教程。 您可能也對以下相關教程感興趣: [PrettyTable 教程](/python/prettytable/), [Matplotlib 教程](/python/matplotlib/), [Python 教程](/lang/python/)。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看