正弦波与单位圆关系的可视化 包括源码

正弦波与单位圆关系的可视化 包括源码

flyfish

正弦波与单位圆的关系

正弦波可以通过单位圆上的点在直线(通常是 y 轴)上的投影来表示。具体来说,考虑一个单位圆,其半径为 1,圆心在原点。我们可以通过旋转一个角度 α \alpha α 来描述圆周上的点的坐标。

  1. 单位圆上的点 : 在单位圆上,给定一个角度 α \alpha α,圆周上的点的坐标为 ( cos ⁡ α , sin ⁡ α ) (\cos \alpha, \sin \alpha) (cosα,sinα)
    这里, cos ⁡ α \cos \alpha cosα 是点在 x 轴上的投影, sin ⁡ α \sin \alpha sinα 是点在 y 轴上的投影。

  2. 正弦函数
    当角度 α \alpha α 从 0 变化到 2 π 2\pi 2π 时,单位圆上的点会绕原点一圈。
    在这个过程中,点的 y 坐标(即 sin ⁡ α \sin \alpha sinα)会从 0 变化到 1,再变化到 0,然后变化到 -1,最后回到 0。
    这个 y 坐标随着角度变化的曲线就是正弦波的图像。

正弦波的生成

当我们把单位圆上的点在 y 轴上的投影 sin ⁡ α \sin \alpha sinα 作为 y 轴的值,并将对应的角度 α \alpha α 作为 x 轴的值,就可以得到正弦波的图像。

可视化解释

  1. 单位圆 :在单位圆上,我们选择一个角度 α \alpha α,则点的坐标为 ( cos ⁡ α , sin ⁡ α ) (\cos \alpha, \sin \alpha) (cosα,sinα)

  2. 投影 :在这个角度 α \alpha α 下,点在 y 轴上的投影为 sin ⁡ α \sin \alpha sinα

  3. 正弦波 :随着角度 α \alpha α 的变化,我们将每个角度 α \alpha α 与对应的 sin ⁡ α \sin \alpha sinα 值连成一条曲线,这就是正弦波。
    在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation, PillowWriter
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
# 初始化参数
omega = np.linspace(0, 2 * np.pi, 200)# 圆
x = np.cos(omega) - 1
y = np.sin(omega)# 正弦函数
x1 = omega
y1 = np.sin(x1)# 创建图形
fig, ax = plt.subplots(figsize=(12, 6))
ax.set_aspect('equal')
ax.set_xlim(-2.2, 7)
ax.set_ylim(-1.2, 1.2)
ax.grid(True)
ax.set_xticks(np.linspace(-2, 2 * np.pi, 19))
ax.set_xticklabels(['-2', '-1', '0', r'$\pi/8$', r'$\pi/4$', r'$3\pi/8$', r'$\pi/2$', r'$5\pi/8$', r'$3\pi/4$', r'$7\pi/8$', r'$\pi$', r'$9\pi/8$', r'$5\pi/4$', r'$11\pi/8$', r'$3\pi/2$', r'$13\pi/8$', r'$7\pi/4$', r'$15\pi/8$', r'$2\pi$'])
ax.set_title('正弦函数和圆之间的关系', fontsize=22)# 初始化线和点
circle_line, = ax.plot([], [], '-r', lw=3)
sine_line, = ax.plot([], [], '-g', lw=3)
connect_line, = ax.plot([], [], '--', lw=3)
arrow_line, = ax.plot([], [], '-bo', lw=3)
vert_line1, = ax.plot([], [], 'k', lw=3)
vert_line2, = ax.plot([], [], 'k', lw=3)
text1 = ax.text(0, 0, '', fontsize=14)
text2 = ax.text(0, 0, '', fontsize=14)def init():circle_line.set_data([], [])sine_line.set_data([], [])connect_line.set_data([], [])arrow_line.set_data([], [])vert_line1.set_data([], [])vert_line2.set_data([], [])text1.set_text('')text2.set_text('')return circle_line, sine_line, connect_line, arrow_line, vert_line1, vert_line2, text1, text2def update(i):connectLineX = np.linspace(x[i], x1[i], 50)connectLineY = np.zeros(50) + y[i]arrowX = [-1, x[i]]arrowY = [0, y[i]]lineX = np.zeros(20) + x[i]lineY = np.linspace(0, y[i], 20)x3 = np.zeros(20) + x1[i]y3 = np.linspace(0, y1[i], 20)circle_line.set_data(x[:i], y[:i])sine_line.set_data(x1[:i], y1[:i])connect_line.set_data(connectLineX, connectLineY)arrow_line.set_data(arrowX, arrowY)vert_line1.set_data(lineX, lineY)vert_line2.set_data(x3, y3)text1.set_position((x[i] + 0.05, y[i]))text1.set_text(f'{omega[i] / np.pi:.2f}$\pi$')text2.set_position((x1[i] + 0.05, y1[i]))text2.set_text(f'{omega[i] / np.pi:.2f}$\pi$')return circle_line, sine_line, connect_line, arrow_line, vert_line1, vert_line2, text1, text2# 创建动画
ani = FuncAnimation(fig, update, frames=len(omega), init_func=init, blit=True, repeat=True,interval=20)# 保存动画
writer = PillowWriter(fps=20)
ani.save("sinePhase.gif", writer=writer)plt.show()

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

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

相关文章

【全网最全流程+所有代码】企业微信回调联调,开通企微回调和收到企微回调

流程图: 只是这里的消息回调,仅作为提示,群内有消息了。不是具体的消息,而是类似这样的结构,: 如果需要获取消息,还需要拉取企微群内消息方法,这个后续再更新。 好了,我们开始吧。 开启消息回调和接收消息回调,地址是一样的,只是 开启消息回调,get请求, 接受消…

人工智能在日常生活中的十大应用:从医疗到智能家居

人工智能已成为当今人类日常生活的重要组成部分,无论您是否意识到,它几乎在所有场景中都能提供帮助。每次您进行网络搜索、在线预订旅行、接收来自京东等购物平台的产品推荐又或是打开您的新浪、抖音时,都能看到影子,这些只是一些…

JAVA案例模拟电影信息系统

一案例要求: 二具体代码(需要在同一个包下创建三个类) Ⅰ:实现类 package 重修;import java.util.Random; import java.util.Scanner;public class first {public static void main(String[] args) {javabean[]moviesnew javabean[4];movies[0] new ja…

加密与安全_ Jasypt (Java Simplified Encryption)不完全指北

文章目录 官网功能概述Code附 官网 http://www.jasypt.org/ 功能概述 Jasypt 是一个 Java 库,它允许开发人员以最小的努力添加基本的加密功能,并且不需要深入了解密码学的工作原理。 高安全性、基于标准的加密技术,适用于单向和双向加密。…

AIGC对设计师积极性的影响

随着科技的迅猛发展,生成式人工智能(AIGC)工具正逐渐深入设计的每个角落,对设计师的工作方式和思维模式产生了深远的影响。AIGC不仅极大提升了设计师的工作效率,更激发了他们的创新思维,为设计行业带来了翻…

Dungeonborne联机失败、延迟高、卡顿的解决方法

Dungeonborne将第一人称动作的即时性与经典的西幻RPG职业设计巧妙融合,为玩家带来了一场前所未有的游戏体验。在这款沉浸式第一人称PvPvE地下城探险游戏中,我们可以独自深入探索,也可以与值得信赖的伙伴并肩作战,共同揭开地下城的…

移动端UI风格营造舒适氛围

移动端UI风格营造舒适氛围

中服云数字孪生平台引领工业物联仿真新纪元!

中服云数字孪生平台3.0是基于中服云物联网平台和数据中台打造的一款实时数据2D/3D集成展示监控平台。 旨在解决工业物联网数据的直观展示、实虚互动、仿真模拟、故障诊断、告警、预警、预测、实时观测、实时监控等问题。提供了数据采集、数据底座、监控逻辑、建模工具、展示互…

数据结构 —— 图的遍历

数据结构 —— 图的遍历 BFS(广度遍历)一道美团题DFS(深度遍历) 我们今天来看图的遍历,其实都是之前在二叉树中提过的方法,深度和广度遍历。 在这之前,我们先用一个邻接矩阵来表示一个图&#…

220千伏变电站辅助设备智能监控平台 无人化与自动化升级改造工程

220千伏变电站特点 高电压等级:220千伏变电站的最大特点是其高压传输能力,能够将发电厂产生的电能高效地传输到较远的地区,满足大型城市及工业区域的用电需求。 输电能力大:220千伏变电站在输电能力上远大于普通的110千伏或更低…

Mybatis框架的集成使用

1_框架概述 框架是一个半成品,已经对基础的代码进行了封装并提供相应的API,开发者在使用框架时直接调用封装好的api可以省去很多代码编写,从而提高工作效率和开发速度,框架是一种经过校验、具有一定功能的半成品软件. 经过校验:指…

【超万卡GPU集群关键技术深度分析 2024】

文末有福利! 1. 集群高能效计算技术 随着大模型从千亿参数的自然语言模型向万亿参数的多模态模型升级演进,超万卡集群吸需全面提升底层计算能力。 具体而言,包括增强单芯片能力、提升超节点计算能力、基于 DPU (Data Processing Unit) 实现…

Mx Admin 基于react18的后台管理系统

前言 Mx Admin 基于React18 vite5 antd5的后台管理系统, 基于RBAC的权限控制系统,动态菜单和动态路由支持tab路由缓存嵌套菜单支持多种菜单布局模式亮暗色主题切换

Enzo Life Sciences热点分享:细胞治疗中的T细胞活化

细胞治疗(Cell Therapy)作为一种新近发展起来的癌症治疗方法,是一种利用患者自体(或异体)的成体细胞(或干细胞)对组织、器官进行修复的治疗方法。通常是由免疫细胞和相关的细胞产生调节细胞功能…

Java判断范围型的数据是否存在重叠(数值类型、日期类型)

为什么写这么一篇文章呢? 遇到了个问题,同一天可以输入多个时间段,但是每个时间段的时间不能出现重叠。 纳尼,这不就是判断数据返回是否有重叠的变种嘛~ 简单,开搞 数字范围是否重叠判断 这里以int类型为例了&…

【单片机毕业设计选题24046】-基于单片机的智能鱼缸设计

系统功能: 检测水温,水温过低开启PTC加热。检测水位,水位过低开启水泵抽水。检测湿度,湿度过高则开启风扇通风。 检测PH值和浑浊度,TTS语音播报功能,OLED显示系统信息,蓝牙模块连接手机APP。 系统上电后…

IT专业入门,高考假期预习指南—初识产品经理BRD、MRD 和 PRD

七月来临,各省高考分数已揭榜完成。而高考的完结并不意味着学习的结束,而是新旅程的开始。对于有志于踏入IT领域的高考少年们,这个假期是开启探索IT世界的绝佳时机。作为该领域的前行者和经验前辈,你是否愿意为准新生们提供一份全…

AI 芯片之战:开启智能新时代的关键角逐

在科技发展的浪潮中,一场围绕 AI 芯片的激烈竞争正在全球范围内如火如荼地展开。多家巨头纷纷投身其中,使得这场混战已然进入白热化阶段。 AI 芯片,作为推动人工智能发展的核心硬件,其作用举足轻重。它能够高效地处理海量的数据&a…

生物分子生物学实验过程的自动化与智能监控系统设计

开题报告:生物分子生物学实验过程的自动化与智能监控系统设计 一、引言 随着生物科学技术的飞速发展,生物分子生物学实验在科研、医疗、农业等领域的应用日益广泛。然而,传统的生物分子生物学实验过程大多依赖于人工操作,存在操…

java web 部分

jsp作用域由大到小 过滤器有哪些作用? 过滤器的用法?(对客户端的请求统一编码和对客户端进行认证) JSP和Servlet中的请求转发分别如何实现? JSP 和 Servlet 有哪些相同点和不同点,他们之间的联系是什么…