Python实现分段函数求导+绘制函数曲线

代码如下:

python 复制代码
import sympy as sp
import numpy as np
import matplotlib.pyplot as plt
from sympy.utilities.lambdify import lambdify

# 定义符号变量
x = sp.symbols('x')
# expr = sp.Piecewise((0,0< x <= 5), (1, x > 5))
# 定义分段原函数
#---------------------------------下面是原函数和绘图区间定义-----------------------------------------------------
piecewise_function = sp.Piecewise((x**2, x < 0),
                                 (2*x + 1, sp.And(x>=0 , x<1)),
                                 (-x + 2, x >= 1))
left=-5
right=3
x_values = np.linspace(left, right, 1000)
#--------------------------------------------------------------------------------------
def derivative_values(piecewise_function):
    # 计算分段函数的导数
    derivative_piecewise = sp.diff(piecewise_function, x)    
    # 打印导数表达式
    print(derivative_piecewise)
    # 将导数表达式转换为lambda函数以方便数值计算
    derivative_func = lambdify(x, derivative_piecewise, 'numpy')
    # 创建x值向量并计算导数值
    derivative_values = derivative_func(x_values)

    return derivative_values
    
    
#-----------------------------------------绘制图像定义--------------------------------
plt.figure(figsize=(8, 6))
plt.plot(x_values, derivative_values(piecewise_function), label='Derivative of Piecewise Function', lw=2)
plt.xlabel('x')
plt.ylabel('dy/dx')
plt.legend()
plt.grid(True)
plt.show()

上述代码中注意,(2*x + 1, sp.And(x>=0 , x<1)),

整理表示的是在0≤x<1的区间中,要使用sympy.And函数来表示,才能让代码顺利运行。

相关推荐
iAm_Ike1 天前
Go 中自定义类型与基础类型间的显式类型转换详解
jvm·数据库·python
iuvtsrt1 天前
Golang怎么实现方法集与接口的匹配_Golang如何理解值类型和指针类型实现接口的区别【详解】
jvm·数据库·python
chao1898441 天前
基于 SPEA2 的多目标优化算法 MATLAB 实现
开发语言·算法·matlab
赏金术士1 天前
Kotlin 习题集 · 高级篇
android·开发语言·kotlin
旦莫1 天前
AI驱动的纯视觉自动化测试:知识库里应该积累什么知识内容
人工智能·python·测试开发·pytest·ai测试
楼兰公子1 天前
buildroot 在编译rust时裁剪平台类型数量的方法
开发语言·后端·rust
知识领航员1 天前
蘑兔AI音乐深度实测:功能拆解、实测表现与适用场景
java·c语言·c++·人工智能·python·算法·github
吴声子夜歌1 天前
Go——并发编程
开发语言·后端·golang
ooseabiscuit1 天前
Laravel4.x:现代PHP框架的奠基之作
java·开发语言·php
c1s2d3n4cs1 天前
Qt模仿nlohmann::json进行序列化和反序列化
开发语言·qt·json