更新文件,加入清朝音频生成器

This commit is contained in:
feie9456 2025-05-20 12:24:58 +08:00
parent 5497e891ad
commit a822293420
30 changed files with 1466 additions and 30 deletions

View File

@ -4,9 +4,11 @@
"": { "": {
"name": "home-page", "name": "home-page",
"dependencies": { "dependencies": {
"@breezystack/lamejs": "^1.2.7",
"gray-matter": "^4.0.3", "gray-matter": "^4.0.3",
"gsap": "^3.12.7", "gsap": "^3.12.7",
"highlight.js": "^11.11.1", "highlight.js": "^11.11.1",
"lamejs": "^1.2.1",
"localforage": "^1.10.0", "localforage": "^1.10.0",
"markdown-it": "^14.1.0", "markdown-it": "^14.1.0",
"markdown-it-katex": "^2.0.3", "markdown-it-katex": "^2.0.3",
@ -95,6 +97,8 @@
"@babel/types": ["@babel/types@7.27.0", "", { "dependencies": { "@babel/helper-string-parser": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9" } }, "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg=="], "@babel/types": ["@babel/types@7.27.0", "", { "dependencies": { "@babel/helper-string-parser": "^7.25.9", "@babel/helper-validator-identifier": "^7.25.9" } }, "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg=="],
"@breezystack/lamejs": ["@breezystack/lamejs@1.2.7", "", {}, "sha512-6wc7ck65ctA75Hq7FYHTtTvGnYs6msgdxiSUICQ+A01nVOWg6rqouZB8IdyteRlfpYYiFovkf67dIeOgWIUzTA=="],
"@bufbuild/protobuf": ["@bufbuild/protobuf@2.2.5", "", {}, "sha512-/g5EzJifw5GF8aren8wZ/G5oMuPoGeS6MQD3ca8ddcvdXR5UELUfdTZITCGNhNXynY/AYl3Z4plmxdj/tRl/hQ=="], "@bufbuild/protobuf": ["@bufbuild/protobuf@2.2.5", "", {}, "sha512-/g5EzJifw5GF8aren8wZ/G5oMuPoGeS6MQD3ca8ddcvdXR5UELUfdTZITCGNhNXynY/AYl3Z4plmxdj/tRl/hQ=="],
"@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag=="], "@esbuild/aix-ppc64": ["@esbuild/aix-ppc64@0.25.2", "", { "os": "aix", "cpu": "ppc64" }, "sha512-wCIboOL2yXZym2cgm6mlA742s9QeJ8DjGVaL39dLN4rRwrOgOyYSnOaFPhKZGLb2ngj4EyfAFjsNJwPXZvseag=="],
@ -549,6 +553,8 @@
"kolorist": ["kolorist@1.8.0", "", {}, "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ=="], "kolorist": ["kolorist@1.8.0", "", {}, "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ=="],
"lamejs": ["lamejs@1.2.1", "", { "dependencies": { "use-strict": "1.0.1" } }, "sha512-s7bxvjvYthw6oPLCm5pFxvA84wUROODB8jEO2+CE1adhKgrIvVOlmMgY8zyugxGrvRaDHNJanOiS21/emty6dQ=="],
"lie": ["lie@3.1.1", "", { "dependencies": { "immediate": "~3.0.5" } }, "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw=="], "lie": ["lie@3.1.1", "", { "dependencies": { "immediate": "~3.0.5" } }, "sha512-RiNhHysUjhrDQntfYSfY4MU24coXXdEOgw9WGcKHNeEwffDYbF//u87M1EWaMGzuFoSbqW0C9C6lEEhDOAswfw=="],
"linkify-it": ["linkify-it@5.0.0", "", { "dependencies": { "uc.micro": "^2.0.0" } }, "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ=="], "linkify-it": ["linkify-it@5.0.0", "", { "dependencies": { "uc.micro": "^2.0.0" } }, "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ=="],
@ -837,6 +843,8 @@
"update-browserslist-db": ["update-browserslist-db@1.1.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw=="], "update-browserslist-db": ["update-browserslist-db@1.1.3", "", { "dependencies": { "escalade": "^3.2.0", "picocolors": "^1.1.1" }, "peerDependencies": { "browserslist": ">= 4.21.0" }, "bin": { "update-browserslist-db": "cli.js" } }, "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw=="],
"use-strict": ["use-strict@1.0.1", "", {}, "sha512-IeiWvvEXfW5ltKVMkxq6FvNf2LojMKvB2OCeja6+ct24S1XOmQw2dGr2JyndwACWAGJva9B7yPHwAmeA9QCqAQ=="],
"util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="], "util-deprecate": ["util-deprecate@1.0.2", "", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="],
"varint": ["varint@6.0.0", "", {}, "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg=="], "varint": ["varint@6.0.0", "", {}, "sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg=="],

6
env.d.ts vendored
View File

@ -7,6 +7,12 @@ declare module '*.md' {
export const frontmatter: Frontmatter export const frontmatter: Frontmatter
} }
declare module '*.vue' {
import type { ComponentOptions } from 'vue'
const Component: ComponentOptions
export default Component
}
type MdModule = { type MdModule = {
default: ComponentOptions; default: ComponentOptions;
frontmatter: Frontmatter; frontmatter: Frontmatter;

View File

@ -11,7 +11,7 @@
</head> </head>
<body> <body>
<div id="app"></div> <div id="app"></div>
<script>window.amapKey= '29079f345973b792ff05946a20946038'</script> <script>window.amapKey= ''</script>
<script type="module" src="/src/main.ts"></script> <script type="module" src="/src/main.ts"></script>
</body> </body>
</html> </html>

View File

@ -11,9 +11,11 @@
"type-check": "vue-tsc --build" "type-check": "vue-tsc --build"
}, },
"dependencies": { "dependencies": {
"@breezystack/lamejs": "^1.2.7",
"gray-matter": "^4.0.3", "gray-matter": "^4.0.3",
"gsap": "^3.12.7", "gsap": "^3.12.7",
"highlight.js": "^11.11.1", "highlight.js": "^11.11.1",
"lamejs": "^1.2.1",
"localforage": "^1.10.0", "localforage": "^1.10.0",
"markdown-it": "^14.1.0", "markdown-it": "^14.1.0",
"markdown-it-katex": "^2.0.3", "markdown-it-katex": "^2.0.3",

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 609 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 528 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 521 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

View File

@ -0,0 +1,168 @@
---
title: 圆锥摆(傅科摆)综合实验——数据处理与进动分析
desc: 傅科摆通过摆球进动演示地球自转但实验中受限于实验条件很难在本科实验室复现。本实验基于底部仰视摄影与计算机视觉提取椭圆长轴方向结合频域与时域分析在控制阻尼和提高品质因数的同时进动速率与理论值吻合度达98%,验证了傅科效应,并建立起对空气阻力的定量模型。
author: feie9454
date: 2025-05-11
tags: 物理、计算机
---
# 圆锥摆(傅科摆)综合实验——数据处理与进动分析
*改进初始条件的数据处理与物理分析*
## 前言
在先前的仰拍圆锥摆实验中,发现摆球轨迹(形似椭圆)的长轴会缓慢旋转,但旋转速度大于地转偏向力应有的速度,方向也不正确。
推测原因可能是:
1. 摆球释放时有一个自旋速度,传导到系统中
2. 铁架台与单摆形成共振
3. 空气扰动
因此,进行了试验装置的改进,把单摆挂在墙壁上,避免了铁架台,也大幅增大了摆长,方便精细化调整实验。
可惜调整装置后第一次实验,结果和之前类似,旋转速度很大,远超出地转应有的水平。
![image-20250511084546645](./%E5%9C%86%E9%94%A5%E6%91%86%EF%BC%88%E5%82%85%E7%A7%91%E6%91%86%EF%BC%89%E7%BB%BC%E5%90%88%E5%AE%9E%E9%AA%8C%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86%E4%B8%8E%E8%BF%9B%E5%8A%A8%E5%88%86%E6%9E%90.assets/image-20250511084546645.png)
| 物理量 | 数值 (平均) | 解释 |
| ------------------- | ------------------------------------ | ---------------------------------------- |
| 长轴初始长度a₀ | ≈1.69×10³px | 取像素作单位,后续按指数衰减 |
| 阻尼时间常数 τ | **τ ≈3.0×10²s (≈5min)** | a(t)a₀e^(t/τ);对应阻尼系数 γ1/τ |
| 长轴方位角 **θ(t)** | 近线性:θ ≈ θ₀ +ωₚt | |
| 平均进动角/周期 Δθ | **0.76 °/T** (≈0.013rad) | 方向顺时针(在本坐标系下为负) |
| 进动角速度 ωₚ | **5.9×10⁻³rads⁻¹** (≈0.34°s⁻¹) | δω = ωₓ – ωᵧ |
之后进行非常仔细的操作,使得摆球几乎无旋转释放,得到了下面的数据,也证明了之前的问题完全是释放条件导致的。
-->V(/resources/Phy-exp/自旋示意.mp4)
## 摘要
在 *L=1.72m*、*m=27g*、北纬37°条件下通过顶部俯视摄影与计算机视觉追踪获取摆球(X,Y) 坐标,逐周期提取椭圆长轴参数。
改进“**零自旋**”初始条件后剩余椭圆进动速率最好情况下仅与地球自转傅科率相差1.9%,最差情况也在同一数量级;阻尼品质因数提升至 *Q500*
## 1实验装置与参数
| 量 | 符号 | 数值 | 备注 |
| ---------- | --------- | ---------- | --------------------------- |
| 摆长 | $L$ | **1.72m** | 悬点到质心 |
| 摆球质量 | $m$ | **27.0g** | 实心不锈钢球 |
| 纬度 | $\varphi$ | **37°N** | 实验位置 |
| 摄像机帧率 | | 60fps | FHD (实验一) / UHD (实验二) |
实验环境:
![IMG_4918](./%E5%9C%86%E9%94%A5%E6%91%86%EF%BC%88%E5%82%85%E7%A7%91%E6%91%86%EF%BC%89%E7%BB%BC%E5%90%88%E5%AE%9E%E9%AA%8C%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86%E4%B8%8E%E8%BF%9B%E5%8A%A8%E5%88%86%E6%9E%90.assets/IMG_4918.webp)
## 2数据处理流程
1. **FFT 定周期**
$$
T = 2\pi/\omega_0 = 2.630\text{s}
$$
2. **按T分段 → 椭圆拟合**
*PCA* 求协方差特征值 λ₁, λ₂,长轴
$$
a = 2\sqrt{2\lambda_{1}}
$$
长轴方向
$$
\theta = \arctan\!\frac{v_{y}}{v_{x}}
$$
3. **角度预处理**
先乘2`np.unwrap`再除2避免±90°/180°跳变。
4. **拟合**
* **阻尼**$a(t)=a_{0}e^{-t/\tau}$
* **进动**$\theta(t)=\theta_{0}+\omega_{p}t$
## 3结果汇总
| 实验一 | 实验二 |
| ------------------------------------------------------------ | ------------------------------------------------------------ |
| ![image-20250511034320528](./%E5%9C%86%E9%94%A5%E6%91%86%EF%BC%88%E5%82%85%E7%A7%91%E6%91%86%EF%BC%89%E7%BB%BC%E5%90%88%E5%AE%9E%E9%AA%8C%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86%E4%B8%8E%E8%BF%9B%E5%8A%A8%E5%88%86%E6%9E%90.assets/image-20250511034320528.png) | ![image-20250511034300354](./%E5%9C%86%E9%94%A5%E6%91%86%EF%BC%88%E5%82%85%E7%A7%91%E6%91%86%EF%BC%89%E7%BB%BC%E5%90%88%E5%AE%9E%E9%AA%8C%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86%E4%B8%8E%E8%BF%9B%E5%8A%A8%E5%88%86%E6%9E%90.assets/image-20250511034300354.png) |
| ![pendulum_length](./%E5%9C%86%E9%94%A5%E6%91%86%EF%BC%88%E5%82%85%E7%A7%91%E6%91%86%EF%BC%89%E7%BB%BC%E5%90%88%E5%AE%9E%E9%AA%8C%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86%E4%B8%8E%E8%BF%9B%E5%8A%A8%E5%88%86%E6%9E%90.assets/pendulum_length-1746905856609-13.png) | ![pendulum_length](./%E5%9C%86%E9%94%A5%E6%91%86%EF%BC%88%E5%82%85%E7%A7%91%E6%91%86%EF%BC%89%E7%BB%BC%E5%90%88%E5%AE%9E%E9%AA%8C%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86%E4%B8%8E%E8%BF%9B%E5%8A%A8%E5%88%86%E6%9E%90.assets/pendulum_length-1746905874563-22.png) |
| ![pendulum_angle](./%E5%9C%86%E9%94%A5%E6%91%86%EF%BC%88%E5%82%85%E7%A7%91%E6%91%86%EF%BC%89%E7%BB%BC%E5%90%88%E5%AE%9E%E9%AA%8C%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86%E4%B8%8E%E8%BF%9B%E5%8A%A8%E5%88%86%E6%9E%90.assets/pendulum_angle-1746905858024-15.png) | ![pendulum_angle](./%E5%9C%86%E9%94%A5%E6%91%86%EF%BC%88%E5%82%85%E7%A7%91%E6%91%86%EF%BC%89%E7%BB%BC%E5%90%88%E5%AE%9E%E9%AA%8C%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86%E4%B8%8E%E8%BF%9B%E5%8A%A8%E5%88%86%E6%9E%90.assets/pendulum_angle-1746905877647-24.png) |
| ![pendulum_change](./%E5%9C%86%E9%94%A5%E6%91%86%EF%BC%88%E5%82%85%E7%A7%91%E6%91%86%EF%BC%89%E7%BB%BC%E5%90%88%E5%AE%9E%E9%AA%8C%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86%E4%B8%8E%E8%BF%9B%E5%8A%A8%E5%88%86%E6%9E%90.assets/pendulum_change-1746905860347-17.png) | ![pendulum_change](./%E5%9C%86%E9%94%A5%E6%91%86%EF%BC%88%E5%82%85%E7%A7%91%E6%91%86%EF%BC%89%E7%BB%BC%E5%90%88%E5%AE%9E%E9%AA%8C%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86%E4%B8%8E%E8%BF%9B%E5%8A%A8%E5%88%86%E6%9E%90.assets/pendulum_change-1746905881604-26.png) |
![db04e0a12414cf9f96d24d4354e7542581cdb037cf90ec7149423d1633d1d526](./%E5%9C%86%E9%94%A5%E6%91%86%EF%BC%88%E5%82%85%E7%A7%91%E6%91%86%EF%BC%89%E7%BB%BC%E5%90%88%E5%AE%9E%E9%AA%8C%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86%E4%B8%8E%E8%BF%9B%E5%8A%A8%E5%88%86%E6%9E%90.assets/db04e0a12414cf9f96d24d4354e7542581cdb037cf90ec7149423d1633d1d526.png)
![f08147fd9a0dda4ef7fe5ad26a21827846b6a9fe0d4f675ce7895c2c998b47e7](./%E5%9C%86%E9%94%A5%E6%91%86%EF%BC%88%E5%82%85%E7%A7%91%E6%91%86%EF%BC%89%E7%BB%BC%E5%90%88%E5%AE%9E%E9%AA%8C%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86%E4%B8%8E%E8%BF%9B%E5%8A%A8%E5%88%86%E6%9E%90.assets/f08147fd9a0dda4ef7fe5ad26a21827846b6a9fe0d4f675ce7895c2c998b47e7.png)
### 3.1 关键数值
| Parameter | 实验一 | 实验二 |
| --------------- | ---------- | ---------- |
| **周期T** | 2.633s | 2.625 s |
| **阻尼常数 τ** | 405±5 | 422±5 |
| **品质因数Q** | 505 | 483 |
| **进动速率 ωₚ** | -4.5×10⁻⁵ | 2.1×10⁻⁴ |
![output](./%E5%9C%86%E9%94%A5%E6%91%86%EF%BC%88%E5%82%85%E7%A7%91%E6%91%86%EF%BC%89%E7%BB%BC%E5%90%88%E5%AE%9E%E9%AA%8C%E2%80%94%E2%80%94%E6%95%B0%E6%8D%AE%E5%A4%84%E7%90%86%E4%B8%8E%E8%BF%9B%E5%8A%A8%E5%88%86%E6%9E%90.assets/output.png)
地转傅科速率 $\omega_{F}=\Omega\sin\varphi$ = $\Omega=7.292\times10^{-5}$ = 4.39×10⁻⁵rads⁻¹
### 3.2 阻尼行为
指数衰减 $a(t)$ 与实测散点 $(R^{2}=0.997)$ 完全吻合 → 线性粘滞模型成立。
能量每周期损失
$$ \frac{\Delta E}{E}\approx \frac{2\pi}{Q}=1.07\% $$
### 3.3 进动比较
最好情况:
$$ \frac{|\omega_{p}|}{\omega_{F}}\approx 1.019 $$
## 4 讨论
### 为什么“摆球自旋”会把整套圆锥摆的长轴带着一起转?
| 过程 | 关键点 | 结果 |
| --------------------------------------------- | ------------------------------------------------------------ | ------------------------------------------------------------ |
| ① **放手瞬间的自旋**摆球绕悬丝轴线有角速度ωs | 给摆球自身带来 **自旋角动量**Lspin=IωsI≈2/5mr² | 这部分角动量多半被“存”在 **扭转变形** 的悬丝里 |
| ② 悬丝扭转—摆平面耦合 | 悬丝有有限扭转刚度κNmrad⁻¹静止时扭力 = κθtwist | 扭力轴和摆线张力轴略有夹角 → 会在水平面产生 **小但持续的横向力 F⊥** |
| ③ Lspin ↔Lorbital 交换 | 为满足总角动量守恒,部分 Lspin **逐渐转化** 为轨迹的枢转角动量 Lorb=mφ̇ | 轨迹椭圆的 **长轴开始顺(或逆)时针漂移** |
| ④ 自旋耗散 | 空气阻力 + 线材内摩擦让 ωs 衰减 | 扭转回复力减小 → 长轴漂移速率随时间趋零 |
> **一句话**:摆球自旋“扭”着悬丝,悬丝的反扭力给了摆球水平向的微小推力;为了守恒角动量,系统把这股推力表现为 **摆平面的进动**
------
#### 定量估算(典型数字)
- 不锈钢球 m=27g, r2cm → I≈4.3×10⁻⁶kg
- 假设放手时 **ωs=10rad/s**
Lspin4.3×10⁻⁵N·m·s
- 圆锥摆小半径 a≈0.05mL=1.72m → 为让摆面每秒转0.01rad 只需
Lorb=mφ̇0.27×(5cm)²×0.01=6.8×10⁻⁵N·m·s
> 两者同量级!——难怪轻微自旋就能显著改变摆面走向。
------
### 为什么“直着放”几乎消除了偏转?
1. **Lspin≈0** → 悬丝几乎没有额外扭转能;
2. 摆球只剩下两自由度 (x,y) 的线性简谐振动x、y 本征频率只受悬点几何 (ωx,ωy) 控制;
3. 于是长轴进动速率 ωp ≈ ½(ωxωy) → 很小,可被你调平到接近傅科速率。
------
## 如何彻底避免自旋耦合?
| 方法 | 作用 |
| ---------------------------------- | ------------------------------------- |
| 在悬丝下端装 **万向小叉/滚珠轴承** | 自由脱开自旋,扭力不会传下摆面 |
| 用 **防扭钢丝**(多股细丝绞合) | 削弱 κ,减小扭转‑平面耦合 |
| 在放手前让摆球 **轻触静止垂直面** | “刹车”掉自旋再松手 |
| 录像分析时 **滤掉早期十几个周期** | 等自旋‑扭转能量耗散后再开始测傅科进动 |
只要自旋角动量比你想观测的轨迹角动量小一个数量级Lspin ≪ mωF就能把人为偏转压到地转量级以下。

Binary file not shown.

After

Width:  |  Height:  |  Size: 337 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 367 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 360 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 KiB

View File

@ -2,7 +2,7 @@
title: 基于CV的单摆实验优化方案——实验进度与总结 title: 基于CV的单摆实验优化方案——实验进度与总结
desc: 单摆是一种经典的实验方法,用于测定重力加速度 $g$,但传统方法(例如用秒表计时)存在局限性。由于人类反应时间以及小角度近似的限制,所测得的 $g$ 往往存在几百分点的误差。我们的实验利用计算机视觉获取高质量的摆球位置-时间数据,应用数学模型提取周期信息,最后通过非线性拟合消除大振幅和阻尼影响,测得准确的重力加速度值并评估空气阻力特性。 desc: 单摆是一种经典的实验方法,用于测定重力加速度 $g$,但传统方法(例如用秒表计时)存在局限性。由于人类反应时间以及小角度近似的限制,所测得的 $g$ 往往存在几百分点的误差。我们的实验利用计算机视觉获取高质量的摆球位置-时间数据,应用数学模型提取周期信息,最后通过非线性拟合消除大振幅和阻尼影响,测得准确的重力加速度值并评估空气阻力特性。
author: feie9454 author: feie9454
date: 2025-04-26 date: 2025-05-11
tags: 计算机、物理、竞赛 tags: 计算机、物理、竞赛
--- ---
@ -162,9 +162,9 @@ $$
------ ------
## 如何把现有方案升级为“AI 赋能”项目? ### 如何把现有方案升级为“AI 赋能”项目?
### 1 感知:用深度视觉替换硬规则 #### 1 感知:用深度视觉替换硬规则
| 具体动作 | 效果 | | 具体动作 | 效果 |
| --------------------------------------------- | ------------------------------------------------------------ | | --------------------------------------------- | ------------------------------------------------------------ |
@ -172,7 +172,7 @@ $$
| **自监督关键点跟踪**(如 DINOv2 + RAFT 光流) | 无需人工标注即可在不同实验之间迁移,适合滚动球、弹簧端点等形态变化目标 | | **自监督关键点跟踪**(如 DINOv2 + RAFT 光流) | 无需人工标注即可在不同实验之间迁移,适合滚动球、弹簧端点等形态变化目标 |
| **多相机 + 单目深度网络** | 直接预测 3-D 轨迹,免去手工尺标与透视校正 | | **多相机 + 单目深度网络** | 直接预测 3-D 轨迹,免去手工尺标与透视校正 |
### 2 模型发现:让 AI 自己写方程 #### 2 模型发现:让 AI 自己写方程
| 工具 | 可以做什么 | | 工具 | 可以做什么 |
| ------------------------------------------------------- | ------------------------------------------------------------ | | ------------------------------------------------------- | ------------------------------------------------------------ |
@ -180,24 +180,24 @@ $$
| **AI Feynman** | 对测得的 $(T,\theta)$、$(a,m)$ 等表格做符号回归,返还可解释解析式(含物理常数) ([AI Feynman: A physics-inspired method for symbolic regression - PMC](https://pmc.ncbi.nlm.nih.gov/articles/PMC7159912/?utm_source=chatgpt.com)) | | **AI Feynman** | 对测得的 $(T,\theta)$、$(a,m)$ 等表格做符号回归,返还可解释解析式(含物理常数) ([AI Feynman: A physics-inspired method for symbolic regression - PMC](https://pmc.ncbi.nlm.nih.gov/articles/PMC7159912/?utm_source=chatgpt.com)) |
| **Auto-PINN** | 把未知力项当“可训练函数”,网络同时满足运动方程残差和边界条件,实现隐力识别(例如滚动摩擦的速度依赖形式) | | **Auto-PINN** | 把未知力项当“可训练函数”,网络同时满足运动方程残差和边界条件,实现隐力识别(例如滚动摩擦的速度依赖形式) |
### 3 不确定度与解释 #### 3 不确定度与解释
- **Bayesian Neural ODE / PyMC**:给出 $g,k,I,\mu_r$ 的完整后验分布,而非单点估计;可直接用置信区间作为误差条形图。 - **Bayesian Neural ODE / PyMC**:给出 $g,k,I,\mu_r$ 的完整后验分布,而非单点估计;可直接用置信区间作为误差条形图。
- **SHAP / LIME**:解释深度检测模型在不同光照角度时依赖的像素区域,方便调光源或贴标记。 - **SHAP / LIME**:解释深度检测模型在不同光照角度时依赖的像素区域,方便调光源或贴标记。
### 4 自适应实验设计 #### 4 自适应实验设计
- **贝叶斯优化 (BO)**:实验实时决定下一次振幅、质量差或拍摄帧率,使 Fisher 信息最大(参数方差最小)。近年来物理与材料实验已用 BO 自动排程 ([A physics informed bayesian optimization approach for material ...](https://www.nature.com/articles/s41524-023-01173-7?utm_source=chatgpt.com))。 - **贝叶斯优化 (BO)**:实验实时决定下一次振幅、质量差或拍摄帧率,使 Fisher 信息最大(参数方差最小)。近年来物理与材料实验已用 BO 自动排程 ([A physics informed bayesian optimization approach for material ...](https://www.nature.com/articles/s41524-023-01173-7?utm_source=chatgpt.com))。
- **深度强化学习 (RL)**控制伺服电机自动改变弹簧载荷或扭摆阻尼板开口使残差谱最平坦形成“AI 智能调参实验台”。 - **深度强化学习 (RL)**控制伺服电机自动改变弹簧载荷或扭摆阻尼板开口使残差谱最平坦形成“AI 智能调参实验台”。
### 5 数据治理与报告 #### 5 数据治理与报告
- **异常检测**:残差序列喂入 LSTM-VAE自动标出摄像掉帧、灯闪烁导致的离群周期。 - **异常检测**:残差序列喂入 LSTM-VAE自动标出摄像掉帧、灯闪烁导致的离群周期。
- **LLM-Copilot**:把实验日志 + 图表交给 GPT-4o 生成中文 / 英文双语报告并自动插入 LaTeX 公式与参考文献。 - **LLM-Copilot**:把实验日志 + 图表交给 GPT-4o 生成中文 / 英文双语报告并自动插入 LaTeX 公式与参考文献。
------ ------
## 为什么这样就“够 AI” ### 为什么这样就“够 AI”
1. **端到端学习**:从像素到物理参数无需人工阈值或公式硬编码。 1. **端到端学习**:从像素到物理参数无需人工阈值或公式硬编码。
2. **自适应/自发现**:算法自行决定实验参数或生成闭式方程。 2. **自适应/自发现**:算法自行决定实验参数或生成闭式方程。
@ -214,4 +214,25 @@ $$
这样设计不仅满足“AI 赋能”主题,还能体现**跨学科融合、可解释性与可迁移性**三大当前热点。 这样设计不仅满足“AI 赋能”主题,还能体现**跨学科融合、可解释性与可迁移性**三大当前热点。
整体来说目前实验大部分目标以达成后续可以一步步把实验中的部分替换更符合AI。
-->(/blogs/计算机视觉辅助单摆优化及经典力学实验拓展研究综述.md) -->(/blogs/计算机视觉辅助单摆优化及经典力学实验拓展研究综述.md)
## 2025/5/10
尝试进行自由落体拓展实验的分析:
![image-20250511041837399](./%E5%9F%BA%E4%BA%8ECV%E7%9A%84%E5%8D%95%E6%91%86%E5%AE%9E%E9%AA%8C%E4%BC%98%E5%8C%96%E6%96%B9%E6%A1%88%E5%AE%9E%E9%AA%8C%E8%BF%9B%E5%BA%A6%E4%B8%8E%E6%80%BB%E7%BB%93.assets/image-20250511041837399.png)
| ![9091e91c21053699e998775998a1fcab](./%E5%9F%BA%E4%BA%8ECV%E7%9A%84%E5%8D%95%E6%91%86%E5%AE%9E%E9%AA%8C%E4%BC%98%E5%8C%96%E6%96%B9%E6%A1%88%E5%AE%9E%E9%AA%8C%E8%BF%9B%E5%BA%A6%E4%B8%8E%E6%80%BB%E7%BB%93.assets/9091e91c21053699e998775998a1fcab.png) | ![da2d87ac406f3e8e8e419d4b8d7e2f37](./%E5%9F%BA%E4%BA%8ECV%E7%9A%84%E5%8D%95%E6%91%86%E5%AE%9E%E9%AA%8C%E4%BC%98%E5%8C%96%E6%96%B9%E6%A1%88%E5%AE%9E%E9%AA%8C%E8%BF%9B%E5%BA%A6%E4%B8%8E%E6%80%BB%E7%BB%93.assets/da2d87ac406f3e8e8e419d4b8d7e2f37.png) | ![43b073a2cac922f6fe7b1a469bca1394](./%E5%9F%BA%E4%BA%8ECV%E7%9A%84%E5%8D%95%E6%91%86%E5%AE%9E%E9%AA%8C%E4%BC%98%E5%8C%96%E6%96%B9%E6%A1%88%E5%AE%9E%E9%AA%8C%E8%BF%9B%E5%BA%A6%E4%B8%8E%E6%80%BB%E7%BB%93.assets/43b073a2cac922f6fe7b1a469bca1394.png) |
| ------------------------------------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
即使使用240FPS采样数据点还是较少拍摄设备分辨率1920x1080加速度很离散。
## 2025/5/11
-->(/blogs/圆锥摆(傅科摆)综合实验——数据处理与进动分析.md)
## 2025/5/18
-->V(/resources/Phy-exp/WebDemo.mp4)

File diff suppressed because it is too large Load Diff

View File

@ -1,12 +1,8 @@
import { createRouter, createWebHistory } from 'vue-router' import { createRouter, createWebHistory } from 'vue-router'
import NotFoundView from '@/views/NotFoundView.vue' import NotFoundView from '@/views/NotFoundView.vue'
import { getStaticRoutes } from './routes' import { getStaticRoutes } from './routes'
import { generatePath } from '@/blogs/utils';
function getRoutes() { function getRoutes() {
return [ return [
...getStaticRoutes().map(route => { ...getStaticRoutes().map(route => {
return { return {
@ -15,6 +11,7 @@ function getRoutes() {
'/tools': () => import('@/views/ToolsView.vue'), '/tools': () => import('@/views/ToolsView.vue'),
'/blogs': () => import('@/views/BlogsView.vue'), '/blogs': () => import('@/views/BlogsView.vue'),
'/tools/image-converter': () => import('@/views/tools/ImageConverterView.vue'), '/tools/image-converter': () => import('@/views/tools/ImageConverterView.vue'),
'/tools/qing-audio': () => import('@/views/tools/QingAudioConverterView.vue'),
'/tools/desktop-engine': () => import('@/views/tools/DesktopEngineView.vue'), '/tools/desktop-engine': () => import('@/views/tools/DesktopEngineView.vue'),
}[route.path] || (() => import('@/views/NotFoundView.vue')), }[route.path] || (() => import('@/views/NotFoundView.vue')),
meta: route.path === '/tools/desktop-engine' ? { hideLayout: true } : {}, meta: route.path === '/tools/desktop-engine' ? { hideLayout: true } : {},

View File

@ -1,6 +1,5 @@
// src/router/routes.ts // src/router/routes.ts
export function getStaticRoutes() { export function getStaticRoutes() { return [
return [
{ {
path: '/', path: '/',
name: '学习中的鹅', name: '学习中的鹅',
@ -16,6 +15,11 @@ export function getStaticRoutes() {
name: '在线图片压缩工具', name: '在线图片压缩工具',
changefreq: 'daily', changefreq: 'daily',
priority: 0.7, priority: 0.7,
}, {
path: '/tools/qing-audio',
name: '清朝音质生成器',
changefreq: 'daily',
priority: 0.7,
}, { }, {
path: '/tools/desktop-engine', path: '/tools/desktop-engine',
name: '桌面引擎壁纸', name: '桌面引擎壁纸',

View File

@ -1,23 +1,176 @@
<script setup lang="ts"> <script setup lang="ts">
interface Tool {
id: string;
title: string;
description: string;
icon: string;
link: string;
}
const tools: Tool[] = [
{
id: 'image-converter',
title: '在线图片压缩',
description: '一个基于 Canvas 的本地图片压缩工具,支持批量处理',
icon: '🖼️',
link: '/tools/image-converter'
},
{
id: 'qing-audio',
title: '清朝音质生成器',
description: '把普通音频转换成清朝效果,模拟失真、噪音和低品质音效,适合恶搞使用',
icon: '🎵',
link: '/tools/qing-audio'
},
{
id: 'desktop-engine',
title: 'Desktop Engine',
description: '一个用于被设置为 Wallpaper Engine 背景的网页,支持丰富的插件,如音乐播放器或股票实时行情',
icon: '🖥️',
link: '/tools/desktop-engine'
}
]
</script> </script>
<template> <template>
<main> <main>
<ul> <section class="tools-header">
<li> <h1 class="title">实用工具</h1>
<RouterLink to="/tools/image-converter"> <p class="subtitle">这里收集了我开发的一些工具希望能帮到你</p>
<h2 class="title">在线图片压缩</h2> </section>
<div class="tools-wrapper">
<div class="tools-container">
<RouterLink
v-for="tool in tools"
:key="tool.id"
:to="tool.link"
class="tool-card"
>
<div class="tool-icon">
{{ tool.icon }}
</div>
<div class="tool-content">
<h2 class="tool-title">{{ tool.title }}</h2>
<p class="tool-description">{{ tool.description }}</p>
</div>
<div class="tool-arrow">
</div>
</RouterLink> </RouterLink>
<p>一个基于 Canvas 的本地图片压缩工具支持批量处理</p> </div>
</li> </div>
<li>
<RouterLink to="/tools/desktop-engine">
<h2 class="title">Desktop Engine</h2>
</RouterLink>
<p>一个用于被设置为 Wallpaper Engine 背景的网页支持丰富的插件如音乐播放器或股票实时行情</p>
</li>
</ul>
</main> </main>
</template> </template>
<style scoped lang="scss">
.tools-header {
margin-bottom: 2rem;
text-align: center;
.title {
font-size: 2rem;
margin-bottom: 0.5rem;
}
.subtitle {
color: var(--text-color-gray);
font-size: 1.1rem;
}
}
.tools-container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 1.5rem;
max-width: 1200px; //
margin: 0 auto; //
@media (min-width: 1201px) {
grid-template-columns: repeat(3, 1fr); // 3
}
@media (max-width: 640px) {
grid-template-columns: 1fr; // 1
}
}
.tool-card {
display: flex;
align-items: center;
padding: 1.5rem;
border: var(--border);
border-radius: var(--border-radius);
background-color: rgba(255, 255, 255, 0.3);
text-decoration: none;
color: var(--text-color);
transition: all 0.3s ease;
position: relative;
overflow: hidden;
@media (prefers-color-scheme: dark) {
background-color: rgba(0, 0, 0, 0.3);
}
&:hover {
transform: translateY(-3px);
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
.tool-arrow {
transform: translateX(0);
opacity: 1;
}
.tool-icon {
color: var(--text-color-orange);
transform: scale(1.1);
}
}
}
.tool-icon {
flex-shrink: 0;
width: 3rem;
height: 3rem;
display: flex;
align-items: center;
justify-content: center;
margin-right: 1rem;
border-radius: 50%;
font-size: 1.5rem;
background-color: rgba(0, 0, 0, 0.05);
transition: all 0.3s ease;
@media (prefers-color-scheme: dark) {
background-color: rgba(255, 255, 255, 0.1);
}
}
.tool-content {
flex-grow: 1;
}
.tool-title {
margin: 0;
margin-bottom: 0.5rem;
font-size: 1.25rem;
}
.tool-description {
margin: 0;
color: var(--text-color-gray);
font-size: 0.9rem;
line-height: 1.4;
}
.tool-arrow {
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
margin-left: 1rem;
transition: all 0.3s ease;
transform: translateX(1rem);
opacity: 0;
font-size: 1.25rem;
}
</style>

View File

@ -0,0 +1,9 @@
<script setup lang="ts">
import QingAudioConverter from '@/components/QingAudioConverter.vue';
</script>
<template>
<main>
<QingAudioConverter />
</main>
</template>