项目场景:

几日前,在研究某双核期刊的某篇论文时,发现论文上的函数图像绘制得似乎有些不精确。原函数方程为:(0.2045*y)^2+(3/4*y^3-2*x*y)^2-0.45^2=0。论文原文中函数图像如下图:


问题描述

可以很明显地看出,极值点附近的曲线显得很不平滑,根据论文作者提供的数据,该极值点的横坐标X=1.62335。


原因分析:

初步分析可能是作者绘图过程中,对函数的迭代次数设置得过低导致的。


解决方案:

于是我计划利用Python自己绘制一遍函数图像,并找到极值点。目前中文网上关于隐函数图像绘制的代码有博客可以借鉴,但是没有关于如何得到隐函数极值点的相关博客,求极值的内容基本围绕显函数展开。接下来我的代码将展示如何用Python绘制隐函数(0.2045*y)^2+(3/4*y^3-2*x*y)^2-0.45^2=0的图像,并找到该函数在X的取值范围为[-2,2]时的极大值点。代码如下:

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.pyplot import MultipleLocatoriteration=500 # 迭代次数
x=np.linspace(-2,2,iteration)
y=np.linspace(0,2.5,iteration)x,y=np.meshgrid(x,y) # 生成x,y轴网
z=(0.2045*y)**2+(3/4*y**3-2*x*y)**2-0.45**2 # 隐函数方程# 设置刻度
x_major_locator=MultipleLocator(0.5) # 0.5表示x轴一格的值为0.5
y_major_locator=MultipleLocator(0.2)
ax=plt.gca() # ax为两条坐标轴的实例
ax.xaxis.set_major_locator(x_major_locator)
ax.yaxis.set_major_locator(y_major_locator)# 画图
test=plt.contour(x,y,z,0)points = test.allsegs[1][0] # 组成这条函数图像的每个点
sorted_list = sorted(points, key=lambda x: x[1], reverse=True) # 对这些点按照点的y坐标
x_max=sorted_list[0][0] # 极值点x坐标                           # 降序排列
y_max=sorted_list[0][1] # 极值点y坐标
print(f"x_max={sorted_list[0][0]}\n",f"y_max={sorted_list[0][1]}")
plt.scatter(x_max, y_max, c='r', marker='o') # 在点(x_max, y_max)上绘制红色圆点
plt.annotate(f'X coordinate of extremum:{x_max},\nY coordinate of extremum:{y_max},\nIteration:{iteration}', xy=(x_max, y_max), xytext=(x_max-3.5, y_max+0.35),arrowprops=dict(facecolor='black', shrink=0.05),xycoords='data') # 在点上添加文字说明,其中 xytext 代表文字说明和点xy的距离plt.show()

上文代码中,我设置的迭代次数为500次。为了分析出论文作者,可能设置的迭代次数,我分别迭代了71,72,73,74,75,500,5000,10000次,并分析这些次数下极大值的X,Y坐标变化规律。输出的图像分别如下:

 

分析可知:论文作者的X,Y迭代次数不一样,因为我设定的X,Y迭代次数一致,并且迭代次数在74,75次时,X的坐标分别为1.61644和1.67567,而作者提供的极值点X坐标为1.62335。即,作者设定的X,Y的迭代次数最大值应该不超过100左右(包括X的迭代次数小于100,Y迭代次数远远大于100的情况,这都会使得极值点的X坐标位于[1.61644,1.67567]左右)。如果要保证精确到小数点后四位,那么至少要迭代5000次左右。

结束语:

该论文将该方程用于描述周期性风险的反馈控制模型,但是对方程所描述的函数的极值点求解显得不那么严谨。风险管控本身是一件周密而严肃的管理活动,尤其是对描述风险管理的模型应该更加严格的校核、审查。该论文通过仅仅迭代百次不到的函数描述模型,多少有些不妥。

Python 怎么利用Python绘制二元高次隐函数的函数图像及其极值点——以某双核论文模型方程为例相关推荐

  1. Python:利用python编程实现三维图像绘制展示(六面体旋转、三维球柱状体、下雪场景等)

    Python:利用python编程实现三维图像绘制展示(六面体旋转.三维球柱状体.下雪场景等) 目录 利用python编程实现三维图像绘制展示(六面体旋转.三维球柱状体.下雪场景等) 1.实现六面体旋 ...

  2. Python:利用python语言绘制多个子图经典案例、代码实现之详细攻略

    Python:利用python语言绘制多个子图经典案例.代码实现之详细攻略 目录 利用python语言绘制多个子图代码实现.经典案例 1.绘制多个子图框架 多个子图绘制的经典案例 1.绘制多个直方图 ...

  3. Python:利用python编程将上海十六区,2020年5月份房价实时地图(数据来源房天下)进行柱状图、热图可视化

    Python:利用python编程将上海十六区,2020年5月份房价实时地图(数据来源房天下)进行柱状图.热图可视化 目录 上海十六区,2020年5月份房价实时地图(数据来源房天下)可视化 雷达图.柱 ...

  4. python怎么实现检验_[python skill]利用python实现假设性检验方法

    [python skill]利用python实现假设性检验方法 刀尔東 2018-08-03 09:19:13 1244 收藏 2 版权 hello,大噶好,最近新学习了利用python实现假设性检验 ...

  5. 【Python】利用python进行数据分析——以新型冠状病毒疫情为例

    [Python]利用python进行数据分析--以新型冠状病毒疫情为例 重要说明 只提交该文档这一个文件,做完后提交到学习通"结课大作业"中. 1. 文件命名: 必须以学号-姓名- ...

  6. 【Python】利用Python实现精准三点定位(经纬度坐标与平面坐标转换法求解)

    [Python]利用Python实现精准三点定位(经纬度坐标与平面坐标转换法求解) 众所周知,如果已知三个点的坐标,到一个未知点的距离,则可以利用以距离为半径画圆的方式来求得未知点坐标. 如果只有两个 ...

  7. 用python实现星期的转换_[Python实践] 利用python实现的日期映射礼拜X的简单实现...

    [Python实践] 利用python实现的日期映射礼拜X的简单实现 2018年12月19日 最近在处理分析数据的时候,突发奇想试着从用户离职的日期上判断是主动辞职还是被动解雇?数据的背景是美国某企业 ...

  8. Python中利用Matplotlib绘制多图并合并展示

    有个需求就是利用Matplotlib画几个像模像样的统计图然后合并在一张图中,因为此前很少用这方面的东西,所以折腾了不少时间,今天介绍一下. 1.subplot多合一 其实,利用python 的mat ...

  9. python pso_利用python实现PSO算法优化二元函数

    python实现PSO算法优化二元函数,具体代码如下所示: import numpy as np import random import matplotlib.pyplot as plt from ...

最新文章

  1. 值得关注的未来技术,增强现实
  2. gamma分布 pytorch_Probability distributions - torch.distributions
  3. git cherry-pick
  4. 读博文学Android
  5. 机器学习导论�_机器学习导论
  6. 常见DDoS技术方法和对应防御措施
  7. HTTP 相应头相关
  8. 蛋白粉有什么作用?搭配这些食物帮助提升免疫力!
  9. ole db 访问接口 sqlncli 无法启动分布式事务_分布式锁真的安全吗?
  10. c#连mysql的latin1编码乱码问题
  11. MTK 驱动开发(32)---Sensor 移植及调试2
  12. 获取打印机分辨率_喵喵机体验——爱不释手的错题打印机
  13. 积水成渊:用github gist收藏你的代码片段
  14. ESP8266+Blinker+小爱同学舵机控制开关
  15. mysql中更改数据库名字_【实操篇】_MySQL如何更改数据库名字?
  16. 【案例12】NC65一直在登录页面转圈,耗时30min以上
  17. 三面阿里,有惊无险成功拿到offer定级P7,只能说是真的难
  18. 如何做好移动端图表设计
  19. 清华、北大、上交大、哈工大、中山大学5位同学眼中的开源
  20. vue高德单条(可批量)路线规划+单条(可批量)路线带途径节点marker+单条(可批量)路线分段渲染各颜色

热门文章

  1. CSDN下载积分获取途径
  2. 使用BC进行数字信封操作
  3. 给力!安卓和QQ物联课程都发布新章节
  4. Android 判断app是否在前台还是在后台运行
  5. Ty-Mysql函数笔记
  6. 软件项目管理案例教程第4版课后习题第一章
  7. 影视网站设计报告代码MySQL_基于PHP的视频网站的设计与实现(MySQL)(含录像)
  8. 小米重要通知android,Android开发笔记——小米通知‘坑’ app的通知一直显示在不重要通知里 ......
  9. 论文阅读笔记《Self-Supervised Hypergraph Convolutional Networks for Session-based Recommendation》
  10. 免校准的电量计量芯片_具有免校准和带漏电检测功能的计量芯片HLW8112