当前位置: 首页 > news >正文

偏导数的可视化

偏导数的可视化

flyfish

函数 f ( x , y ) = sin ⁡ ( x ) ⋅ cos ⁡ ( y ) f(x, y) = \sin(x) \cdot \cos(y) f(x,y)=sin(x)cos(y)
在这里插入图片描述

import numpy as np
from sympy import lambdify, sin, cos
from sympy.abc import x, y
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D# 创建一个用于计算和可视化的类
class FunctionVisualization:def __init__(self, num=301):"""初始化类,并设置网格数量和函数定义"""self.num = num# 创建 x 和 y 的坐标轴self.x_array = np.linspace(-3, 3, self.num)self.y_array = np.linspace(-3, 3, self.num)self.xx, self.yy = np.meshgrid(self.x_array, self.y_array)# 定义较简单的函数 f_xyself.f_xy = sin(x) * cos(y)# 将 SymPy 函数转换为 NumPy 可执行的函数self.f_xy_fcn = lambdify([x, y], self.f_xy)def compute_function_values(self):"""计算函数在网格上的值"""return self.f_xy_fcn(self.xx, self.yy)def plot_function(self, f_zz):"""绘制函数的三维图和二维等高线图:param f_zz: 函数在网格上的值"""fig = plt.figure(figsize=(12, 6))# 设置颜色方案contour_color = '#008080'  # 青色等高线contourf_color = 'viridis'  # 等高线填充颜色图谱# 三维图ax = fig.add_subplot(1, 2, 1, projection='3d')ax.plot_wireframe(self.xx, self.yy, f_zz, color=[0.7, 0.7, 0.7], linewidth=0.25)# 绘制等高线colorbar = ax.contour(self.xx, self.yy, f_zz, 20, cmap=contourf_color)ax.contour(self.xx, self.yy, f_zz, levels=[0], colors=contour_color, linestyles='-')fig.colorbar(colorbar, ax=ax)ax.set_proj_type('ortho')ax.set_xlabel('x')ax.set_ylabel('y')ax.set_zlabel(r'$f(x, y)$')ax.view_init(azim=-135, elev=30)ax.grid(False)# 二维等高线图ax2 = fig.add_subplot(1, 2, 2)colorbar = ax2.contourf(self.xx, self.yy, f_zz, 20, cmap=contourf_color)ax2.contour(self.xx, self.yy, f_zz, levels=[0], colors=contour_color, linestyles='-')fig.colorbar(colorbar, ax=ax2)ax2.set_xlabel('x')ax2.set_ylabel('y')ax2.set_aspect('equal', adjustable='box')plt.tight_layout()plt.show()def visualize_function(self):"""计算并可视化函数"""# 计算函数值f_zz = self.compute_function_values()# 绘制函数self.plot_function(f_zz)# 创建类的实例并进行可视化
visualization = FunctionVisualization()
visualization.visualize_function()

计算并可视化 f ( x , y ) = sin ⁡ ( x ) ⋅ cos ⁡ ( y ) f(x, y) = \sin(x) \cdot \cos(y) f(x,y)=sin(x)cos(y)关于 x 的偏导数
在这里插入图片描述
计算并可视化 f ( x , y ) = sin ⁡ ( x ) ⋅ cos ⁡ ( y ) f(x, y) = \sin(x) \cdot \cos(y) f(x,y)=sin(x)cos(y) 关于 y 的偏导数在这里插入图片描述

compute_function_values:计算函数在网格上的值。
compute_partial_derivative:计算关于给定变量的偏导数。
plot_partial_derivative:绘制偏导数的三维图和二维等高线图。
visualize:调用方法来计算并可视化偏导数。

import numpy as np
from sympy import lambdify, diff, sin, cos
from sympy.abc import x, y
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D# 创建一个用于计算和可视化的类
class FunctionVisualization:def __init__(self, num=301):"""初始化类,并设置网格数量和函数定义"""self.num = num# 创建 x 和 y 的坐标轴self.x_array = np.linspace(-3, 3, self.num)self.y_array = np.linspace(-3, 3, self.num)self.xx, self.yy = np.meshgrid(self.x_array, self.y_array)# 定义较简单的函数 f_xyself.f_xy = sin(x) * cos(y)# 将 SymPy 函数转换为 NumPy 可执行的函数self.f_xy_fcn = lambdify([x, y], self.f_xy)def compute_function_values(self):"""计算函数在网格上的值"""return self.f_xy_fcn(self.xx, self.yy)def compute_partial_derivative(self, variable):"""计算函数关于某一变量的偏导数:param variable: 求导的变量,x 或 y"""# 计算偏导数df_d_var = diff(self.f_xy, variable)# 将偏导数函数转换为可执行函数df_d_var_fcn = lambdify([x, y], df_d_var)# 返回在网格上的偏导数值return df_d_var_fcn(self.xx, self.yy)def plot_partial_derivative(self, variable, df_d_var_zz):"""绘制函数关于某一变量的偏导数的三维图和二维等高线图:param variable: 偏导数变量:param df_d_var_zz: 偏导数在网格上的值"""fig = plt.figure(figsize=(12, 6))# 设置颜色方案contour_color = '#FFA500'  # 橙色等高线contourf_color = 'coolwarm'  # 等高线填充颜色图谱# 三维图ax = fig.add_subplot(1, 2, 1, projection='3d')ax.plot_wireframe(self.xx, self.yy, df_d_var_zz, color=[0.7, 0.7, 0.7], linewidth=0.25)# 绘制等高线colorbar = ax.contour(self.xx, self.yy, df_d_var_zz, 20, cmap=contourf_color)ax.contour(self.xx, self.yy, df_d_var_zz, levels=[0], colors=contour_color, linestyles='-')fig.colorbar(colorbar, ax=ax)ax.set_proj_type('ortho')ax.set_xlabel('x')ax.set_ylabel('y')ax.set_zlabel(fr'$\frac{{\partial f}}{{\partial {variable}}}$')ax.view_init(azim=-135, elev=30)ax.grid(False)# 二维等高线图ax2 = fig.add_subplot(1, 2, 2)colorbar = ax2.contourf(self.xx, self.yy, df_d_var_zz, 20, cmap=contourf_color)ax2.contour(self.xx, self.yy, df_d_var_zz, levels=[0], colors=contour_color, linestyles='-')fig.colorbar(colorbar, ax=ax2)ax2.set_xlabel('x')ax2.set_ylabel('y')ax2.set_aspect('equal', adjustable='box')plt.tight_layout()plt.show()def visualize(self):"""计算并可视化函数及其偏导数"""# 计算并可视化 f_xy 关于 x 的偏导数df_dx_zz = self.compute_partial_derivative(x)self.plot_partial_derivative('x', df_dx_zz)# 计算并可视化 f_xy 关于 y 的偏导数df_dy_zz = self.compute_partial_derivative(y)self.plot_partial_derivative('y', df_dy_zz)# 创建类的实例并进行可视化
visualization = FunctionVisualization()
visualization.visualize()

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Java语言程序设计——篇十三(2)
  • 哈希表 - 赎金信
  • 数学建模笔记(2):Topsis分析法
  • java.lang.NoClassDefFoundError: ch/qos/logback/core/util/StatusPrinter2
  • 【洛谷/水滴题解】[NOIP2005 普及组] 采药
  • C++入门:类和对象(入门篇)
  • 详解Linux命令--zip/unzip
  • 谷粒商城实战笔记-175~177-商城业务-检索服务-检索查询接口开发
  • Unity动画模块 之 简单创建一个序列帧动画
  • 6 款最佳付费和免费 iPhone 解锁应用和软件
  • [FBCTF2019]RCEService1
  • Redis7-分布式锁
  • 嵌入式学习Day30---Linux软件编程---进程间的通信
  • 网络通信(TCP/UDP协议 三次握手四次挥手 )
  • Webpack Bundle Analysis:减少包体积的技巧
  • JS 中的深拷贝与浅拷贝
  • Angular Elements 及其运作原理
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • css系列之关于字体的事
  • Fabric架构演变之路
  • Python学习之路16-使用API
  • Redux 中间件分析
  • 力扣(LeetCode)56
  • 前嗅ForeSpider教程:创建模板
  • 设计模式走一遍---观察者模式
  • 实战|智能家居行业移动应用性能分析
  • 智能合约开发环境搭建及Hello World合约
  • Oracle Portal 11g Diagnostics using Remote Diagnostic Agent (RDA) [ID 1059805.
  • 策略 : 一文教你成为人工智能(AI)领域专家
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​LeetCode解法汇总518. 零钱兑换 II
  • #nginx配置案例
  • (6)STL算法之转换
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (NSDate) 时间 (time )比较
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (六)Hibernate的二级缓存
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (区间dp) (经典例题) 石子合并
  • (三)docker:Dockerfile构建容器运行jar包
  • (三)mysql_MYSQL(三)
  • (四十一)大数据实战——spark的yarn模式生产环境部署
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • **登录+JWT+异常处理+拦截器+ThreadLocal-开发思想与代码实现**
  • .gitignore不生效的解决方案
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .Net Core中Quartz的使用方法
  • .NET Micro Framework初体验(二)
  • .net 微服务 服务保护 自动重试 Polly
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(朱雀组)
  • [2019.3.5]BZOJ1934 [Shoi2007]Vote 善意的投票
  • [8] CUDA之向量点乘和矩阵乘法
  • [AAuto]给百宝箱增加娱乐功能