python符号求导
生活随笔
收集整理的這篇文章主要介紹了
python符号求导
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
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) # 定義目標(biāo)函數(shù)
print('目標(biāo)函數(shù):f=',f)
print('------')# 對(duì)x求偏一介導(dǎo)
dx = diff(f, x)
print('對(duì)x求一階偏導(dǎo):dx=', dx)# 對(duì)x求偏二介導(dǎo)
print('------')
dx_2 = diff(f, x, 2)
print('對(duì)x求二階偏導(dǎo):dx_2=', dx_2)# 先對(duì)x求導(dǎo)再對(duì)y求導(dǎo)
print('------')
dx_dy = diff(dx, y)
print('先對(duì)x求導(dǎo)再對(duì)y求導(dǎo):dx_dy=', dx_dy)目標(biāo)函數(shù):f= z**x + log(x*y) + sin(x*y) + tan(x**z)
------
對(duì)x求一階偏導(dǎo):dx= y*cos(x*y) + z**x*log(z) + x**z*z*(tan(x**z)**2 + 1)/x + 1/x
------
對(duì)x求二階偏導(dǎo):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
------
先對(duì)x求導(dǎo)再對(duì)y求導(dǎo):dx_dy= -x*y*sin(x*y) + cos(x*y)但是,我發(fā)現(xiàn)個(gè)問題:在sympy模塊中沒有反三角函數(shù)。如果我用numpy去操作,則會(huì)報(bào)錯(cuò)。from sympy import *
import numpy as np
x = symbols('x') # 定義變量x
f = np.arcsin(x) # 定義目標(biāo)函數(shù)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) # 定義目標(biāo)函數(shù)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}上面這個(gè)方程是我在定好答案的情況下編的,但用python運(yùn)行了好長時(shí)間都沒運(yùn)行出來,感覺電腦都快燒了😂。我就把這個(gè)答案寫上去了,不知道有沒有其它答案,大家可以自己運(yùn)行下😁。
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)
總結(jié)
以上是生活随笔為你收集整理的python符号求导的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: trinosql_prestosql问题
- 下一篇: 时间序列小结