二元函数图像3d绘制(Python)

1.简单的二元函数

举例:f(x,y)= sin x +cosy,f(x,y)=\frac{x+y}{2}等等较易实现,用一个函数,并直接返回表达式即可。

def func(x, y):return x*y*(x+y)/2

再分别定义x,y的范围与步长,并设置角度、颜色坐标即可。以函数

f(x,y) = xy\frac{x+y}{2}

为例,以下是实现代码,可供参考:

import mathfrom matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import mpl_toolkits.mplot3d
from matplotlib import pyplot as plt
from matplotlib import cmfigure = plt.figure()
ax = Axes3D(figure)
X = np.arange(0.0,1.0,0.01)
Y = np.arange(0.0,1.0,0.01)X,Y = np.meshgrid(X,Y)
# 定义二元函数
def func(x, y):return x*y*(x+y)/2
Z = func(X,Y)#gist_rainbow
ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap='gist_rainbow')
# 更改可视化角度
ax.view_init(elev=20, azim=150)  # elev是仰角,azim是方位角
# 添加颜色条
#fig.colorbar(ax)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')plt.show()

看一下图像显示效果:

2.复杂的、需要分段的且由变量相进行比较的二元函数

对于此类函数,思想是定义xy的取值范围,在区间内取出足够多个点,然后一个个带入公式比较,再用新的元组将函数值与xy取值绑定,再输出函数三维图像。可以看一下下面这个例子:

实现的代码如下:

import mathfrom matplotlib import pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import Axes3D
import mpl_toolkits.mplot3d
from matplotlib import pyplot as plt
from matplotlib import cm
figure = plt.figure()
ax = Axes3D(figure)x = np.linspace(0, 1, 50)
y = np.linspace(0, 1, 50)
# 定义二元函数
def func(x, y):if y<=0.3*x:return 2*y/3elif y>=0.3*x and y<=0.6*x:return -0.4*x+2*yelif y>=0.6*x and y<=5*x/3:return (x+y)/2elif y>5*x/3 and y<=10*x/3:return -0.4*y+2*xelif y>10*x/3:return 2*x/3else:return np.nan
# 生成x和y的网格点X,Y = np.meshgrid(x,y)#创建网格
Z = np.array([[func(x, y) for x, y in zip(row_x, row_y)] for row_x, row_y in zip(X, Y)])
#Z = func(X,Y)#gist_rainbow
ax.plot_surface(X,Y,Z,rstride=1,cstride=1,cmap='rainbow')
# 更改可视化角度
ax.view_init(elev=20, azim=210)  # elev是仰角,azim是方位角
# 添加颜色条
#fig.colorbar(ax)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('z')plt.show()

显示效果:

和论文里实现的效果一样:

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SimpleCG小游戏开发系列(1)--扫雷

一、前言 前面我们学习了SimpleCG的游戏开发框架,从本篇开始,我们用一系列小游戏的开发来加深对框架的了解.我们先以windows的经典游戏--扫雷,作为首个例子。游戏预览如下 二、框架搭建 因为游戏程序的大体框架差不多&#xff0c;所以我们可以搭建一个通用的主程序。如下所示&a…

怎么把dwg格式转换pdf?

怎么把dwg格式转换pdf&#xff1f;DWG是一种由AutoCAD开发的二维和三维计算机辅助设计&#xff08;CAD&#xff09;文件格式&#xff0c;它的名称是“绘图&#xff08;Drawing&#xff09;”的缩写。DWG文件通常包含了设计图纸、模型和元数据等信息&#xff0c;并且被广泛用于工…

金润etc推动交通行业的数字化进程

金润etc是金润科技以ETC为切入点&#xff0c;深耕交通物流行业&#xff0c;致力于成为交通生态的数据科技服务平台。为了实现这一目标&#xff0c;金润数科提供了全面的交通生态解决方案&#xff0c;包括智慧路况监测、智能停车和智慧运维等。这些解决方案可以帮助城市交通更加…

Vue3-ElementPlus按需导入

1.安装 pnpm add element-plus 2.配置按需导入&#xff1a; 官方文档&#xff1a;快速开始 | Element Plus 按照官网按需导入中的自动导入步骤来进行 pnpm add -D unplugin-vue-components unplugin-auto-import 观察Vite代码与原vite文件的差别&#xff0c;将原vite文件中没…

c# 简单web api接口实例源码分析

CreateHostBuilder(args).Build().Run();这句语句处于c#webapi程序的第一句&#xff0c;它的作用是&#xff1a;启动接口的三个步骤&#xff1a; 创建一个HostBuilder对象。执行IHostBuilder.Build()方法创建IHost对象。执行IHost.Run()方法启动。 创建和配置Host&#xff08;…

【brpc学习实践九】mbvar及bvar可观测

概念、学习地址 mbvar中有两个类&#xff0c;分别是MVariable和MultiDimension&#xff0c;MVariable是多维度统计的基类&#xff0c;MultiDimension是派生模板类。也是主要用来多多线程计数用的。这里用到再详细去了解即可 https://github.com/luozesong/brpc/blob/master/do…

python基于YOLOv7系列模型【yolov7-tiny/yolov7/yolov7x】开发构建钢铁产业产品智能自动化检测识别系统

在前文的项目开发实践中&#xff0c;我们已经以钢铁产业产品缺陷检测数据场景为基准&#xff0c;陆续开发构建了多款目标检测模型&#xff0c;感兴趣的话可以自行阅读即可。 《YOLOv3老矣尚能战否&#xff1f;基于YOLOv3开发构建建钢铁产业产品智能自动化检测识别系统&#xf…

Python语言学习笔记之五(Python代码注解)

本课程对于有其它语言基础的开发人员可以参考和学习&#xff0c;同时也是记录下来&#xff0c;为个人学习使用&#xff0c;文档中有此不当之处&#xff0c;请谅解。 注解与注释是不一样的&#xff0c;注解有更广泛的应用&#xff1b; 通过注解与注释都能提高代码的可读性和规…

python学习过程中一些问题记录总结

工作机器上安装了 两个环境 使用anaconda3 时配置仓库地址不能 拉取到 cv2 DBUtils 使用python2 时 版本低&#xff0c;拉取不到 解决办法&#xff0c;python2不支持下载最新版本的&#xff0c;需要指定下载一个老的版本即可&#xff0c;下个1.3的就OK了 pip install DBU…

华为电视盒子 EC6108V9C 刷机成linux系统

场景&#xff1a; 提示&#xff1a;这里简述项目相关背景&#xff1a; 家里装宽带的时候会自带电视盒子&#xff0c;但是由于某些原因电视盒子没有用&#xff0c;于是就只能摆在那里吃土&#xff0c;闲来无事&#xff0c;搞一下 问题描述 提示&#xff1a;这里描述项目中遇到…

【嵌入式】开源shell命令行的移植和使用(2)——letter-shell

目录 一 背景说明 二 移植准备 三 移植过程 四 自定义命令 五 实际使用 一 背景说明 之前使用过一款开源shell工具 nr_micro_shell &#xff08;【嵌入式】开源shell命令行的移植和使用&#xff08;1&#xff09;——nr_micro_shell-CSDN博客&#xff09;&#xff0c;感觉…

Linux fork笔试练习题

1.打印结果&#xff1f; #include <stdio.h> #include <unistd.h> #include <stdlib.h>int main() {int i0;for(;i<2;i){fork();printf("A\n");}exit(0); } 结果打印 A A A A A A 2.将上面的打印的\n去掉,结果如何? printf("…