前言
众所周知Excel是一款非常强大的实用的办公软件,其内嵌的数量巨大的函数库基本能够满足我们日常工作需求。但由于需求的多样性,仍有一些功能无法满足,如需要进行迭代计算的函数功能等,这就需要自己定义特殊的函数以供特殊需求用啦。本贴以迭代求解悬链线索长为例,给出在VBA中自定义函数的方法,以飨读者。
一、工程背景
悬链线是自然界中最常见的一类线形,如晾衣绳、轮船系泊链、斜拉桥拉索等,关于其介绍请读者参考其他相关读物。悬链线微分方程(已知索力T求索长S)的求解思路如下:
显然,方程式(6)为隐函数方程,通常没有解析解,因此需要构造迭代方程,进行迭代求解,思路如下:
- 选定迭代初值:取水平索力的迭代初值为H0=T*cos(atan(h/l));
- 根据公式(4)计算中间参数C1;
- 根据公式(5)计算A点斜率KA;
- 根据公式(6)迭代计算索力水平分力H1
- 比较迭代前后H0与H1的差值,如果满足误差精度要求,则结束迭代,否则令H0=H1,返回到步骤2
- 索力水平分力为H1
- 根据公式(7)和(9)计算索长与无应力索长。
二、功能实现
点击开发工具>Visual Basic,插入“模块”,添加代码