我需要在Python中为我的一个课程建模一个弹簧,它并没有真正起作用。我是二阶微分方程,我把它翻译成2个一阶微分方程,得到一个系统。 有人可以查看我的代码,并让我知道我该怎么办?对我来说,方程式很好,我只是不知道如何绘制它......
from math import pi
from time import sleep
from turtle import *
k=1
m=1
def main():
L = 5
total_time = 0
vo = 0 #Vitesse angulaire initial (rad/s)
time_step = 0.05
while total_time < 100:
total_time += time_step
vo += (-k/m) * L * time_step
L += vo * time_step
if draw(L): break
sleep(time_step)
def init():
setup()
mode('logo')
radians()
speed(0)
tracer(False)
hideturtle()
def draw(L):
if speed() != 0: return True
clear()
pendown()
setheading(L)
penup()
pensize(5)
pencolor('red')
dot(L * 10)
home
update()
if __name__ == '__main__':
init()
main()
答案 0 :(得分:0)
就我记忆中的物理课程而言,你的方程是好的,但L变量在-5到+5之间变化,而不是在0到+5之间。
dot(radius)
功能绘制一个圆圈。半径需要是正的。
只需替换:
dot(L * 10)
by:
dot(51 + L * 10)
(我把&#34; 51&#34;而不是&#34; 50&#34;以确保避免由于浮点数的粗略近似而导致的错误)
一些小提示:当您不了解会发生什么时,请尝试确定变量的当前值。
您可以通过在主函数的循环中添加print("vo:", vo, "L:", L, "total_time:", total_time)
来猜测L在-5到+5之间变化。