Python和MATLAB粘性力接触力动态模型半隐式欧拉算法
🎯要点
🎯运动力模型计算制作过程:🖊相机捕捉网球运动图,制定运动数学模型,数值微分运动方程 | 🖊计算运动,欧拉算法离散积分运动,欧拉-克罗默算法微分运动方程
🎯粘性力模型计算制作过程:🖊绘制雨滴、环境和坐标系下落自由体草图,使用牛顿第二定律制定运动数学模型,定义无空气阻力和恒速简化数学模型,数值模型解析
🎯固体-固体接触力模型计算制作过程:🖊实验绘制悬块弹簧形变量图,使用牛顿第二定律制定平衡模型,定义无空气阻力简化数学模型,欧拉-克罗默算法数值求解,制作三维动态可视图
🎯移动物体间复合力模型计算制作过程:🖊实验绘制电梯,物重和人自由体图,模型使用牛顿第三定律确定力对和牛顿第二定律确定图中运动体,解析无运动和相对运动简化力模型
🎯龙卷风、弹跳球和河流上船只三维运动力模型计算制作过程 | 🎯加速实验车、旋转杆、圆周运动,风中的珠子和地震期间的振荡中约束运动力模型计算制作过程
📜物理学和数学模型用例 | 本文
📜物理数学波形方程:Python数值和符号算法计算及3D视图物理数学波形方程
📜物理数学热力学静电学和波动方程:Python和C++数学物理计算分形热力学静电学和波动方程
📜物理数学拉格朗日和哈密顿动力学:Python计算物理粒子及拉格朗日和哈密顿动力学
📜物理数学气体动能和粒子速度:MATLAB和Python数值和符号计算可视化物理学气体动能和粒子速度
📜物理统计推理模型:Python射频电磁肿瘤热疗数学模型和电磁爆炸性变化统计推理模型
📜物理数学流体力学:C++风流和MATLAB | Python | CUDA 库埃特流泊肃叶流薄膜流体
📜物理数学气体运动模型:C++ | Python气泡表面张力和预期形态及上升速度数值模型
🍇Python半隐式欧拉方法
在数学中,半隐式欧拉方法也称为辛欧拉、半显式欧拉、欧拉-克罗默和牛顿-斯托默-韦莱,是欧拉方法的一种改进,用于求解哈密顿方程,哈密顿方程是经典力学中出现的常微分方程组。半隐式欧拉方法是一种辛积分器,因此比标准欧拉方法能得到更好的结果。
半隐式欧拉方法可以应用于一对以下形式的微分方程:
d x d t = f ( t , v ) d v d t = g ( t , x ) \begin{aligned} & \frac{d x}{d t}=f(t, v) \\ & \frac{d v}{d t}=g(t, x) \end{aligned} dtdx=f(t,v)dtdv=g(t,x)
其中 f f f 和 g g g 是给定函数。这里, x x x和 v v v可以是标量或向量。如果哈密顿量具有以下形式,则哈密顿力学中的运动方程采用这种形式
H = T ( t , v ) + V ( t , x ) H=T(t, v)+V(t, x) H=T(t,v)+V(t,x)
微分方程需在初始条件下求解
x ( t 0 ) = x 0 , v ( t 0 ) = v 0 x\left(t_0\right)=x_0, \quad v\left(t_0\right)=v_0 x(t0)=x0,v(t0)=v0
欧拉方法对于振荡系统存在一个根本问题。再看一下欧拉方法的近似,得到下一个时间间隔的位置:
x ( t i + Δ t ) ≈ x ( t i ) + v ( t i ) Δ t x\left(t_i+\Delta t\right) \approx x\left(t_i\right)+v\left(t_i\right) \Delta t x(ti+Δt)≈x(ti)+v(ti)Δt
它使用时间间隔开始时的速度值来将解逐步推向未来。
由于欧拉方法通过线性近似将解投影到未来,并假设区间开始时的导数值,因此它对于振荡函数来说不是很好。改进欧拉方法的一个聪明的想法是使用第二个方程的导数的更新值。
纯欧拉方法适用:
x ( t 0 ) = x 0 , x i + 1 = x i + v i Δ t v ( t 0 ) = v 0 , v i + 1 = v i − ω 2 x i Δ t \begin{aligned} x\left(t_0\right)=x_0, & x_{i+1}=x_i+v_i \Delta t \\ v\left(t_0\right)=v_0, & v_{i+1}=v_i-\omega^2 x_i \Delta t \end{aligned} x(t0)=x0,v(t0)=v0,xi+1=xi+viΔtvi+1=vi−ω2xiΔt
如果在 v v v 的方程中您使用了刚刚计算的值 x i + 1 x_{i+1} xi+1 会怎样?像这样:
x ( t 0 ) = x 0 , x i + 1 = x i + v i Δ t v ( t 0 ) = v 0 , v i + 1 = v i − ω 2 x i + 1 Δ t \begin{aligned} & x\left(t_0\right)=x_0, \quad x_{i+1}=x_i+v_i \Delta t \\ & v\left(t_0\right)=v_0, \quad v_{i+1}=v_i-\omega^2 x_{i+1} \Delta t \\ & \end{aligned} x(t0)=x0,xi+1=xi+viΔtv(t0)=v0,vi+1=vi−ω2xi+1Δt
请注意第二个方程右侧的 x i + 1 x_{i+1} xi+1:这是更新后的值,给出时间间隔结束时的加速度。这种修改后的方案称为欧拉-克罗默方法。
代码实现:
def euler_cromer(state, rhs, dt):mid_state = state + rhs(state)*dt # Euler stepmid_derivs = rhs(mid_state) # updated derivativesnext_state = np.array([mid_state[0], state[1] + mid_derivs[1]*dt])return next_state
模拟数据
w = 2
period = 2*np.pi/w
dt = period/200
T = 800*period
N = round(T/dt)print('The number of time steps is {}.'.format( N ))
print('The time increment is {}'.format( dt ))t = np.linspace(0, T, N)x0 = 2
v0 = 0 num_sol = np.zeros([N,2])
num_sol[0,0] = x0
num_sol[0,1] = v0for i in range(N-1):num_sol[i+1] = euler_cromer(num_sol[i], springmass, dt)
The number of time steps is 160000. The time increment is 0.015707963267948967
首先,得到解析解。然后,您选择绘制振荡运动的前几个周期:数值和解析。
x_an = x0*np.cos(w * t)
iend = 800
fig = plt.figure(figsize=(6,4))
plt.plot(t[:iend], num_sol[:iend, 0], linewidth=2, linestyle='--', label='Numerical solution')
plt.plot(t[:iend], x_an[:iend], linewidth=1, linestyle='-', label='Analytical solution')
plt.xlabel('Time [s]')
plt.ylabel('$x$ [m]')
plt.title('Spring-mass system, with Euler-Cromer method.\n');
该图显示,欧拉-克罗默不存在振幅增大的问题。从这个意义上讲,你应该对此感到满意。但是,如果你绘制一段较长模拟的末尾,你就会发现它确实开始偏离解析解。
istart = 400fig = plt.figure(figsize=(6,4))plt.plot(t[-istart:], num_sol[-istart:, 0], linewidth=2, linestyle='--', label='Numerical solution')
plt.plot(t[-istart:], x_an[-istart:], linewidth=1, linestyle='-', label='Analytical solution')
plt.xlabel('Time [s]')
plt.ylabel('$x$ [m]')
plt.title('Spring-mass system, with Euler-Cromer method. \n');
观察一段很长的运行中的最后几次振荡,即使时间增量很小,也会发现轻微的相位差。因此,尽管欧拉-克罗默方法解决了欧拉方法的一个大问题,但它仍然存在一些错误。它仍然是一阶方法!
👉参阅:计算思维 | 亚图跨际
相关文章:

Python和MATLAB粘性力接触力动态模型半隐式欧拉算法
🎯要点 🎯运动力模型计算制作过程:🖊相机捕捉网球运动图,制定运动数学模型,数值微分运动方程 | 🖊计算运动,欧拉算法离散积分运动,欧拉-克罗默算法微分运动方程 &#…...

webstorm无法识别tsconfig.json引用项目配置文件中的路径别名
问题 vite项目模板中,应用的ts配置内容写在tsconfig.app.json文件中,并在tsconfig.json通过项目引用的方式导入 {"files": [],"references": [{"path": "./tsconfig.app.json"},{"path": "./t…...

qiankun微前端:qiankun+vite+vue3+ts(未完待续..)
目录 什么是微前端 目前现有的微前端 好处 使用 子应用的页面在主应用里显示 什么是微前端 微前端是一种多个团队通过独立发布功能的方式来共同构建现代化 web 应用的技术手段及方法策略。 我的理解就是将一个大型的前端应用拆分成多个模块,每个微前端模块可以由…...

001:开源交易系统开发实战开篇
本专栏采用融入【主力思维】的方法学,包含数据抓取、特征模型开发、历史验证回归测试、每日动态风险评估管理等技术,较大的增强股票投资胜率,让IT开发者拥有一套属于自己思路的专用交易软件。 先简要介绍系统成功和项目,后续持续…...

Pytorch实战(一):LeNet神经网络
文章目录 一、模型实现1.1数据集的下载1.2加载数据集1.3模型训练1.4模型预测 LeNet神经网络是第一个卷积神经网络(CNN),首次采用了卷积层、池化层这两个全新的神经网络组件,接收灰度图像,并输出其中包含的手写数字&…...

RabbitMq的基础及springAmqp的使用
RabbitMq 官网:RabbitMQ: One broker to queue them all | RabbitMQ 什么是MQ? mq就是消息队列,消息队列遵循这先入先出原则。一般用来解决应用解耦,异步消息,流量削峰等问题,实现高性能,高可用…...

uniapp uniCloud云开发
uniCloud概述 uniCloud 是 DCloud 联合阿里云、腾讯云、支付宝云,为开发者提供的基于 serverless 模式和 js 编程的云开发平台。 uniCloud 的 web控制台地址:https://unicloud.dcloud.net.cn 文档:https://doc.dcloud.net.cn/uniCloud/ un…...

智能扫地机,让生活电器更加便民-NV040D扫地机语音方案
一、语音扫地机开发背景: 随着人工智能和物联网技术的飞速发展,智能家居设备已成为现代家庭不可或缺的一部分。其中,扫地机作为家庭清洁的重要工具,更是得到了广泛的关注和应用。 然而,传统的扫地机在功能和使用上仍存…...

【后端面试题】【中间件】【NoSQL】ElasticSearch索引机制和高性能的面试思路
Elasticsearch的索引机制 Elasticsearch使用的是倒排索引,所谓的倒排索引是相对于正排索引而言的。 在一般的文件系统中,索引是文档映射到关键字,而倒排索引则相反,是从关键字映射到文档。 如果没有倒排索引的话,想找…...

【漏洞复现】时空智友ERP updater.uploadStudioFile接口处存在任意文件上传
0x01 产品简介 时空智友ERP是一款基于云计算和大数据技术的企业资源计划管理系统。该系统旨在帮助企业实现数字化转型,提高运营效率、降低成本、增强决策能力和竞争力,时空智友ERP系统涵盖了企业的各个业务领域,包括财务管理、供应链管理、生…...
[leetcode hot 150]第五百三十题,二叉搜索树的最小绝对差
题目: 给你一个二叉搜索树的根节点 root ,返回 树中任意两不同节点值之间的最小差值 。 差值是一个正数,其数值等于两值之差的绝对值。 解析: minDiffInBST 方法是主要方法。创建一个 ArrayList 来存储树的节点值。inorderTrave…...
【Docker】可视化平台Portainer
文章目录 Portainer的特点Portainer的安装步骤注意事项 Docker的可视化工具Portainer是一个轻量级的容器管理平台,它为用户提供了一个直观的图形界面来管理Docker环境。以下是关于Portainer的详细介绍和安装步骤: Portainer的特点 轻量级:P…...

MySQL高级-MVCC-原理分析(RR级别)
文章目录 1、RR隔离级别下,仅在事务中第一次执行快照读时生成ReadView,后续复用该ReadView2、总结 1、RR隔离级别下,仅在事务中第一次执行快照读时生成ReadView,后续复用该ReadView 而RR 是可重复读,在一个事务中&…...

压力测试Monkey命令参数和报告分析
目录 常用参数 -p <测试的包名列表> -v 显示日志详细程度 -s 伪随机数生成器的种子值 --throttle < 毫秒> --ignore-crashes 忽略崩溃 --ignore-timeouts 忽略超时 --monitor-native-crashes 监视本地崩溃代码 --ignore-security-exceptions 忽略安全异常 …...

C# Benchmark
创建控制台项目(或修改现有项目的Main方法代码),Nget导入Benchmark0.13.12,创建测试类: public class StringBenchMark{int[] numbers;public StringBenchMark() {numbers Enumerable.Range(1, 20000).ToArray();}[Be…...

算法金 | 协方差、方差、标准差、协方差矩阵
大侠幸会,在下全网同名「算法金」 0 基础转 AI 上岸,多个算法赛 Top 「日更万日,让更多人享受智能乐趣」 抱个拳,送个礼 1. 方差 方差是统计学中用来度量一组数据分散程度的重要指标。它反映了数据点与其均值之间的偏离程度。在…...

FastAPI教程II
本文参考FastAPI教程https://fastapi.tiangolo.com/zh/tutorial Cookie参数 定义Cookie参数与定义Query和Path参数一样。 具体步骤如下: 导入Cookie:from fastapi import Cookie声明Cookie参数,声明Cookie参数的方式与声明Query和Path参数…...

Facebook的投流技巧有哪些?
相信大家都知道Facebook拥有着巨大的用户群体和高转化率,在国外社交推广中的影响不言而喻。但随着Facebook广告的竞争越来越激烈,在Facebook广告上获得高投资回报率也变得越来越困难。IPIDEA代理IP今天就教大家如何在Facebook上投放广告的技巧࿰…...
Spring Boot 中的微服务监控与管理
微服务的概述 微服务架构的优点和挑战 优点: 灵活性和可扩展性:微服务架构允许每个服务单独部署和扩展,这使得系统可以更灵活地适应不同的业务需求和负载变化。 使团队更加聚焦:每个微服务都有明确的职责,这使得开发团队可以更加聚焦,专注于开发他们的服务。 技术和框…...
【计算机网络】期末复习(1)模拟卷
一、选择题 1. 电路交换的三个阶段是建立连接、()和释放连接 A. Hello包探测 B. 通信 C. 二次握手 D. 总线连接 2. 一下哪个协议不属于C/S模式() A. SNMP…...

使用VSCode开发Django指南
使用VSCode开发Django指南 一、概述 Django 是一个高级 Python 框架,专为快速、安全和可扩展的 Web 开发而设计。Django 包含对 URL 路由、页面模板和数据处理的丰富支持。 本文将创建一个简单的 Django 应用,其中包含三个使用通用基本模板的页面。在此…...

调用支付宝接口响应40004 SYSTEM_ERROR问题排查
在对接支付宝API的时候,遇到了一些问题,记录一下排查过程。 Body:{"datadigital_fincloud_generalsaas_face_certify_initialize_response":{"msg":"Business Failed","code":"40004","sub_msg…...

Appium+python自动化(十六)- ADB命令
简介 Android 调试桥(adb)是多种用途的工具,该工具可以帮助你你管理设备或模拟器 的状态。 adb ( Android Debug Bridge)是一个通用命令行工具,其允许您与模拟器实例或连接的 Android 设备进行通信。它可为各种设备操作提供便利,如安装和调试…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
Qwen3-Embedding-0.6B深度解析:多语言语义检索的轻量级利器
第一章 引言:语义表示的新时代挑战与Qwen3的破局之路 1.1 文本嵌入的核心价值与技术演进 在人工智能领域,文本嵌入技术如同连接自然语言与机器理解的“神经突触”——它将人类语言转化为计算机可计算的语义向量,支撑着搜索引擎、推荐系统、…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)
1.获取 authorizationCode: 2.利用 authorizationCode 获取 accessToken:文档中心 3.获取手机:文档中心 4.获取昵称头像:文档中心 首先创建 request 若要获取手机号,scope必填 phone,permissions 必填 …...

AI病理诊断七剑下天山,医疗未来触手可及
一、病理诊断困局:刀尖上的医学艺术 1.1 金标准背后的隐痛 病理诊断被誉为"诊断的诊断",医生需通过显微镜观察组织切片,在细胞迷宫中捕捉癌变信号。某省病理质控报告显示,基层医院误诊率达12%-15%,专家会诊…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek
文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama(有网络的电脑)2.2.3 安装Ollama(无网络的电脑)2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf
FTP 客服管理系统 实现kefu123登录,不允许匿名访问,kefu只能访问/data/kefu目录,不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...