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 method


2.解方程
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)

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值