algorithm - 求解 3 个方程、2 个未知数系统的最小化算法
问题描述
作为一名土木工程师,我正在研究一个程序,以找到提交给弯曲力矩的混凝土钢筋截面的平衡。
钢筋混凝土横截面平衡:
基本上,我有 2 个未知数,它们是eps_sup和eps_inf
我有一个常量M
我有一些变量只取决于(eps_sup,eps_inf)的值。函数是非线性的,无需赘述。
当我有正确的几个值时,将验证以下等式:
Fc + Fs = 0(力平衡)
M/z = Fc = -Fs(力矩平衡)
我的算法,就像今天一样,包括找到最小值:abs(Fc+Fs)/Fc + abs(M_calc-M)/M
为此,我在给定的限制之间迭代e eps_sup和eps_inf,并使用给定的步长,并且步长需要足够小才能找到解决方案。
它正在工作,但它非常(非常)慢,因为它通过非常广泛的值而不试图减少迭代次数。
当然,我可以找到一个优化的解决方案,那就是我需要你的帮助。
'Constants :
M
'Variables :
delta = 10000000000000
eps_sup = 0
eps_inf = 0
M_calc = 0
Fc = 0
Fs = 0
z = 0
eps_sup_candidate = 0
eps_inf_candidate = 0
For eps_sup = 0 to 0,005 step = 0,000001
For eps_inf = -0,05 to 0 step = 0,000001
Fc = f(eps_sup,eps_inf)
Fs = g(eps_sup,eps_inf)
z = h(eps_sup,eps_inf)
M_calc = Fc * z
If (abs(Fc+Fs)/Fc + abs(M_calc-M)/M) < delta Then
delta = abs(Fc+Fs)/Fc + abs(M_calc-M)/M
eps_sup_candidate = eps_sup
eps_inf_candidate = eps_inf
End If
Next
Next
解决方案
推荐阅读
- sql - 对多个动态声明的变量求和(快速)
- c# - ASP.Net MVC 从外部 API 返回文件作为附件
- android - React Native 找不到 com.android.support:appcompat-v7:${supportVersion}
- android - 如何从 Float 中删除 .0
- jquery - 如何让一个 MutationObserver 监听多个元素的变化?
- java - 为什么通过data.sql文件导入时会出现此错误“创建类路径资源中定义的名称为'entityManagerFactory'的bean时出错”
- javascript - 在没有 setInterval 的情况下在持续时间内增加值
- reactjs - 如何根据另一个表单字段动态显示隐藏Formik表单字段
- data-structures - 使用包含获取 DDIC 结构的组件
- r - 将列表作为元素添加到数据框