LM Algoritması ile Parametre Kestirimi

Aşağıda F(X,Y) = aX^2 + bY^2 fonksiyonunda a ve b parametrelerinin LM algoritması ile kestirimine ilişkin Matlab kodu verilmiştir.

  1.  
  2. %% F(x,y) = aX^2+b^Y^2;
  3. %% J(n_j) = [X^2 Y^2];
  4. %% Bu uygulamada a ve b parametreleri LM algoritmas? ile bulunmu?tur.
  5.  
  6. g_SAMPLE = 100;
  7. g_ITERATION = 5;
  8.  
  9. INPUT_X = 2 * rand(1, g_SAMPLE) - 1;
  10. INPUT_Y = 2 * rand(1, g_SAMPLE) - 1;
  11.  
  12. n_x = 2; n_y = 3;
  13.  
  14. DESIRED_OUTPUT = n_x * INPUT_X.^2 + n_y * INPUT_Y.^2;
  15.  
  16. figure, plot(DESIRED_OUTPUT)
  17.  
  18. p_x = rand;
  19. p_y = rand;
  20. lamda = 0.01;
  21.  
  22. for n_i = 1 : g_ITERATION
  23.     E(n_i) = 0;
  24.    
  25.     for n_j = 1 : g_SAMPLE
  26.         OUTPUT_TRAIN = p_x * INPUT_X(n_j)^2 + p_y * INPUT_Y(n_j)^2;
  27.         ERROR(n_j) = DESIRED_OUTPUT(n_j) - OUTPUT_TRAIN;
  28.         E(n_i) = E(n_i) + 0.5 * ERROR(n_j) ^ 2;
  29.         JACOBIAN(n_j, : ) = [INPUT_X(n_j)^2 INPUT_Y(n_j)^2];
  30.     end
  31.  
  32.     kontrol = 1;
  33.  
  34.     while(kontrol == 1)
  35.        
  36.         J_new = inv(JACOBIAN' * JACOBIAN + lamda * eye(2,2)) * JACOBIAN' * ERROR';
  37.         p_x_new = p_x + J_new(1);
  38.         p_y_new = p_y + J_new(2);
  39.         E_NEW(n_i) = 0;
  40.  
  41.         for n_j = 1 : g_SAMPLE
  42.             OUTPUT_TRAIN = p_x_new * INPUT_X(n_j)^2 + p_y_new * INPUT_Y(n_j)^2;
  43.             ERROR_NEW(n_j) = DESIRED_OUTPUT(n_j) - OUTPUT_TRAIN;
  44.             E_NEW(n_i) = E_NEW(n_i) + 0.5 * ERROR_NEW(n_j) ^ 2;
  45.            
  46.         end
  47.        
  48.        if E_NEW(n_i) < E(n_i)
  49.           p_x = p_x_new;
  50.           p_y = p_y_new;
  51.           lamda = lamda * .5;
  52.            kontrol = 0;
  53.        else
  54.             lamda = lamda / .5;
  55.        end;
  56.      end  
  57. end;