为 spring 群众力量创建 python 代码

Creating python code for spring mass forces

我正在尝试创建一个函数来计算 F1+F2+Gravity 力的总和。根据我的计算,我要创建的公式是

到目前为止我已经完成了基础知识 -

import numpy

#varibles from example problem
a1 = numpy.array([0,0])
a2 = numpy.array([1,1])
s1,s2 = 10,10 
L1,L2=1,2
m=1
def SpringForces(a1,a2,s1,s2,l,m):
    G = numpy.array([0,-9.81*m]) 
    #algorithm
    return F1+F2+G 

我真的不知道从哪里开始创建公式。我应该为 k 等于 1 和 2 创建一个小的 for 循环吗?

编辑: 我的新密码是

  def SpringForces(a1,a2,s1,s2,L1,L2,m):
    G = numpy.array([0,-9.81*m]) 
    F1 = s1 * ((L1)/numpy.abs(x-a1)-1) * (x-a1)
    F2 = s2 * ((L2)/numpy.abs(x-a2)-1) * (x-a2)
    return F1+F2+G 

在这一点上,您应该使用循环,因为您没有任何可以轻松迭代的结构。如果您将下标元素(例如 s1, s2)转换为数组或列表而不是附加的变量名称,则 然后 您可以利用循环。不过,对于两个元素,我建议您分别编写每个方程式。当您对构造更满意时进行概括。

您应该定义 SpringForce 函数来分别计算每个 spring 力,然后在最后将这些力相加。

def springForce(x, s, a, l):
    return s*((l/abs(x-a))-1)*(x-a)

F = springForce(x, s1, a1, l1) + springForce(x, s2, a2, l2) + G

值得注意的是,您在初始代码示例中对函数所做的操作有点毫无意义。您可能想要创建一个函数有两个原因:

  1. 避免多次重复完全相同的代码
  2. 抽象出代码块,可能增强可读性

你写的函数不会做这两件事,所以你最好不要它。