python符号求导
生活随笔
收集整理的這篇文章主要介紹了
python符号求导
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
https://blog.csdn.net/m0_46149708/article/details/109024564
from sympy import *
x, y, z = symbols('x, y, z') # 定義變量x,y,z
f = z**x + ln(x*y) + sin(x*y) + tan(x**z) # 定義目標函數
print('目標函數:f=',f)
print('------')# 對x求偏一介導
dx = diff(f, x)
print('對x求一階偏導:dx=', dx)# 對x求偏二介導
print('------')
dx_2 = diff(f, x, 2)
print('對x求二階偏導:dx_2=', dx_2)# 先對x求導再對y求導
print('------')
dx_dy = diff(dx, y)
print('先對x求導再對y求導:dx_dy=', dx_dy)目標函數:f= z**x + log(x*y) + sin(x*y) + tan(x**z)
------
對x求一階偏導:dx= y*cos(x*y) + z**x*log(z) + x**z*z*(tan(x**z)**2 + 1)/x + 1/x
------
對x求二階偏導:dx_2= -y**2*sin(x*y) + z**x*log(z)**2 + 2*x**(2*z)*z**2*(tan(x**z)**2 + 1)*tan(x**z)/x**2 + x**z*z**2*(tan(x**z)**2 + 1)/x**2 - x**z*z*(tan(x**z)**2 + 1)/x**2 - 1/x**2
------
先對x求導再對y求導:dx_dy= -x*y*sin(x*y) + cos(x*y)但是,我發現個問題:在sympy模塊中沒有反三角函數。如果我用numpy去操作,則會報錯。from sympy import *
import numpy as np
x = symbols('x') # 定義變量x
f = np.arcsin(x) # 定義目標函數AttributeError Traceback (most recent call last)
AttributeError: 'Symbol' object has no attribute 'arcsin'The above exception was the direct cause of the following exception:TypeError Traceback (most recent call last)
<ipython-input-5-8d85f13312a8> in <module>3 4 x, y, z = symbols('x, y, z') # 定義變量x,y,z
----> 5 f = np.arcsin(x) # 定義目標函數TypeError: loop of ufunc does not support argument 0 of type Symbol which has no callable arcsin method2.解方程
2.1 多元一次方程"""
4*x + y + z + 2 = 0
2*x - y + z = 0
x - y + z - 1 = 0
"""from sympy import *
x, y, z = symbols('x, y, z') # 定義變量x,y,z
f1 = 4*x + y + z + 2
f2 = 2*x - y + z
f3 = x - y + z - 1
result = solve([f1, f2, f3], [x, y, z])result: {x: -1, y: 0, z: 2}"""
x^2 + y^(1/2) - 17 = 0
x^(1/2) 1 y^3 - 2 = 0
"""from sympy import *
x, y = symbols('x, y')
f1= x**2 + sqrt(y) - 17
f2 = sqrt(x) - y**3 - 1
result = solve([f1, f2], [x, y])
print("result:", result)result: {x: 4, y: 1}上面這個方程是我在定好答案的情況下編的,但用python運行了好長時間都沒運行出來,感覺電腦都快燒了😂。我就把這個答案寫上去了,不知道有沒有其它答案,大家可以自己運行下😁。
2.3 微分方程"""
f(x)'' - 2f(x)' + 2f(x) = cos(x)
"""from sympy import *
f = symbols('f', cls=Function)
x = symbols('x')
eq = Eq(f(x).diff(x, x) - 2*f(x).diff(x) + 2*f(x), cos(x))
print(dsolve(eq, f(x)))Eq(f(x), (C1*sin(x) + C2*cos(x))*exp(x) - 2*sin(x)/5 + cos(x)/5)
總結
以上是生活随笔為你收集整理的python符号求导的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: trinosql_prestosql问题
- 下一篇: 时间序列小结