正弦波與單位圓關系的可視化 包括源碼

正弦波與單位圓關系的可視化 包括源碼

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.pswp.cn/diannao/40622.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/40622.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/40622.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

每日一道算法題 判斷子序列

題目 判斷子序列_牛客題霸_牛客網 (nowcoder.com) Python # # 代碼中的類名、方法名、參數名已經指定,請勿修改,直接返回方法規定的值即可 # # # param S string字符串 # param T string字符串 # return bool布爾型 # class Solution:def isSubseq…

【全網最全流程+所有代碼】企業微信回調聯調,開通企微回調和收到企微回調

流程圖: 只是這里的消息回調,僅作為提示,群內有消息了。不是具體的消息,而是類似這樣的結構,: 如果需要獲取消息,還需要拉取企微群內消息方法,這個后續再更新。 好了,我們開始吧。 開啟消息回調和接收消息回調,地址是一樣的,只是 開啟消息回調,get請求, 接受消…

人工智能在日常生活中的十大應用:從醫療到智能家居

人工智能已成為當今人類日常生活的重要組成部分,無論您是否意識到,它幾乎在所有場景中都能提供幫助。每次您進行網絡搜索、在線預訂旅行、接收來自京東等購物平臺的產品推薦又或是打開您的新浪、抖音時,都能看到影子,這些只是一些…

代碼隨想錄算法訓練營第51天 [115.不同的子序列 583. 兩個字符串的刪除操作 72. 編輯距離 ]

代碼隨想錄算法訓練營第51天 [115.不同的子序列 583. 兩個字符串的刪除操作 72. 編輯距離 ] 一、115.不同的子序列 鏈接: 代碼隨想錄. 思路:dp[i][j] 以t[j-1]為結尾的字符串在 以s[i-1]為結尾的字 符串出現個數 相等的時候 dp[i][j] dp[i - 1][j - 1] dp[i - 1][…

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不僅極大提升了設計師的工作效率,更激發了他們的創新思維,為設計行業帶來了翻…

Spring Boot在java領域中有哪些優勢

哈嘍,大家好呀,淼淼又來和大家見面啦,隨著云計算、微服務架構的興起,Java開發領域迫切需要一套高效、靈活且易于上手的框架來應對日益復雜的業務需求。正是在這樣的背景下,Spring Boot應運而生,以其獨特的魅…

Dungeonborne聯機失敗、延遲高、卡頓的解決方法

Dungeonborne將第一人稱動作的即時性與經典的西幻RPG職業設計巧妙融合,為玩家帶來了一場前所未有的游戲體驗。在這款沉浸式第一人稱PvPvE地下城探險游戲中,我們可以獨自深入探索,也可以與值得信賴的伙伴并肩作戰,共同揭開地下城的…

移動端UI風格營造舒適氛圍

移動端UI風格營造舒適氛圍

中服云數字孿生平臺引領工業物聯仿真新紀元!

中服云數字孿生平臺3.0是基于中服云物聯網平臺和數據中臺打造的一款實時數據2D/3D集成展示監控平臺。 旨在解決工業物聯網數據的直觀展示、實虛互動、仿真模擬、故障診斷、告警、預警、預測、實時觀測、實時監控等問題。提供了數據采集、數據底座、監控邏輯、建模工具、展示互…

android 國內下載Gradle源

在中國使用 Gradle 時,可以配置使用一些國內的鏡像源,以提高下載速度和穩定性。以下是幾個常用的 Gradle 鏡像源地址: 配置 gradle-wrapper.properties 文件: 阿里云: distributionUrlhttps\://services.gradle.org/distributions/gradle-7.…

數據結構 —— 圖的遍歷

數據結構 —— 圖的遍歷 BFS(廣度遍歷)一道美團題DFS(深度遍歷) 我們今天來看圖的遍歷,其實都是之前在二叉樹中提過的方法,深度和廣度遍歷。 在這之前,我們先用一個鄰接矩陣來表示一個圖&#…

220千伏變電站輔助設備智能監控平臺 無人化與自動化升級改造工程

220千伏變電站特點 高電壓等級:220千伏變電站的最大特點是其高壓傳輸能力,能夠將發電廠產生的電能高效地傳輸到較遠的地區,滿足大型城市及工業區域的用電需求。 輸電能力大:220千伏變電站在輸電能力上遠大于普通的110千伏或更低…

Mybatis框架的集成使用

1_框架概述 框架是一個半成品,已經對基礎的代碼進行了封裝并提供相應的API,開發者在使用框架時直接調用封裝好的api可以省去很多代碼編寫,從而提高工作效率和開發速度,框架是一種經過校驗、具有一定功能的半成品軟件. 經過校驗:指…

【超萬卡GPU集群關鍵技術深度分析 2024】

文末有福利! 1. 集群高能效計算技術 隨著大模型從千億參數的自然語言模型向萬億參數的多模態模型升級演進,超萬卡集群吸需全面提升底層計算能力。 具體而言,包括增強單芯片能力、提升超節點計算能力、基于 DPU (Data Processing Unit) 實現…

淺聊權限系統設計模型

淺聊權限系統設計模型 設計權限目的 目前主流的各類權限管理模型,如基于用戶、角色組、實體等等的權限模型,結合產品本身的業務、面臨的問題和未來的發展兼容,進行權限模型選型,找到適合產品本身的權限范式體系。 權限模型類型 ACL:權限控制列表(Access Control List)D…

Mx Admin 基于react18的后臺管理系統

前言 Mx Admin 基于React18 vite5 antd5的后臺管理系統, 基于RBAC的權限控制系統,動態菜單和動態路由支持tab路由緩存嵌套菜單支持多種菜單布局模式亮暗色主題切換

Enzo Life Sciences熱點分享:細胞治療中的T細胞活化

細胞治療(Cell Therapy)作為一種新近發展起來的癌癥治療方法,是一種利用患者自體(或異體)的成體細胞(或干細胞)對組織、器官進行修復的治療方法。通常是由免疫細胞和相關的細胞產生調節細胞功能…

Java判斷范圍型的數據是否存在重疊(數值類型、日期類型)

為什么寫這么一篇文章呢? 遇到了個問題,同一天可以輸入多個時間段,但是每個時間段的時間不能出現重疊。 納尼,這不就是判斷數據返回是否有重疊的變種嘛~ 簡單,開搞 數字范圍是否重疊判斷 這里以int類型為例了&…