当前位置: 首页 > news >正文

利萨如图形详解:原理与Python动态绘制

一、利萨如图形简介

利萨如图形(Lissajous curve) 是一种由两个正弦波在垂直方向叠加产生的二维曲线,常用于信号处理、振动分析、视觉艺术等领域。

数学表达式:

\left\{\begin{matrix} x(t)=Asin(at+\delta)\\ y(t)=Bsin(bt) \end{matrix}\right.

其中:

  • A,B:振幅(控制图形在 x 和 y 方向的大小)

  • a,b:频率(控制图形的重复次数与形状)

  • δ:相位差(控制图形的旋转或对称性)

二、图形特性分析

  • 当 a:b为简单整数比时,利萨如图形为闭合图案

  • δ=0:图形通常关于 x=y 或 x=-y 对称;

  • 不同的频率比 a:b 会产生不同形状的“花瓣”、“∞”型、椭圆等图形;

  • 改变相位差 δ 会让图形“旋转”或发生对称变化。

三、Python 动态绘制源码

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation# 设置基本参数
A = 1         # x方向振幅
B = 1         # y方向振幅
a = 5         # x方向频率
b = 4         # y方向频率# 时间序列:生成足够平滑的曲线
t = np.linspace(0, 2 * np.pi, 1000)# 创建图形窗口和坐标轴
fig, ax = plt.subplots()
ax.set_aspect('equal')        # 保持 x/y 比例一致
ax.set_xlim(-1.2, 1.2)
ax.set_ylim(-1.2, 1.2)
ax.set_title("Lissajous Curve Animation")
ax.grid(True)# 初始化一条曲线(动态更新的数据)
line, = ax.plot([], [], lw=2, color='blue')# 初始化函数:清空线条
def init():line.set_data([], [])return line,# 动画函数:每一帧更新图像
def animate(i):# i: 帧编号,从 0 到 frames-1# 将相位差 delta 作为动态变化的量delta = 2 * np.pi * i / 100# 计算当前帧的曲线x = A * np.sin(a * t + delta)y = B * np.sin(b * t)# 更新曲线数据line.set_data(x, y)return line,# 创建动画对象
ani = animation.FuncAnimation(fig,             # 图形窗口animate,         # 动画更新函数frames=100,      # 动画帧数init_func=init,  # 初始化函数interval=50,     # 每帧间隔(ms)blit=True        # 启用 blitting 优化
)plt.show()

四 、效果图

http://www.lryc.cn/news/583958.html

相关文章:

  • 配置双网卡Linux主机作为路由器(连接NAT网络和仅主机模式网络)
  • pharokka phold--快速噬菌体注释工具
  • FeatherScan v4.0 – 适用于Linux的全自动内网信息收集工具
  • 基于大数据的电力系统故障诊断技术研究
  • LINUX710 MYSQL
  • 大数据学习6:Sqoop数据迁移工具
  • linux-用户与用户组管理
  • 时序数据库InfluxDB
  • 初学者对编译和链接的学习笔记(含预编译详解)
  • 量子计算能为我们做什么?
  • Linux之Tomcat WEB核心摘要
  • Unity3D iOS闪退问题解决方案
  • C++交叉编译工具链制作以及QT交叉编译环境配置
  • 安全访问云端内部应用:用frp的stcp功能解决SSH转发的痛点
  • 探索 Google NotebookLM:AI 驱动的效率提升新利器
  • MySQL事务实现原理
  • 低频低压减载装置
  • 构建分布式光伏“四可”能力:支撑新型电力系统安全稳定运行的关键路径
  • turbopack打包机制
  • 边缘计算与AI结合:为物联网设备带来智能决策能力
  • 对S32K144做的VCU安装快速开发Simulink库及VCU例程介绍
  • C#System.Runtime.InteropServices.ExternalException (0x80004005): GDI+ 中发生一般性错误。
  • JS实现页面实时时间显示/倒计时
  • Java 大视界 -- Java 大数据在智能交通智能停车诱导与车位共享中的应用(341)
  • selenium跳转到新页面时如何进行定位
  • 编写bat文件自动打开chrome浏览器,并通过selenium抓取浏览器操作chrome
  • 如何使用Java WebSocket API实现客户端和服务器端的通信?
  • Language Models are Few-Shot Learners: 开箱即用的GPT-3(二)
  • Android 应用常见安全问题
  • Windows Edge 播放 H.265 视频指南