切线与切平面的可视化

切线与切平面的可视化

flyfish

切线的可视化

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation, PillowWriter# 定义一个简单的一元函数,例如 f(x) = x^2
def func(x):return x**2# 计算函数的导数
def derivative(x):return 2 * x# 设置x的范围
x = np.linspace(-3, 3, 400)
y = func(x)# 创建图形和轴
fig, ax = plt.subplots()
ax.plot(x, y, 'b', label='f(x) = x^2')
tangent_line, = ax.plot([], [], 'r--', label="Tangent line")  # 切线
point, = ax.plot([], [], 'ro')  # 用于显示切点# 设置图形的范围
ax.set_xlim(-3, 3)
ax.set_ylim(-1, 10)
ax.legend()# 初始化函数
def init():tangent_line.set_data([], [])point.set_data([], [])return tangent_line, point# 更新函数,用于动画
def update(frame):x_val = frame / 20.0 - 1.5  # 随时间移动的x值# 计算切线的点y_val = func(x_val)slope = derivative(x_val)tangent_x = np.linspace(x_val - 1, x_val + 1, 100)tangent_y = slope * (tangent_x - x_val) + y_val# 更新切线和点的位置tangent_line.set_data(tangent_x, tangent_y)point.set_data([x_val], [y_val])return tangent_line, point# 创建动画
ani = FuncAnimation(fig, update, frames=np.arange(0, 120), init_func=init, interval=100, blit=True)# 保存动画为GIF文件
writer = PillowWriter(fps=10)
ani.save("derivative_animation.gif", writer=writer)# 显示动画
plt.show()

切平面的可视化

在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import imageio# 定义二元函数
def f(x, y):return x**2 + y**2# 定义切平面
def tangent_plane(x, y, x0, y0, z0, a, b):return z0 + a * (x - x0) + b * (y - y0)# 计算二元函数的梯度
def gradient(x, y):fx = 2 * xfy = 2 * yreturn fx, fy# 设置网格
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
x, y = np.meshgrid(x, y)
z = f(x, y)# 选择切平面的点
x0, y0 = 2, 2
z0 = f(x0, y0)
fx, fy = gradient(x0, y0)# 创建动画
filenames = []
for angle in range(0, 360, 5):fig = plt.figure()ax = fig.add_subplot(111, projection='3d')ax.plot_surface(x, y, z, cmap='viridis', alpha=0.7)# 画切平面z_plane = tangent_plane(x, y, x0, y0, z0, fx, fy)ax.plot_surface(x, y, z_plane, color='r', alpha=0.5)# 标记切点ax.scatter(x0, y0, z0, color='r', s=50)# 设置视角ax.view_init(elev=20., azim=angle)# 保存当前帧filename = f'_tmp{angle}.png'plt.savefig(filename)filenames.append(filename)plt.close()# 创建GIF
with imageio.get_writer('tangent_plane_animation.gif', mode='I', duration=0.1,loop=0) as writer:for filename in filenames:image = imageio.imread(filename)writer.append_data(image)# 清理临时文件
import os
for filename in filenames:os.remove(filename)

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

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

相关文章

SpringBoot使用AutoConfigure实现依赖库自动导入配置

我们知道导入配置有两种,一种是Value,一种是ConfigurationProperties,将对应的类标记为Component即可导入。但是被注解标识的类创建Bean有一个前提,只对启动类所在的包路径下的所有带有Component等注解的类才会创建Bean。如果我们…

运维团队如何应对专线监控与统一登录门户的挑战

随着企业IT环境的日益复杂和业务的不断拓展,专线监控和统一登录门户成为了运维团队面临的重要挑战。本文将结合运维行业的实际需求,探讨运维团队如何应对专线监控与统一登录门户的挑战,并分享一些实践经验和策略。 一、专线监控的挑战与应对…

银河麒麟高级服务器操作系统V10SP2(X86|ARM)docker-engine软件导致容器umask值为0027而不是0022处理方法

银河麒麟高级服务器操作系统V10SP2(X86|ARM)docker-engine软件导致容器umask值为0027而不是0022问题分析 一 系统环境二 问题原因2.1 欧拉官网给出的解释2.2 麒麟软件包的来源是沿用欧拉上游社区 三 本地测试四 问题解决4.1 方案一 添加--exec-opt nativ…

ONLYOFFICE 文档开发者版 8.1:API 更新

随着版本 8.1 新功能的发布,我们更新了编辑器、文档生成器和插件的 API,并添加了 Office API 板块。阅读下文了解详情。 ​ ONLYOFFICE 文档是什么 ONLYOFFICE 文档是一个功能强大的文档编辑器,支持处理文本文档、电子表格、演示文稿、可填写…

Profibus DP主站转Modbus模块连接马达保护器案例

一、概述 在工业自动化控制系统中,Profibus DP和Modbus是常见的通信协议,在同一现场还有可能遇到Modbus协议,ModbusTCP协议,Profinet协议,Profibus协议,Profibus DP协议,EtherCAT协议&#xff…

小程序中如何进行拼车

小程序因其便捷、快速的特点,已逐渐成为人们日常生活中不可或缺的一部分。在出行领域,拼车作为一种经济、环保的出行方式,受到了越来越多人的青睐。那么该如何在小程序中帮助用户高效发布拼车信息呢?下面具体介绍拼车流程。 一、…

仿Photoshop利用曲线对图像调整亮度与色彩

曲线调整是Photoshop的最常用的重要功能之一。对于一个RGB图像, 可以对R, G, B 通道进行独立的曲线调整,即,对三个通道分别使用三条曲线(Curve)。还可以再增加一条曲线对 三个通道进行整体调整。 因此,对一个图像&a…

深入浅出 langchain 1. Prompt 与 Model

示例 从代码入手来看原理 from langchain_core.output_parsers import StrOutputParser from langchain_core.prompts import ChatPromptTemplate from langchain_openai import ChatOpenAI prompt ChatPromptTemplate.from_template("tell me a short joke about…

让python的报错代码只显示第一层

在 Python 中,sys.tracebacklimit 是 sys 模块中的一个属性,它用于控制在错误发生时,Python 解释器显示的堆栈追踪(traceback)的深度。 具体来说: • 默认行为:当出现未处理的异常时&#xff…

Java整合Jsch实现SFTP连接对服务器文件增删改查操作

我们在开发中,有时候需要操作服务器上的文件,Spring Boot可以使用JSch库来连接SFTP并进行操作服务器上的文件读写。 创建一个SFTP连接需要以下步骤: 1.创建JSch对象2.使用JSch对象创建Session对象3.使用Session对象连接到SFTP服务器4.打开S…

【神经网络】深入理解多层神经网络(深度神经网络

🎈个人主页:豌豆射手^ 🎉欢迎 👍点赞✍评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共同学习、交流进步! 深入理解多层神经网络&#x…

vivado BLACK_BOX、BLI

BLACK_BOX BLACK_BOX属性是一个有用的调试属性,可以将 层次结构关闭并启用合成以为该模块或实体创建一个黑盒。当 属性,即使存在模块或实体的有效逻辑,Vivado合成也会创建 该级别的黑框。此属性可以放置在模块、实体或组件上。 重要提示&…

气流流型烟雾模型研究相关法规要求及拍摄注意事项

气流模式可视化提供制药设施中实际气流模型的视觉记录。它是目前最广泛接受的、证明关键工艺区域的气流模型满足监管期望的方法。此外,气流模型可视化允许多个职能组织发现气流设计和功能的有效性和意义,特别是在关键领域。 与气流模型相关的法规指南要求…

Java——反射

1. 定义 Java的反射(reflection)机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性,既然能拿到,那么我们就可以…

【Zookeeper】两种基于原生zk客户端的分布式锁的实现

基于zk的分布式锁的实现主要依赖zk节点的原子性,可以基于原生zk来自己实现分布式锁,更多的是基于Curator这个框架来直接使用基于zk的分布式锁[1]。这里我们仅仅讨论基于原生zk客户端依赖自己实现的zk分布式锁。 原生zk客户端中的一些调用如getChildren方…

算法课程笔记——蓝桥云课第25次云课

算法课程笔记——蓝桥云课第25次云课

DDD学习笔记二

模型的要素——用例、视图和构造块 模型的构建步骤 1)从用例场景开始,给模型输入概念、属性、术语。 2)构建静态领域模型(类图),发现领域概念和对象属性。 3)构建动态领域模型(时序图…

Redis 高速性能揭秘:核心原因解析

1. 数据结构设计 Redis 的高性能很大程度上归功于其内部精心设计的数据结构。Redis 支持五种基本数据类型:字符串(String)、列表(List)、集合(Set)、有序集合(Sorted Set&#xff0…

Java中的数据结构选择指南

Java中的数据结构选择指南 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天我们来探讨在Java中如何选择适合的数据结构以提高代码效率和性能。 1. 简介 在…

MySQL中ALTER DATABASE语句的使用

ALTER DATABASE 是一个数据库管理命令,主要用于修改或更改已存在数据库的各种属性和配置。 ALTER {DATABASE | SCHEMA} [db_name]alter_option ... ALTER {DATABASE | SCHEMA} db_nameUPGRADE DATA DIRECTORY NAMEalter_option: {[DEFAULT] CHARACTER SET [] chars…