水瓶加水时的重心变化,MATLAB计算与可视化

空水瓶的重心靠近中部,水量少时,重心靠下,水满时重心又回到中间了。

本文给出一个用于计算水瓶加水过程中,整体的重心变化情况,并绘制可视化的曲线图、示意图

文章目录

重心高度计算

考虑瓶子自重对重心的影响,我们需要分别计算水和瓶子自身的重心。

  • 瓶子自重重心 :假设瓶子的壁厚均匀且高度为 H H H,则瓶子的自重的重心高度位于瓶子高度的中点,即 H / 2 H/2 H/2。
  • 水的重心 :水的重心高度为 h / 2 h/2 h/2,其中 h h h 是水的高度。

总重心高度计算

总重心高度 z total z_{\text{total}} ztotal 可以通过以下公式计算:

z total = m bottle ⋅ z bottle + m water ⋅ z water m bottle + m water z_{\text{total}} = \frac{m_{\text{bottle}} \cdot z_{\text{bottle}} + m_{\text{water}} \cdot z_{\text{water}}}{m_{\text{bottle}} + m_{\text{water}}} ztotal=mbottle+mwatermbottle⋅zbottle+mwater⋅zwater

其中:

  • m bottle m_{\text{bottle}} mbottle 是瓶子的质量(可通过体积和密度计算),
  • z bottle = H 2 z_{\text{bottle}} = \frac{H}{2} zbottle=2H 是瓶子的重心高度,
  • m water m_{\text{water}} mwater是水的质量(可通过水的高度和密度计算),
  • z water = h 2 z_{\text{water}} = \frac{h}{2} zwater=2h 是水的重心高度。

MATLAB 代码

部分代码:

matlab 复制代码
% 水瓶加水时的重心变化,MATLAB计算与可视化
% 2025-01-28/Ver1


clc; clear; close all;

% 参数设置
H = 0.1; % 瓶子的总高度(米)
density_water = 1000; % 水的密度 (kg/m^3)
m_bottle = 0.2; %水瓶质量(kg)
% thickness = 0.01; % 瓶子壁厚(米)
S = 0.01; %水瓶截面积
num_samples = 100; % 采样点数量

% 水的高度变化
h = linspace(0, H, num_samples); % 从0到H的高度变化

% 计算重心高度

运行结果

说明

  1. 重心高度计算:在计算重心高度时,考虑了瓶子的自重及其对重心的影响。
  2. 可视化界面:同样提供了重心高度变化图和瓶子的示意图,帮助理解重心变化。

总结

通过将瓶子的自重考虑在内,模型更为准确,能够更真实地反映水位变化对重心的影响。这对于设计和分析瓶子的稳定性具有重要意义。

完整代码

如需帮助,或有导航、定位滤波相关的代码定制需求,请点击下方卡片联系作者

相关推荐
Wang's Blog几秒前
Java 项目实战:交友项目 - 我的访客:需求说明
java·开发语言·交友
布莱克60521 分钟前
C++ 中堆和栈的区别详解
开发语言·c++·栈·堆
像风一样自由202032 分钟前
3.Dockerfile如何构建一个Python算法镜像
开发语言·人工智能·python·大模型
BuHuaX2 小时前
Lua 与 ToLua:运行机制及热更新原理
开发语言·unity·junit·c#·lua
xys_6782 小时前
深挖C++:C++入门基础
开发语言·c++
幻境如梦丶皆为虚3 小时前
从零写一个 DSH 插件:在左侧菜单栏加一个「测试」
开发语言·javascript·ecmascript
LabVIEW开发3 小时前
LabVIEW 局部变量与数据流:这道 CLAD 题为什么答案是 Undefined
java·开发语言·labview
路溪非溪3 小时前
C++标准库之智能指针
linux·开发语言·c++
衍生星球3 小时前
【Java 语言】— 面向对象:构造方法(无参、有参构造)
java·开发语言