Exemplo n.º 1
0
def main():
    x = np.arange(1, 11)

    y = func(x, COEFFICIENTS)
    yn = y + NOISE * np.random.randn(len(y))

    solver = GNSolver(fit_function=func, max_iter=30)
    init_guess = [1, 1, 1, 1]  #1000000 * np.random.random(len(COEFFICIENTS))
    a = solver.fit(x, yn, init_guess)
    fit = solver.get_estimate()
    residual = solver.get_residual()
    print(a)
    plt.figure()
    plt.plot(x, y, label="Original, noiseless signal", linewidth=2)
    plt.plot(x, yn, label="Noisy signal", linewidth=2)
    plt.plot(x, fit, label="Fit", linewidth=2)
    plt.plot(x, residual, label="Residual", linewidth=2)
    plt.title("Gauss-Newton: curve fitting example")
    plt.xlabel("X")
    plt.ylabel("Y")
    plt.grid()
    plt.legend()
    plt.show()
Exemplo n.º 2
0
from model import func, der_func, der2_func
import numpy as np
from myGNE import GNSolver #
from datetime import datetime
from scipy.interpolate import griddata
import lhsmdu #latin hypercube
import tools
COEFFICIENTS = [2.4, 0.16]

x = np.linspace(2,6,15)
#x = np.mgrid[0.1:10:20j, 0.1:10:20j].reshape(2, -1).T
y = func(x,COEFFICIENTS)
maxIterations = 100
Ans = None
cnt = 0;
coeff = 20
coefff = 1
for NOISE in np.linspace(0,4*coeff,9):
    SNR = 10*np.log10(np.abs(np.mean(y))/(np.abs(np.mean(y))+NOISE))
    #NOISE = np.linalg.norm(y)/SNR - np.linalg.norm(y)
    for DISTANCE in np.linspace(0,6/coefff,13):
        ans = []
        for r in range(3):
            cnt+=1
            tools.printProgressBar(cnt, 3*13*9, prefix="Progress", suffix="Complete", length = 50)
            yn = y + NOISE * (np.array(lhsmdu.sample(y.shape[0],1)).flatten())
            init_guess = ((np.array(lhsmdu.sample(len(COEFFICIENTS),1)).flatten()))*(10**DISTANCE)
            g = GNSolver(func, der_func, der2_func, original_root=COEFFICIENTS,max_iter = maxIterations)
            startTime = datetime.now()
            a = g.fit(x,yn,init_guess, False)
            if a is not None: