我想迭代一个现有的for循环很多次,以至于我取结果列表的平均值时,它们会收敛。我不确定如何执行此操作并感谢您提出建议。是无限还是真的很多?有没有更优雅的方法?
谢谢。
答案 0 :(得分:1)
虽然可以循环到无穷大(使用clc;clear ALL;close all;
[t,y]=ode45(@(t,y)DRV(y),[0 10],[0.8224 0.2226 0.4397 0.3604 -1.5 -5.9 -6.5 0 0 0 0 0 0 0.1 0.2])
),但似乎没有任何理由使事情变得复杂,因为您不打算使用
如果您只想循环直到条件为真,请使用for loop in itertools.count():
循环:
while
如果您不能方便地将while not converged():
# your code here
测试放在循环的开头,请永远循环并在体内进行测试:
converged()
我不确定您在此处“收敛”的含义是什么,但是听起来可能涉及的结果与上一个循环的结果足够接近吗?如果是这样,则需要保留之前的结果以进行测试。
例如:
while True:
# your code here
if converged():
break
或者也许您想知道更改是否与先前的更改方向相同且小于先前的更改?然后,您需要保留前两个平均值,或者前一个平均值和前一个更改。无论您想要什么,都应该很容易做到。