这是我关于stackoverflow的第一个问题。如果有点笨拙,我很抱歉
我试图求解一个描述成层土壤中梁的静力平衡。就作用在梁上的力而言,有一些外力,土壤对该力有反作用力。显然,行动和反应必须平衡。反作用力是土壤在不同土层上的作用力总和。土壤的响应是位移的非线性函数。基本上,这个特殊的平衡是一个标量,因为它只是反应=作用的总和
另一方面,梁内的内力也必须与作用在相关梁单元上的局部力平衡。假设我们有40个这样的元素。简言之,我面临的问题如下:
我需要找到F1的根(x1,x2,…x40),其中x1,x2…x40描述了桩在土壤中的位移。我通过并初步猜测位移,然后Fsolve返回一个向量长度40,它给出F1=[0,0…0]。。这基本上平衡了内力和梁上的局部力(实际上是曲率和力矩)
问题是我似乎无法添加一个额外的约束,即我上面描述的全局平衡,因为这违反了fsolve中的条件,即输出向量长度必须等于输入向量长度。我似乎无法在Fsolve中添加这样的约束。我也采用了优化的方法,可以在其中添加约束,但这不起作用,因为它优化了标量,并且不适用于向量根
也许我只是错过了一些愚蠢的事情,但几天来我一直在徒劳地搜寻stackoverflow。我可能可以用微分方程解算器来解,但如果可以避免的话,出于各种原因,我不想这样做。 任何能给我一个新角度的东西都会有帮助!python是一个全新的工具,所以我非常感谢迄今为止我读到的所有有用的解决方案,即使它并没有让我达到目的
通常,我们有n个方程和n个变量,即一个平方系统。如果解不是唯一的,这意味着你的方程不是独立的。添加其他约束时,不能再使用方形系统解算器。然而,使用非线性优化求解器是完全可能的。例如,我们可以写:
如果您想要接近的解决方案,可以添加松弛并最小化平方误差之和:
我经常使用这种方法
相关问题 更多 >
编程相关推荐