Python 将结果添加到列表并设置for循环
对于学校作业,我编写了一个算法,使用Euler方法计算坡度。在它的一部分,我有一个for循环,它将重复一个等式模式,直到最终结果得到满足。我需要的是一种方法,将每个结果添加到列表中,然后绘制列表中的每个项目。如果可能的话,我还需要一些帮助来设置for循环 以下是我所拥有的,请记住我在编码方面非常缺乏经验(请记住我)Python 将结果添加到列表并设置for循环,python,for-loop,differential-equations,calculus,Python,For Loop,Differential Equations,Calculus,对于学校作业,我编写了一个算法,使用Euler方法计算坡度。在它的一部分,我有一个for循环,它将重复一个等式模式,直到最终结果得到满足。我需要的是一种方法,将每个结果添加到列表中,然后绘制列表中的每个项目。如果可能的话,我还需要一些帮助来设置for循环 以下是我所拥有的,请记住我在编码方面非常缺乏经验(请记住我) 我非常感谢你们所能给予的一切帮助 听起来你要找的是一个while循环。像这样: t = 0 while t < 10: t = t + 1 # more cod
我非常感谢你们所能给予的一切帮助 听起来你要找的是一个
while
循环。像这样:
t = 0
while t < 10:
t = t + 1
# more code here
t=0
当t<10时:
t=t+1
#这里有更多代码
这里有一个方程的递归方法,让您了解我在评论中的意思
class Slope:
def __init__(self, timestamp, slope):
self.timestamp = timestamp
self.slope = slope
def find_slope(slopes, slope, step_size, until):
if slope.timestamp > until:
return slopes
current_y = slope.slope + step_size * slope.slope
slope = Slope(slope.timestamp + 1, current_y)
slopes.append(slope)
return find_slope(slopes, slope, step_size, until)
if __name__=="__main__":
initial_slope = Slope(0, 1)
for current in find_slope([], initial_slope, 1, 3):
print("slope: {slope}, timestamp: {timestamp}".format(**current.__dict__))
但有多种方法可以解决此问题,例如使用while或for循环。我也不得不承认你可以写一个简短的版本,但我认为冗长有助于你更好地理解
编辑
你的眼睛应该专注于这个功能
def find_slope(slopes, slope, step_size, until):
if slope.timestamp > until:
return slopes
current_y = slope.slope + step_size * slope.slope
slope = Slope(slope.timestamp + 1, current_y)
slopes.append(slope)
return find_slope(slopes, slope, step_size, until)
这是一个调用或更简单的函数,只要到达此处的某个点,它就会调用自己,如果slope.timestamp>一直到。第一个调用是使用我的初始坡度
(step\u size
和until
只是常量)
行current_y=slope.slope+step_size*slope.slope
计算新的坡度值。然后,我使用新的坡度值和更新时间创建一个坡度实例,并将其添加到列表中
斜率实例、斜率列表和常数通过调用函数返回find\u slope(斜率、斜率、步长、直到)
传递到下一步。返回不仅需要沿着阶梯向下并收集新的坡度,还需要返回起点,以便呼叫方能够接收到它
您可以使用
slopes = find_slope([], initial_slope, 1, 3)
把斜坡的清单拿回来。我用一个空列表初始化了它,该列表将被斜率填充,然后从这个函数返回。我认为您应该先弄清楚等式中的
xnext
是什么,以及它在等式f(t1)
中的样子。您需要在方程中找到模式,for循环或递归可能很容易;)你能详细说明一下吗?我很感兴趣,只是不完全理解。您可能想澄清一下,您所指的是哪种欧拉方法(他非常多产)以及t最终
代表了什么。如果这真的只是您流程的迭代次数,请接受下面@blues的答案。我的意思是,您应该先写下第一步(t_0)和第二步(t_1)的完整等式(带数字)。如果您已经这样做了,您将看到哪些变量发生了变化,哪些变量依赖于上一步,等等。如果您已经找到了模式,您将看到for循环、while循环或任何对T部分有意义的自动循环。非常感谢。哇,谢谢你!从我对它的理解来看,这就是我正在使用的方法类型。不幸的是,我不太明白。如果这对你不是一个很大的不便,你能不能请你解释一下不同的部分,以及它们如何与我试图做的相关?我看到你们正在使用一个坡度类,我现在肯定要合并它,我只是不知道如何合并。谢谢。@Noahprenger这有帮助吗?
slopes = find_slope([], initial_slope, 1, 3)