def TimeFunctions(func, consts, initial=None, min=0, max=30, count=100, variance=1, iterations=10, precision=0.01, repeats=10): # Time for Gauss-Newton method gntime = 0 # Time for Newton method ntime = 0 for i in range(repeats): (xs, ys) = GetRandomData(func, consts, min, max, count, variance) start = time.clock() GaussNewton.Run(func, xs, ys, initial, iterations, precision) gntime += time.clock() - start start = time.clock() Newton.Run(func, xs, ys, initial, iterations, precision) ntime += time.clock() - start # Windows only os.system('cls') print(str(i) + " done") print("Gauss-Newton took: " + str(gntime)) print("Newton took: " + str(ntime))
def RunAndPlot(func, xs, ys, initial=None, iterations=10, precision=0.01, method='GN'): if method is 'GN' or method is '*': (result, CoD) = GaussNewton.Run(func, xs, ys, initial, iterations, precision) elif method is 'N': (result, CoD) = Newton.Run(func, xs, ys, initial, iterations, precision) try: print("Constants = " + str(result)) print("CoD = " + str(CoD)) PlotData(func, result, xs, ys) except: input("No results found. Press Enter to continue") # If method is '*', repeat with Newton if method is '*': (r, c) = RunAndPlot(func, xs, ys, initial, iterations, precision, method='N') return [(result, CoD), (r, c)] else: return (result, CoD)