我正在尝试创建一个能够计算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
答案 0 :(得分:2)
你应该定义你的SpringForce函数来单独计算每个弹簧力,然后在最后加上力。
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 :(得分:0)
此时,您应该不使用循环,因为您没有任何可以轻松迭代的结构。如果您将下标元素(例如s1, s2
)转换为数组或列表而不是附加变量名称,那么然后就可以利用循环。但是,对于仅仅两个元素,我建议你分别编写每个方程。当你对构造更加熟悉时进行概括。