偏导数的可视化:以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的偏导数的三维图和二维等高线图。这种可视化方法有助于我们更直观地理解偏导数的概念和函数的变化趋势。
热门推荐
JLPT N4 语法 – 日语中自动词与他动词的区分方法
手机压缩包制作教程:步骤、注意事项与总结
Y型密封圈的材料选择与性能提升有哪些关键因素?
微波炉热饭要几分钟?使用微波炉建议
消防电梯前堆物、应急照明灯具故障......记者跟随消防暗访检查消防隐患
从“绿色标签”到“生活方式”:家居品牌如何赢得可持续发展消费者的心?
熊春锦:道家医学的现代传承人,如何用《道医学》治愈现代疾病
用科学解决生活中的问题
进程和线程的区别(超详细)
如何计算中国的GDP?这些计算方法有哪些实际应用?
高纤维食物:自然调节血糖的好帮手
便秘克星来了!3道‘高纤维菜’润肠通便,比吃药管用
足矫配镜六大标准:从检测到使用的完整指南
什么是足矫配镜?如何通过正确配镜延缓近视发展
钓鱼的最佳时间和地点选择依据是什么?
新手爸妈请月嫂,如何判断月嫂的经验和资质?
杠杆投资的基本概念
停车座爱枫林晚 霜叶红于二月的由来
“停车坐爱枫林晚”中的“坐”是因为的意思吗?
强制戒毒的期限一般是几个月或几年呢?
探索神秘天狼星,从古代神话到现代科学的全视角解读
“糖友们”注意!瑞格列奈并不适用于所有人,这四类人慎用
朝鲜战争中,美国曾有一次战胜中国的机会,却遇到玩命的中国师长
智能助手助力生成合同:轻松应对各类签署场景
如何评价雍正帝的历史地位及其个人一生得失?
市场调研如何助力企业新品上市:从概念到反馈的全攻略
国际物流走上全球化,如何设定KPI去评估一个好的国际货代的海外代理?
车载电视的使用技巧有哪些?这些技巧如何提升观影体验?
退役八年仍神准:朱芳雨的三分球传奇
探秘柏树的生长环境和生长地方条件(从土壤到气候)