偏导数的可视化:以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的偏导数的三维图和二维等高线图。这种可视化方法有助于我们更直观地理解偏导数的概念和函数的变化趋势。
热门推荐
江苏泰州:“红蓝绿”三色描画旅游新蓝图
概率论的独立性与依赖性:深入探索随机事件的奥秘
二手房交易全攻略:合同签订前的必查资料与纠纷处理指南
国家能源局收录!“三桶油”这些项目获认可
老人多汗是什么病的警告?
西兰花胡萝卜牛肉粒:美味与瘦身的完美结合
抖音为什么会被限流,如何避免抖音被限流
去劳动监察投诉需要带什么证据
健康科普 | 肝不好的人留意“一黄二红三黑”,伤肝的10个习惯要改改了
爬楼梯减肥的正确方法是什么
纤维肌痛症全解析:症状、原因与缓解策略一次搞懂!
用艾叶泡脚的正确方法是什么
感受患者情绪、理解患者期待,医患沟通让患者被关注
探病的最佳时机:如何选择合适的探望时间
一文看懂斗破四部曲,萧炎,林动,牧尘,周元之间的关联以及战力对比
湖北大学的校训是什么
电脑连不上网不用愁,4步诊断,轻松联网乐悠悠
米诺地尔浓度怎么选?高浓度需谨慎!5%浓度才是黄金安全线
老子是道德天尊,道子是灵宝天尊的说法怎么解释?
皮肤上有痣立马点掉?或承担着3类风险!
八字木多命运全解析:从形态到事业的全方位解读
“头顶大事”不容忽视,细数这些洗头学问~
协和医生说:疼痛看得见,治疗更精准! ——可视化超声技术让疼痛无处遁形
电工证:掌握技能,保障安全,提升职业竞争力的利器
首推文化特派员制度 浙江有何用意?
如何进行工抵房交易?这种交易的风险如何评估?
期权与永续合约的本质区别探析
留取24小时尿标本的正确方法
墙面抹灰空鼓开裂原因及处理办法
脱发困扰?选择合适洗发水指南