首页/文章/ 详情

高斯积分法计算一阶频率

13分钟前浏览0

 

1.理论基础

无限自由度体系的频率计算涉及偏微分方程及超越特征方程的求解,复杂且困难。工程应用中往往只关注若干个低阶自振频率。能量法和集中质量法是两种常用的计算频率的近似法。

能量法计算频率的依据是能量守恒原理。弹性结构发生无阻尼自由振动时具有两种形式的内在能量:一是结构因变形而引起的应变能  ;二是结构中的质量因发生运动而具有的动能  。这两种能量的总和在任一时刻是保持不变的,即

在结构往复振动过程中,当位移达到最大时其速度为零,也即当应变能达到最大值  时,其动能为零;而当变形为零,其应变能为零,动能达到最大值  。据此,有

以简支梁为例,设自由振动时梁的变形曲线为

式中  为位移幅值函数,是坐标的单一函数,应符合梁的变形协调条件,  为自振频率。

梁因弯曲变形引起的任一截面的曲率为

于是梁在任一时刻的弯曲应变能可写为

再将式(3)对时间求偏导,可得梁运动的速度为

由此得到梁的动能

结合(2)(5)(7)可得

如果除了分布质量,梁上还有集中质量  ,则上式改为

上述两式就是能量法近似求自振频率的计算式,这一计算频率的方法又称为瑞利法。计算时,关键一步是设定位移幅值函数  。如果所设的函数曲线与第一振型的形状曲线恰好一致或者相似,那么就可求得第一频率的精确解或精度较高的近似解;若所设曲线正好与第二或其他振型的形状一致或相似,则可求得第二或其他频率的精确解或精度较高的近似解。由于高阶频率的振型一般很难预估,计算时会导致误差偏大,故这种方法更适宜于计算第一频率。

2.数值计算

高斯积分的基本思想是:在积分区间内,精心选择一些非等距的积分点(高斯点),用这些点上的函数值乘以相应的权重系数后求和,来近似积分值。

对于一个在标准区间    上的积分,其公式为:

其中:

  • •     --高斯积分点的个数
  • •     --第      个高斯点的坐标(在区间      内)
  • •     --第     个高斯点对应的权重
  • •     --被积函数

重要特性:对于    个高斯点,该方法可以精确积分最高   次的多项式。

根据被积函数    的多项式次数,选择足够的高斯点数    以保证精度。如果    和    是多项式,其乘积也是多项式,可以选择能精确积分的    值。常用    或    已能满足大部分工程精度。

常用高斯点与权重表(     和     ):

     
高斯点坐标               
权重               
2      
           
3      
                       

根据式(9),用高斯积分法计算积分  
的步骤:

✅1 坐标变换

将积分区间从物理坐标    映射到自然坐标   。

于是位移积分变为:

✅2定义被积函数

令:

✅3 计算积分近似值

利用公式:

3、算例应用

一根简支梁,长   ,  。用高斯积分法求一阶频率。

  import numpy as np

def
 gauss_beam_frequency(L, EI, rhoA, n=3):
    # 高斯积分点

    if
 n == 2:
        xi = np.array([-1/np.sqrt(3), 1/np.sqrt(3)])
        w = np.array([1.0, 1.0])
    elif
 n == 3:
        xi = np.array([-np.sqrt(3/5), 0.0, np.sqrt(3/5)])
        w = np.array([5/9, 8/9, 5/9])
    else
:
        raise
 ValueError("n=2 or 3 only")

    # 变换 x(xi) = L/2 (xi + 1)

    # phi(x) = sin(pi x / L)

    # phi''(x) = -(pi/L)^2 sin(pi x / L)


    pi_val = np.pi
    stiffness_integral = 0.0
    mass_integral = 0.0

    for
 i in range(n):
        x = L/2 * (xi[i] + 1)
        phi = np.sin(pi_val * x / L)
        phi_xx = -(pi_val / L)**2 * phi

        # dx/dxi = L/2

        stiffness_integral += w[i] * (phi_xx**2) * (L/2)
        mass_integral += w[i] * (phi**2) * (L/2)

    K = EI * stiffness_integral
    M = rhoA * mass_integral

    omega1 = np.sqrt(K / M)
    return
 omega1

# Example

L = 1.0
EI = 1.0
rhoA = 1.0
omega = gauss_beam_frequency(L, EI, rhoA, n=3)
print
("omega1 =", omega)
print
("exact  =", np.pi**2 / L**2 * np.sqrt(EI/(rhoA)))

 

来源:数值分析与有限元编程
ACT振动UM理论
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2026-11-12
最近编辑:13分钟前
译码当先
本科 慢慢来
获赞 14粉丝 32文章 403课程 0
点赞
收藏
作者推荐

什么是 Harness?

本文是对博客《What is a Harness?》的总结,用攀岩安全带作比喻,向非专业人士解释 AI 圈常说的 Agent Harness 到底是什么。核心可以浓缩成一句话:Agent = Model + Harness,模型负责“思考”,Harness 负责让思考沿着想要的方向。https://earendil.com/posts/what-is-a-harness/一、用攀岩比喻• 攀岩 Harness:不直接攀爬,但把人连到绳索/锁扣上,挂粉袋和工具,保命、控速、可换山头、可改装。• Agent Harness:不直接推理,但把 AI 模型连到工具、指令、循环和模型接口上,保住用户控制权,可跨模型、可自定义。 二、Agent Harness 的定义一段运行环境软件,套在 AI 大模型外面。和模型最大的区别:用户可以自己拥有、本地运行、改系统提示、加扩展。三、Harness 要做的四件事1. System Prompt(系统提示)像新员工入职手册,每次对话注入,规定“在这个环境里你该怎么答”。不写死在模型权重里,可改。2. Tools(工具集)提供搜索、写代码、发邮件等可调用能力,只描述、不规定调用时机,让模型自己判断用不用、何时用。3. Agentic Loop(代理循环)理解任务 → 调工具 → 看结果 → 不满意再循环 → 满意则交付。文章举例:比本地小学排名,搜索不够再搜、用代码做表、再核对、最后发邮件附表,模型自己判断“做完了”。这是 Chatbot 和 Agent 的分水岭。4. Translation Layer(翻译层)屏蔽 Anthropic / OpenAI / 开源权重的接口差异,同一套 Harness 换模型不换工作流,用户掌握选型权和会话记录。四、为什么它关乎“人的主动权”• 模型归企业,Harness 可以开源本地跑(如 Pi、OpenClaw、Lefos)。• Pi 极简:短系统提示、小工具集、可改 prompt/加扩展,用户间共享 5000+ 扩展。• 早期 Claude Code 不算中立,后来开源 Harness 兴起,Earendil 做 Pi 的初衷就是把“换锤子还是被锤子挥”的选择权交回用户。五、总结 攀岩 Harness Agent Harness 基础定位不直接攀爬,而是连接人与绳索、锁扣 不直接推理,而是连接 AI 模型与工具、指令 核心作用保命、控速、防坠落 保控制权、防模型失控、规范行为边界 可替换性换不同山头只需换绳,Harness 通用 换不同模型只需换接口,Harness 不变 可定制性挂粉袋、快挂、按体型调节 改系统提示、增减工具、加自定义扩展 谁拥有它你自己买的,不是岩馆专属 你可以本地部署,不是大厂专有 运作方式人动→绳动→Harness 传力 模型思考→调工具→Harness 协调循环 对应产物一套完整的安全攀登系统 一套完整的、你可掌控的 Agent 系统 攀岩 Harness 让你安全地挂在岩壁上干活,Agent Harness 让你安全地挂着模型干活。模型是发动机,Harness 是车架、方向盘和安全带;没有 Harness,LLM 只是答题机,有了 Harness,它才成了你能管得住的 Agent。六、应用以一个具体的真实场景为例:帮用户完成「调研三家 SaaS 竞品并生成对比报告」。以下是完整的工作流程,每一步都对应 Harness 的四个核心组件(System Prompt、Tools、Agent Loop、Translation Layer)。场景设定• 用户输入:「帮我调研 Asana、Monday.com、ClickUp 这三家项目管理工具的定价、核心功能和用户评价,做成表格给我」• Harness 配置:System Prompt 设定为「你是专业 SaaS 分析师,所有数据必须标注来源和时间,不做推测」• 可用工具:search_web(query)、read_url(url)、write_file(filename, content)、confirm_with_user(message)完整执行流程Step 1:接收任务,注入 System Prompt 用户消息 → Harness 收到Harness 拼接:System Prompt + 用户请求 → 发给 LLMLLM 返回:思考后的第一步计划 LLM 实际返回(内部思维):我需要分别搜索三家产品的定价页面和 G2/Capterra 评分。先搜 Asana。Step 2:第一轮工具调用 LLM 输出:tool_call → search_web("Asana pricing 2026")Harness 的 Agent Loop 拦截到 tool_call→ 经过 Tool Registry 匹配到 search_web→ 执行搜索,拿到结果→ 将结果追加到 messages 列表(role: tool)→ 再次发给 LLM 此时 messages 结构: [ {role: "system", content: "你是专业SaaS分析师..."}, {role: "user", content: "帮我调研三家..."}, {role: "assistant", content: "我先搜索Asana定价", tool_calls: [...]}, {role: "tool", tool_call_id: "call_xxx", content: "Asana Starter $10.99/月..."}] Step 3:第二轮 —— 读取详情页 LLM 看到搜索结果后判断:需要读取具体定价页面→ 输出 tool_call → read_url("asana.com/pricing")→ Harness 执行,拿到 HTML 正文→ 追加到 messages,继续循环 Step 4:第三轮 —— 发现需要用户确认 LLM 读完 Asana 定价后发现:三家价格区间接近,要不要深入对比功能?→ 输出 tool_call → confirm_with_user("Asana定价已获取,是否继续对比Monday和ClickUp的功能差异?")→ Harness 暂停循环,等待用户回复→ 用户回复「继续」→ Harness 将用户确认追加到 messages,继续 Step 5:重复搜索 + 读取 Monday.com、ClickUp LLM 依次调用: search_web("Monday.com pricing 2026") → read_url(...) search_web("ClickUp pricing 2026") → read_url(...) search_web("G2 Asana vs Monday vs ClickUp reviews 2026") → read_url(...)每步都由 Harness 的 Agent Loop 接管:执行 → 追加结果 → 重新发给 LLM Step 6:生成最终产出 LLM 收集完所有数据后判断:信息足够,不需要再调工具→ 输出纯文本(无 tool_call)→ Harness 检测到无 tool_call → 跳出循环→ 将 LLM 的回答返回给用户 LLM 最终输出(由 Harness 原样传递给用户):维度 Asana Monday.com ClickUp 起售价 10.99/月 12/月 10/月 核心功能 时间线、工作流自动化 看板、仪表盘 Docs、目标追踪 G2 评分 4.4 (2000+条) 4.5 (1800+条) 4.6 (1500+条) 最佳场景 中型团队项目管理 营销团队 初创公司全能 这个过程中 Harness 做了哪些幕后工作Harness 组件 在本例中的具体行为 System Prompt 确保 LLM 不会瞎编数据,所有结论都标注了来源 Tool Registry 识别 search_web、read_url 等调用,路由到正确执行函数 Agent Loop 管理 6 轮工具调用 + 1 次用户确认暂停 + 最终跳出循环 Translation Layer 无论底层是 Claude / GPT / 开源模型,messages 格式统一转换 权限控制 write_file 没被调用(本例未要求保存),confirm_with_user 触发了人工确认 上下文管理 6 轮交互 + 搜索结果塞满窗口时,自动对旧工具输出做摘要压缩 关键设计决策点1. 为什么不是一次把所有搜索全扔出去?• LLM 每次只能看到当前结果来决定下一步。先搜 Asana 发现价格,再决定要不要对比功能——这是 Agent Loop 的价值,不是简单批处理。2. 为什么要有 confirm_with_user?• 防止 LLM 自作主张跑偏方向。用户可能只想看价格,不想看功能对比。Harness 提供了「暂停→问人→继续」的机制。3. 如果 API 超时怎么办?• Harness 的 Translation Layer 会捕获超时异常,自动重试一次,若失败则降级换模型(比如从 Claude Sonnet 降到 Haiku),保证任务不中断。 来源:数值分析与有限元编程

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈