偏导数的可视化:以f(x, y) = sin(x) * cos(y)为例
创作时间:
作者:
@小白创作中心
偏导数的可视化:以f(x, y) = sin(x) * cos(y)为例
引用
CSDN
1.
https://blog.csdn.net/flyfish1986/article/details/141138317
偏导数是多元函数中一个重要的概念,它描述了函数在某一点沿某个方向的变化率。本文将通过Python代码,使用matplotlib库,对函数f(x, y) = sin(x) * 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
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)
self.f_xy = sin(x) * cos(y)
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):
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()
偏导数的可视化
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
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)
self.f_xy = sin(x) * cos(y)
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):
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):
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):
df_dx_zz = self.compute_partial_derivative(x)
self.plot_partial_derivative('x', df_dx_zz)
df_dy_zz = self.compute_partial_derivative(y)
self.plot_partial_derivative('y', df_dy_zz)
visualization = FunctionVisualization()
visualization.visualize()
通过上述代码,我们可以清晰地看到函数f(x, y) = sin(x) * cos(y)及其关于x和y的偏导数的三维图和二维等高线图。这种可视化方法有助于我们更直观地理解偏导数的概念和函数的变化趋势。
热门推荐
元学习在小样本问题中的解决方案
短视频快速崛起,有可能让一群低素质无底线的人,成为舆论的主流
喝碱性水更容易生儿子?生殖专家:没有依据
你可能不知道的大力士英雄赫拉克勒斯
煤业公司招工要求大专,不必误解成学历贬值
人类距离“冬眠”还有多久?科学家:不远了!
孕妇胃胀吃什么食物好消化
剃须刀使用技巧:让您的剃须过程更加舒适高效
CAD教程:学习CAD中心线技巧
公元1000年宋代如何走出五代阴影?
野生的李娟,天生的作家 | 从辍学少女到鲁迅文学奖
如何用C语言编写补码的加法
32万亩!栾川这个产业很“牛”
向新发力 向智转型——曲靖市加快发展新兴产业
哪些企业补充医疗保险政策解读对中小企业最有帮助?
瘦客户机如何登录VM虚拟机:从网络配置到认证方式的完整指南
地支丁火的详解,丁火怎样才算有根
右脸颊痘痘频发,揭秘背后的原因
包粽子,糯米要不要泡水?原来一直做错了,难怪粽子漏米还不好吃
孩子老是咬手指怎么办?四大原因及应对策略
猫咪绝育后会发生哪些变化?术后护理需要注意什么?
卤鸡腿的热量
百家村、美湖路、西堤咖啡一条街……厦门这些街巷里藏着超多美味!
北京朝阳医院:利用患者阑尾成功修补狭窄输尿管
汉台区:搭建比学赶超平台 助力乡村全面振兴
应对孩子的社交恐惧:培养自信,营造温馨氛围
李一舟AI课程平台被暂停服务,个人视频号被禁
通过知识蒸馏压缩BERT模型:DistilBERT的技术细节与效果
养血清脑颗粒的副作用及应对措施
写好说明文的十大技巧