为 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
值得注意的是,您在初始代码示例中对函数所做的操作有点毫无意义。您可能想要创建一个函数有两个原因:
- 避免多次重复完全相同的代码
- 抽象出代码块,可能增强可读性
你写的函数不会做这两件事,所以你最好不要它。
我正在尝试创建一个函数来计算 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
值得注意的是,您在初始代码示例中对函数所做的操作有点毫无意义。您可能想要创建一个函数有两个原因:
- 避免多次重复完全相同的代码
- 抽象出代码块,可能增强可读性
你写的函数不会做这两件事,所以你最好不要它。