python数学建模--sympy三维图像绘制

这篇具有很好参考价值的文章主要介绍了python数学建模--sympy三维图像绘制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题引出

在求解二元函数最值的时候,我们不知道自己经过若干个步骤求出的结果是否正确,那么我们该怎么办呢?一种办法就是将这个函数的图像绘制出来
三维图像的作用在于,它不仅能让我们直观的看出待求二元函数在指定区间内的形状,而且对于我们求得的最值以及求极值的步骤有着重要的指导意义

库选择与绘制准备

matplotlib是一个比较基础的专业绘图库,它也可以用来绘制三维图像,但是需要额外导入mpl_toolkits库,在前段时间学习sympy库时注意到了它里面的plotting子模块,里面封装了若干个绘图类,其中的一个plot3d类可以实现三维绘图,而且调用十分方便

注意,sympy中的绘图类仍然使用matplotlib库提供的后端支持,也就是说使用sympy绘图类需要首先安装matplotlib

plot3d类api简介

plot3d(*args, show=True, **kwargs)

图像绘制与参数说明

同一坐标系内绘制单个图像

plot3d(expr, range_x, range_y, **kwargs)
参数 描述
expr 函数表达式
range_x,range_y 变量x,y的取值区间(默认区间为[-10,10])

在同一坐标系内绘制双图像(两个二元函数)

plot3d(expr1,expr2, range_x, range_y, **kwargs)

同一坐标系内绘制多个图像(多个二元函数)

plot3d((expr1, range_x, range_y),(expr2, range_x, range_y,) ,...,**kwargs)

关键字参数

参数名 数据类型 描述
nb_of_points_x int 在该参数处对x取值范围均匀采样
nb_of_points_y int 在该参数处对y取值范围均匀采样
surface_color Function which returns a float 绘出图像的颜色
title str 图像标题
size (float, float) 图像尺寸

绘图举例

下面例子来自sympy官网

# 单图像
from sympy import symbols
from sympy.plotting import plot3d
x, y = symbols('x y')
plot3d(x*y, (x, -5, 5), (y, -5, 5))

运行结果
python数学建模--sympy三维图像绘制

# 双图像
plot3d(x*y, -x*y, (x, -5, 5), (y, -5, 5))

运行结果
python数学建模--sympy三维图像绘制

# 多图像
plot3d((x**2 + y**2, (x, -5, 5), (y, -5, 5)),
    (x*y, (x, -3, 3), (y, -3, 3)))

运行结果
python数学建模--sympy三维图像绘制

绘图的案例

读完了plot3d的api,我们尝试解决一些实际问题

三角函数

绘制 y = s i n x 2 + y 2 , x ∈ [ − 5 , 5 ] , y ∈ [ − 5 , 5 ] 的图像,并找出其最小值对应的坐标 绘制y=sin\sqrt{x^2+y^2},x\in [-5,5],y\in [-5,5]的图像,并找出其最小值对应的坐标 绘制y=sinx2+y2 ,x[5,5],y[5,5]的图像,并找出其最小值对应的坐标

代码实现

from sympy import symbols
from sympy.plotting import plot3d
from sympy import *
x, y = symbols('x y')
plot3d(sin(sqrt(x**2+y**2)),(x, -5, 5), (y, -5, 5))

运行结果
python数学建模--sympy三维图像绘制

注意看图像窗口的右上角,它代表三维图像上的点,会随着鼠标的指向而发生变化,虽然sympy绘图类不会返回给我们精确地函数最值,但是我们可以通过观察图像、拖动图像来找到函数最值得大概位置,这就是绘制出图像的意义所在

另一个三角函数

实际上,这篇博客的灵感来源于笔者最近在学习的模拟退火算法,该算法的其中一个应用方向是求带约束的二元函数极值,由于参数设置等的不同,导致对于同一个二元函数运行同样的程序,每次得到的函数极值各不相同,但是笔者也不知道哪次得到的极值是正确的,然后看到了这篇博客

用模拟退火算法求解带约束的二元函数极值问题之二:用MATLAB绘图验证

实际上很多时候,可视化能够解决很多想象不到的问题,于是笔者也想要尝试一下使用python进行可视化,这个例子中仍然使用原博客中的二元函数

f ( x , y ) = 6 x 2 + x 2 + y 2 + 5 s i n ( x ) + 3 c o s ( y ) + 50 x ∈ [ − 5 , 5 ] , y ∈ [ − 5 , 5 ] f(x,y)=\frac{6x}{2+x^2+y^2}+5sin(x)+3cos(y)+50\\x\in[-5,5],y\in[-5,5] f(x,y)=2+x2+y26x+5sin(x)+3cos(y)+50x[5,5]y[5,5]

代码实现

from sympy import symbols
from sympy.plotting import plot3d
from sympy import *
x, y = symbols('x y')
expr=6*x/(2+x**2+y**2)+5*sin(x)+3*cos(y)+50
plot3d(expr,(x, -5, 5), (y, -5, 5))

运行结果
python数学建模--sympy三维图像绘制

从上面的图中我们可以看出该二元函数的函数值范围大约在[42.5,60]之间,这就为我们的算法求解提供了一个方向文章来源地址https://www.toymoban.com/news/detail-457843.html

到了这里,关于python数学建模--sympy三维图像绘制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数学建模血管的三维重建

    血管的三维重建 断面可用于了解生物组织、器官等的形态。例如,将样本染色后切成厚约1m m的切片,在显微镜下观察该横断面的组织形态结构。如果用切片机连续不断地将样本切成数十、成百的平行切片,可依次逐片观察。根据拍照并采样得到的平行切片数字图象,运用计

    2024年02月16日
    浏览(32)
  • 数学建模--Radar图绘制

       最近在数学建模中碰见需要绘制Radar图(雷达图)的情况来具体分析样本的各个特征之间的得分与优劣关系,这样的情况比较符合雷达图的使用场景,一般来说,雷达图适用于展示多个维度的数据,并在一个平面上直观地呈现出不同维度的变化趋势,比较适用的场合如下:

    2024年01月23日
    浏览(25)
  • MATLAB数学建模:数据图形可视化-三维绘图函数

    在 MATLAB 中, 我们可使用函数 surf 和 surfc 绘制三维曲面图. 调用格式如下: 以矩阵 ZZZ 所指定的参数创建一个渐变的三维曲面. 坐标 $x = 1:n, y = 1:m, $ 其中 [m,n]=size(Z)[m,n] = size(Z)[m,n]=size(Z) 以 ZZZ 确定的曲面高度和颜色, 按照 X,YX,YX,Y 形成的格点矩阵, 创建一个渐变的三维曲面. X,

    2024年02月06日
    浏览(42)
  • 三维装箱问题 2022长三角高校数学建模A题

    三维装箱问题是NPC问题,可以考虑用启发式算法求解,但无法得到最优解 对每个物品判断能否被装 保证每个物品翻转成长=宽=高 能否被袋装 同时满足两个条件: 对最大号袋子而言 袋子长+袋子高≥物品长+物品高; 袋子宽+袋子高≥物品宽+物品高 能否被箱装 对最大号箱子而

    2024年02月11日
    浏览(34)
  • Matlab数学建模常用算法及论文插图绘制模板资源合集

    最近有很多朋友咨询我关于Matlab论文插图绘制方面的问题。 问了一下,这些朋友中,除了写博士论文的, 大部分都是要参加美赛的 。 这让我突然想起, 自己曾经为了水论文, 购买过一批Matlab数学建模的资料 。 想了想,自己应该也用不到了,索性借此机会,拿出来分享给

    2024年02月16日
    浏览(33)
  • 2022 数学建模B题成品论文 参考文章 含全部建模 步骤 数学模型 图像

    完整见https://mianbaoduo.com/o/bread/mbd-Y5eVm5xw 无人机遂行编队飞行中的纯方位无源定位 摘要 一、问题重述 1.1 问题背景 由于无人机集群在遂行编队飞行时, 应尽可能的避免外界干扰, 因此需要尽可能的保持电磁静默减少电磁波信号的发射.为保持编队队形, 拟采用纯方位无源

    2024年02月08日
    浏览(37)
  • chatgpt赋能python:Python和数学建模:如何参与数学建模比赛

    数学建模比赛通常是学术界和工业界一起组织的比赛,旨在让学生掌握实际问题的建模方法以及如何处理数据、分析和解决实际问题。Python是一个流行的编程语言,广泛应用于数据科学和数学建模领域,因其简单易学、高效和可扩展性而备受好评。在本文中,我们将介绍如何

    2024年02月09日
    浏览(29)
  • 本论文以图像识别为研究对象,采用数学建模方法,探索图像识别中的问题并提出解决方案。

    第一部分:问题描述 随着数字图像的广泛应用,图像识别技术逐渐成为热门研究领域。但是,在实际应用中,由于图像的复杂性和噪声的存在,图像识别的准确性和效率仍然存在一定的挑战。因此,本论文旨在研究图像识别中存在的问题,提出准确率和效率提高的解决方案。

    2024年02月10日
    浏览(28)
  • 用Python进行数学建模(二)

    微分方程是描述系统的状态随时间和空间演化的数学工具。物理中许多涉及变力的运动学、动力学问题,如空气的阻力为速度函数的落体运动等问题,很多可以用微分方程求解。微分方程在化学、工程学、经济学和人口统计等领域也有广泛应用。 具体来说,微分方程是指含有

    2024年02月16日
    浏览(26)
  • Python 数据正向化 (数学建模)

    正向化:指将指标转化为越大越好,例如求最小值,乘以符号转化为求最大值 注:x为numpy数组 极小型指标正向化: 中间型指标正向化(例如PH值需要越接近7越好,xbest=7.0,转化为越大越好): 区间型指标正向化 使用示例 输出结果 [0.  0.5 1.  0.5 0. ]

    2024年02月17日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包