【Python】用sympy判断函数的单调性和极值

news2024/9/20 15:04:51

文章目录

    • 单调性和奇异性
    • 连续性、极值、周期、不动点

单调性和奇异性

sympy.calculus.singularities提供了4个关于单调性判定的函数,分别是

is_decreasing(expr, interval, symbol=None)
is_increasing(expr, interval, symbol=None)
is_strictly_decreasing(expr, interval, symbol=None)
is_strictly_increasing(expr, interval, symbol=None)

expr为目标函数的表达式;interval为判定的定义域范围,默认是全
体实数;symbol为表达式中的自变量,默认为None

下面以is_decreasing为例,查看一下 1 x 2 − 3 x \frac{1}{x^2-3x} x23x1的单调性

import sympy
from sympy import is_decreasing
from sympy import Interval, oo
from sympy.abc import x, y
expr = 1/(x**2 - 3*x)
is_decreasing(expr)  # False
is_decreasing(expr, Interval.open(1.5, 3))    # True
is_decreasing(expr, Interval.Lopen(3, oo))    # True
is_decreasing(expr, Interval.Ropen(-oo, 1.5)) # False
# 绘制函数图像
sympy.plot(expr, xlim=(-5,5), ylim=(-10,10))

图像如下

在这里插入图片描述

从图像中可以看到,当 x ∈ { 0 , 3 } x\in\{0,3\} x{0,3}时存在奇点。sympy中,通过函数singularities可以查找函数的奇点

from sympy import singularities
singularities(expr, x) # 返回 {0, 3}
singularities(expr, x, Interval.Lopen(3,5)) # 返回EmptySet

函数monotonicity_helper可以判定单调性,而不管其递增或递减。

monotonicity_helper(expr, predicate, interval=Reals, symbol=None)

连续性、极值、周期、不动点

sympy.calculus.util中提供了一系列关于连续性、极值、周期性、不动点的判定函数

continuous_domain用于获取连续区间,function_range返回函数值域,示例如下

>>> from sympy.calculus.util import function_range, continuous_domain
>>> function_range(expr, x, domain=sympy.Reals)
Union(Interval(-oo, -4/9), Interval.open(0, oo))
>>> continuous_domain(expr, x, domain=sympy.Reals)
Union(Interval.open(-oo, 0), Interval.open(0, 3), Interval.open(3, oo))

结合图像以及表达式可知,函数 f ( x ) = 1 x 2 − 3 x f(x)=\frac{1}{x^2-3x} f(x)=x23x1值域的确被分为两个部分,正式function_range返回的 ( − ∞ , − 9 4 ) ∪ ( 0 , + ∞ ) (-\infty,-\frac{9}{4})\cup(0,+\infty) (,49)(0,+);而其连续区间则被分成三个部分,分别在 x = 0 , x = 3 x=0, x=3 x=0,x=3处中断。

函数maximum, minimum可以查找函数的最值,stationary_points可查找驻点,就是导数为0的店,这三个函数的domain均默认为Reals

>>> from sympy.calculus.util import maximum, minimum, stationary_points
>>> maximum(expr, x)
oo
>>> minimum(expr, x)
-oo
>>> stationary_points(expr, x)
{3/2}
>>> minimum(x**2+2*x, x)
-1

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/358831.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【期末复习】例题讲解Dijkstra算法

使用场景Dijkstra算法用于解决单源点最短路径问题,即给一个顶点作为源点,依次求它到图中其他n-1个顶点的最短距离。例题讲解Dijkstra算法将图中所有顶点分成两部分,第一部分是已知到源点最短距离的顶点Known(K),第二部分是不知道到…

教你如何搭建人事OA-考勤管理系统,demo可分享

1、简介1.1、案例简介本文将介绍,如何搭建人事OA-考勤管理。1.2、应用场景可查看员工考勤的数据统计,可进行考勤签到、补签、请假、加班、调休等流程。2、设置方法2.1、表单搭建1)新建表单【考勤签到】,字段设置如下:名…

VS Code Spring 全新功能来了!

大家好,欢迎来到我们 2023 年的第一篇博客!我们想与您分享几个与 Spring 插件、代码编辑和性能相关的激动人心的更新,让我们开始吧! Spring 插件包的新入门演练 演练(Walkthrough) 是一种多步骤、向导式的体…

跨境进口税费计算

以前搞跨境进口的时候,需要计算商品税费。税费计算比较复杂,把信息整理了一下,分享给大家。 一、基础知识 1.1税费类型 BBC/BC:跨境电商进口综合税 关税*0 (消费税进口环节增值税)*70%CC:行邮税,税额低…

Vue3电商项目实战-商品详情模块1【01-商品详情-基础布局、02-商品详情-渲染面包屑、03-商品详情-图片预览组件、04-商品详情-图片放大镜】

文章目录01-商品详情-基础布局02-商品详情-渲染面包屑03-商品详情-图片预览组件04-商品详情-图片放大镜01-商品详情-基础布局 目的:完成商品详情基础布局,路由配置,搭好页面架子。 大致步骤: 准备组件结构容器提取商品推荐组件且…

十二月券商金工精选

✦研报目录✦ ✦简述✦ 按发布时间排序 华宝证券 主动暴露的得与失—从Barra框架到私募指增因子分析方法 发布日期:2022-12-01 关键词:股票、Barra、风险暴露、指数增强 主要内容:本文针对私募指数增强产品的策略流程,设计…

<JVM上篇:内存与垃圾回收篇>11 - 垃圾回收相关算法

对象存活判断 在堆里存放着几乎所有的 Java 对象实例,在 GC 执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为己经死亡的对象,GC 才会在执行垃圾回收时,释放掉其所占用的内存…

vue项目开发(vue2与vue3对比)

vue中使用typescrip 初与typescrip的约定情愫:最近项目要用到vue3,所以打算使用typescrip语法! 安装: npx tyarn add typescript vue/cli-plugin-typescript -D npx tsc --init修改 tsconfig.json: {"compilerOptions&quo…

LVS中的keepalived高可用

文章目录前言一、Keepalived简介二、keepalived工作原理三、配置文件四、实验1.某台Real Server down2.LVS本身down实验过程:五、代码详细演示整体过程调度器安装软件、设置测试keepalived对后端RS的健康检测backup服务主机设置前言 一、Keepalived简介 Keepalived是…

ubuntu18.4安装Redmine软件

1.github网站下载Redmine4.2.0的安装包,如下图所示: https://github.com/redmine/redmine/releases/tag/4.2.0 图1 github网站下载redmine4.2.0安装包2.拷贝Redmine4.2.0的安装包到ubuntu工作目录,并解压缩,如下所示:…

Springboot前后端分离国际化实现-chatgpt

前言 Springboot国际化可以帮助使用者在不同语言环境中构建应用程序,这样应用程序可以有效地适应不同语言文化背景下的用户需求。 此外,Springboot国际化也可以方便多语言应用程序重用和维护,从而减少了系统部署的时间成本和维护的费用。 要实…

医疗方案 | 星辰天合入选“2022智慧新医信优秀解决方案”

近日,由 HC3i数字医疗网主办的《数字化转型驱动下的医院高质量发展论坛》暨 2022 智慧新医信优秀解决方案发布仪式在线上召开。XSKY星辰天合的“智慧医疗软件定义数据基础设施”解决方案成功入选 2022 智慧新医信优秀解决方案,。此次论坛由 HC3i 数字医疗…

会利用信息差赚钱的人才是聪明人

毕业后找不到工作,穷到只剩下时间,大小做了20多份副业兼职,终于找到了可靠的渠道, 我是专科生,学历不好,专业拉胯。毕业后,我找了两三份工作。要么工资太低,只能交房租,…

javaFx实现鼠标穿透画布,同时操作画布和桌面,背景透明,类似ppt批注

一、功能需要由来和大致效果 今天,我们要用javaFx来实现一个鼠标穿透画布的功能,该需求来自于在我们的javaFx桌面应用中,需要实现一个悬浮的桌面侧边工具栏,在工具栏中有画笔绘制,批注的功能,能够实现在任何…

【NLP】一种联合关系抽取模型——TPLinker

背景 前文介绍了【NLP】一种基于联合方式的三元组抽取模型——CasRel.这个模型虽然实体和关系同时训练,但本质上来说还是分阶段的预测实体和关系,依然存在暴露偏差问题。下面介绍一个解决暴露偏差的模型:TPLinker,论文地址&#…

【OJ】A+B=X

📚Description: 数列S中有n个整数,判断S中是否存在两个数A、B,使之和等于X。 ⏳Input: 第一行为T,输入包括T组测试数据。 每组数据第一行包括两个数字n和X,第二行有n个整数,表示数列S,(1&l…

Linux-0.11 文件系统inode.c详解

Linux-0.11 文件系统inode.c详解 Linux-0.11中使用的文件系统为minix, inode.c中的函数和该文件系统强关联。 inode节点在文件系统中与文件相关联,一个文件的就由一个inode来管理,这个inode节点将记录文件的权限,大小&#xff0…

SpringCloud之Nacos

Nacos1. Nacos的概念2. Nacos的作用3. Nacos的下载与安装4. Nacos Client 服务端的搭建5. Nacos 的namespace 和 group6. 配置中心7. 注意点1. Nacos的概念 Nocos 是 SpringCloudAlibaba架构中最重要的组件Nacos 是一个更易于帮助构建云原生应用的动态服务发现、配置和服务挂你…

pytorch搭建手写数字识别LeNet-5网络,并用tensorRT部署

pytorch搭建手写数字识别LeNet-5网络,并用tensorRT部署前言1、pytorch 搭建LeNet-5,并转为ONNX格式1.1 LeNet-5网络介绍1.2 ONNX(Open Neural Network Exchange)介绍1.3 pytorch 搭建 LeNet5网络2、将onnx转为tensorRT2.1 tensorRT 介绍2.1 onnx 转为 te…

C++面向对象(下)

文章目录前言1.再谈构造函数1.初始化列表2.explicit关键字2. static成员1.概念3.友元1.概念2.友元函数3.友元类4. 内部类5.匿名对象6.编译器优化7.总结前言 本文是主要是将之前关于C面向对象中的一些没有归纳到的零星知识点进行补充,同时对C中的面向对象简单收个尾…