拟合衰减振动模型,估算阻尼比和阻尼系数

news2024/11/15 23:04:10

拟合衰减振动模型,估算阻尼比和阻尼系数

flyfish

衰减振动模型

在自由振动系统中,阻尼振动可以用以下公式描述:
x ( t ) = x 0 e − ζ ω n t cos ⁡ ( ω d t + ϕ ) x(t) = x_0 e^{-\zeta \omega_n t} \cos(\omega_d t + \phi) x(t)=x0eζωntcos(ωdt+ϕ)
其中:

x ( t ) x(t) x(t) 是时间 t t t 时的位移(Displacement at time t t t

x 0 x_0 x0 是初始位移(Initial displacement)

ζ \zeta ζ 是阻尼比(Damping ratio)
希腊字母 ζ \zeta ζ,英文表示为 “zeta”

ω n \omega_n ωn 是无阻尼固有频率(Undamped natural frequency)
希腊字母 ω \omega ω,英文表示为 “omega”

t t t 是时间(Time)

ω d \omega_d ωd 是阻尼振动频率(Damped natural frequency),其公式为:
ω d = ω n 1 − ζ 2 \omega_d = \omega_n \sqrt{1 - \zeta^2} ωd=ωn1ζ2

ϕ \phi ϕ 是相位角(Phase angle)
希腊字母 ϕ \phi ϕ,英文表示为 “phi”

公式说明

  1. 初始位移 x 0 x_0 x0 (Initial displacement) :
    系统开始自由振动时的位移。

  2. 阻尼比 ζ \zeta ζ (Damping ratio) :
    衡量系统阻尼程度的无量纲参数。
    ζ \zeta ζ 越大,阻尼越强。

  3. 无阻尼固有频率 ω n \omega_n ωn (Undamped natural frequency) :
    系统在没有阻尼情况下的固有振动频率。
    单位:弧度每秒(radians per second, rad/s)。

  4. 阻尼振动频率 ω d \omega_d ωd (Damped natural frequency) :
    系统在有阻尼情况下的实际振动频率。

计算公式: ω d = ω n 1 − ζ 2 \omega_d = \omega_n \sqrt{1 - \zeta^2} ωd=ωn1ζ2

ζ < 1 \zeta < 1 ζ<1 时,系统会振荡, ω d \omega_d ωd 表示振荡频率。

  1. 相位角 ϕ \phi ϕ (Phase angle) :
    描述系统初始位移和初始速度之间的关系。

衰减振动的描述

在阻尼系统中,振动会逐渐衰减,幅度随着时间指数下降。振动系统的运动可以分解为以下几个部分:

  1. 指数衰减部分 e − ζ ω n t e^{-\zeta \omega_n t} eζωnt :
    描述振幅随时间的衰减。

  2. 余弦振荡部分 cos ⁡ ( ω d t + ϕ ) \cos(\omega_d t + \phi) cos(ωdt+ϕ) :
    描述系统的振荡行为,频率为 ω d \omega_d ωd,初始相位为 ϕ \phi ϕ

在这里插入图片描述
代码实现

import numpy as np
import scipy.optimize as opt
import matplotlib.pyplot as plt

# 定义衰减振动函数
def damped_vibration(t, x0, zeta, omega_n, phi):
    omega_d = omega_n * np.sqrt(1 - zeta**2)
    return x0 * np.exp(-zeta * omega_n * t) * np.cos(omega_d * t + phi)

# 合成实验数据
t_data = np.linspace(0, 10, 1000)  # 时间数据
x0_true = 1.0  # 初始位移
zeta_true = 0.1  # 真正的阻尼比
omega_n_true = 2 * np.pi  # 真正的无阻尼固有频率
phi_true = 0  # 真正的相位角
x_data = damped_vibration(t_data, x0_true, zeta_true, omega_n_true, phi_true)  # 生成理想数据

# 加入噪声
x_data_noisy = x_data + 0.05 * np.random.normal(size=t_data.shape)  # 加入随机噪声

# 拟合数据
initial_guess = [x0_true, zeta_true, omega_n_true, phi_true]  # 初始猜测
params, params_covariance = opt.curve_fit(damped_vibration, t_data, x_data_noisy, p0=initial_guess)  # 拟合模型

# 提取拟合参数
x0_est, zeta_est, omega_n_est, phi_est = params

# 假设质量为1 kg
m = 1.0
gamma_est = 2 * zeta_est * omega_n_est * m

# 输出结果
print(f"Estimated Initial Displacement (x0): {x0_est}")
print(f"Estimated Damping Ratio (zeta): {zeta_est}")
print(f"Estimated Natural Frequency (omega_n): {omega_n_est}")
print(f"Estimated Damping Coefficient (gamma): {gamma_est} N·s/m")

# 绘图比较
plt.figure(figsize=(10, 6))
plt.plot(t_data, x_data_noisy, label='Noisy Data', alpha=0.5)
plt.plot(t_data, damped_vibration(t_data, *params), label='Fitted Curve', color='red')
plt.xlabel('Time (s)')
plt.ylabel('Displacement (m)')
plt.legend()
plt.show()

t_data: 时间数据,生成一个从0到10秒的1000个时间点的数组。
x0_true: 初始位移(True initial displacement),设定为1.0米。
zeta_true: 真正的阻尼比(True damping ratio),设定为0.1。
omega_n_true: 真正的无阻尼固有频率(True undamped natural frequency),设定为 2π(即每秒一个完整的振动周期)。
phi_true: 真正的相位角(True phase angle),设定为0。

Estimated Initial Displacement (x0): 0.9969144391835894
Estimated Damping Ratio (zeta): 0.09975574475118448
Estimated Natural Frequency (omega_n): 6.2712971489170615
Estimated Damping Coefficient (gamma): 1.2511958352924026 N·s/m

每个结果的单位及其读法:

  1. Estimated Initial Displacement (x0) :
    单位 : 米 (meters, m)

读法 : “Estimated Initial Displacement is value meters”

  1. Estimated Damping Ratio (zeta) :
    单位 : 无单位(damping ratio 是一个无量纲参数)

读法 : “Estimated Damping Ratio is value

  1. Estimated Natural Frequency (omega_n) :
    单位 : 弧度每秒 (radians per second, rad/s)

读法 : “Estimated Natural Frequency is value radians per second”

  1. Estimated Damping Coefficient (gamma) :
    单位 : 牛顿·秒每米 (Newton-seconds per meter, N·s/m)

读法 : “Estimated Damping Coefficient is value Newton-seconds per meter”

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

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

相关文章

数据结构与算法-动态规划-三角形最小路径和

三角形最小路径和 给定一个三角形 triangle &#xff0c;找出自顶向下的最小路径和。 每一步只能移动到下一行中相邻的结点上。相邻的结点 在这里指的是 下标 与 上一层结点下标 相同或者等于 上一层结点下标 1 的两个结点。也就是说&#xff0c;如果正位于当前行的下标 i &…

JUC并发编程-05:线程高级部分-源码解读

线程高级部分-源码解读 多线程高并发底层锁机制与优化最佳实践深入JDK源码理解LongAdder的分段CAS优化机制 公平锁和非公平锁原理解析 多线程高并发底层锁机制与优化最佳实践 深入JDK源码理解LongAdder的分段CAS优化机制 多个线程进入&#xff0c;为了防止空转&#xff0c;所…

Android11 窗口动画

窗口进入动画 应用端窗口绘制完成之后&#xff0c;调用finshDraw告知WMS&#xff0c;WMS这边最后就会调用WindowSurfacePlacer的performSurfacePlacement方法&#xff0c;最终调用到 WindowStateAnimator的commitFinishDrawingLocked方法 //frameworks/base/services/core/jav…

基于Transformer的端到端的目标检测 | 读论文

本文正在参加 人工智能创作者扶持计划 提及到计算机视觉的目标检测&#xff0c;我们一般会最先想到卷积神经网络&#xff08;CNN&#xff09;&#xff0c;因为这算是目标检测领域的开山之作了&#xff0c;在很长的一段时间里人们都折服于卷积神经网络在图像处理领域的优势&…

Redis 主从复制,集群与高可用

虽然Redis可以实现单机的数据持久化&#xff0c;但无论是RDB也好或者AOF也好&#xff0c;都解决不了单点宕机问题&#xff0c;即一旦单台 redis服务器本身出现系统故障、硬件故障等问题后&#xff0c;就会直接造成数据的丢失 此外,单机的性能也是有极限的,因此需要使用另外的技…

数字安全护航技术能力全景图 | 亚信安全实力占据75领域

近日&#xff0c;2024全球数字经济大会——数字安全生态建设专题论坛在北京成功举办。会上&#xff0c;中国信息通信研究院&#xff08;简称“中国信通院”&#xff09;正式发布了《数字安全护航技术能力全景图》&#xff0c;亚信安全凭借全面的产品技术能力&#xff0c;成功入…

蓝卓创始人褚健:工业软件是数字化转型的灵魂和核心驱动力

如果把“工业3.0”简单理解为就是“自动化”&#xff0c;“工业4.0”理解为是“智能化”&#xff0c;那么“智能化”的实现一定要有软件。如同今天的移动互联网&#xff0c;是因为有大量的APP&#xff0c;所以让人们进入了智能时代。映射到工业、制造业领域&#xff0c;就是要依…

[GICv3] 4. 中断分发和路由(Distribution and Routing)

&#x1f4a1;介绍如何将中断分发和路由到目标PE&#xff0c;以及中断号的分配。 分发和重分发&#xff08;The disributor an Redistributors&#xff09; 分配器为SPI提供路由配置&#xff0c;并持有所有相关的路由和优先级信息。重新分配器提供PPI和SGI的配置设置。 重新分…

京东速运|通过python查询快递单号API

本次讲解如何使用快递聚合供应商来实现查询京东速运快递物流轨迹&#xff0c;首先&#xff0c;我们需要准备的资源。 平台的密钥key&#xff1a;登录后在个人中心查看 测试接口的链接&#xff1a;在下方文档处查看 其中&#xff0c;KEY为用户后台我的api页面展示的API密钥, 代…

《米小圈漫画历史》:历史启蒙,看漫画书就可以啦!

在当今信息爆炸的时代&#xff0c;如何让孩子在娱乐中学习&#xff0c;一直是许多家长关心的问题。《米小圈漫画历史》系列作为一部集合了趣味性和教育性的漫画书&#xff0c;以其独特的视角和精彩的故事情节&#xff0c;成为了许多家庭历史启蒙的首选。本文将通过探索漫画书的…

MT3046 愤怒的象棚

思路&#xff1a; a[]存愤怒值&#xff1b;b[i]存以i结尾的&#xff0c;窗口里的最大值&#xff1b;c[i]存以i结尾的&#xff0c;窗口里面包含✳的最大值。 &#xff08;✳为新大象的位置&#xff09; 例&#xff1a;1 2 3 4 ✳ 5 6 7 8 9 则ans的计算公式b3b4c4c5c6b7b8b9…

探索AI大模型(LLM)减少幻觉的三种策略

大型语言模型&#xff08;LLM&#xff09;在生成文本方面具有令人瞩目的能力&#xff0c;但在面对陌生概念和查询时&#xff0c;它们有时会输出看似合理却实际错误的信息&#xff0c;这种现象被称为“幻觉”。近期的研究发现&#xff0c;通过策略性微调和情境学习、检索增强等方…

Linux基础指令解析+项目部署环境

文章目录 前言基础指令部署项目环境总结 前言 Linux的魅力在于其强大的可定制性和灵活性&#xff0c;这使得它成为了众多开发者和运维人员的首选工具。然而&#xff0c;Linux的指令系统庞大而复杂&#xff0c;初学者往往容易迷失其中。因此&#xff0c;本文将带领大家走进Linu…

一键换衣,这个AI可以让你实现穿衣自由

基于图像的虚拟穿衣是一种流行且前景广阔的图像合成技术&#xff0c;能够显著改善消费者的购物体验&#xff0c;并降低服装商家的广告成本。顾名思义&#xff0c;虚拟穿衣任务旨在生成目标人穿着给定服装的图像。 OOTDiffusion简述 图1 虚拟换衣 基于图像的虚拟穿衣目前面临两…

解决linux服务器下微信公众号授权和业务接口授权失败的问题

我们的公众号web站点代码在Windows服务器IIS下运行没有问题&#xff0c;迁移到linux 服务器的nginx下之后&#xff0c;出现了微信授权和接口授权无法通过引起的问题。如下图所示&#xff1a; 经过排查&#xff0c;发现是因为nginx配置默认对 http 配置节下的 underscores_in_he…

MySQL黑马教学对应视屏笔记分享之聚合函数,以及排序语句的讲解笔记

聚合函数 注意&#xff1a;null值不参与聚合函数的计算。 分组查询 2.where与having的区别 执行时机不同&#xff1a;where是在分组之前进行过滤&#xff0c;不满足where条件&#xff0c;不参与分组&#xff1b;而having是分组之后对结果进行过滤。判断条件不同&#xff1a;w…

3,区块链加密(react+区块链实战)

3&#xff0c;区块链加密&#xff08;react区块链实战&#xff09; 3.1 哈希3.2 pow-pos-dpos3.3非对称加密&#xff08;1&#xff09;对称加密AES&#xff08;2&#xff09;非对称加密RSA 3.4 拜占庭将军3.5 P2P网络3.6 区块链 3.1 哈希 密码学&#xff0c;区块链的技术名词 …

【SQL】MySQL中的字符串处理函数:concat 函数拼接字符串,COALESCE函数处理NULL字符串

MySQL中的字符串处理函数&#xff1a;concat 函数 一、concat &#xff08;&#xff09;函数1.1、基本语法1.2、示例1.3、特殊用途 二、COALESCE&#xff08;&#xff09;函数2.1、基本语法2.2、示例2.3、用途 三、进阶练习3.1 条件和 SQL 语句3.2、解释 一、concat &#xff0…

java中stirng真的不可改变么?

目录 1. 字符数组的私有性和不可变性 2. 没有提供修改内容的方法 3. 共享字符串常量池 4.不可变性的优点 5.结论 &#x1f388;边走、边悟&#x1f388;迟早会好 Java 中的 String 对象是不可变的。不可变性意味着一旦创建了一个 String 对象&#xff0c;它的值就不能再被…

怎么提高音频声音大小?提高音频声音大小的四种方法

怎么提高音频声音大小&#xff1f;在音频处理和编辑中&#xff0c;增加声音的音量是一个常见的需求&#xff0c;尤其是在确保音频清晰度和听觉效果的同时。调整音频的音量不仅仅是简单地提高音频的响度&#xff0c;它也涉及到如何保持音质的高标准&#xff0c;确保没有失真或削…