advice on least square method

Carrico, Paul paul.carrico at esterline.com
Fri Aug 27 12:04:18 CEST 2010


Dear all,

 

The current email is intend as (an) advice(s) request regarding the
least square method calculations.

 

I'm currently using the function herebellow to calculate the
coefficients of a 2nd order polynomial using thousands of experimental
data (furthermore the function is inserted in a loop => thousands of
loop = billiards of calculations).

 

So the main time cost is these calculation ...

 

 

I'm working to improve the code to be faster and in parallele I would
like to know if these a more relevant instruction in Scilab that
performe the calculation faster (maybe more accurate) ?

 

I had a look in the leastsq instruction ... but the later is strongly
influenced by the initial parameters guess X0 (isn't it).

 

 

Any advice is welcome

 

Regards / have a good WE

 

Paul

 

PS : A give a basic exampel in attached

PS 2 : additional question (but i'm a newby : calculations to be
parallelized ???)

 

 

 

###################################################"

 

 

##########################################################

function R_square = fct_MMC(p,experience)

 

// Nota :

// p = polynomial degree

// experience = experimental data

 

 

// step 1 : "linear" least square method

// matrix size
[n,c] = size(experience);

 

// calculation of  S
S = zeros(2*p,1);
for k = 1 : (2*p)
 for i = 1 : n
  S(k) = S(k) + experience(i,1)^k;
 end
end

 

// calculation of W
W = zeros(p+1,1);
for k = 1 : (p+1)
 for i = 1 : n
  W(k) = W(k) + experience(i,2)*experience(i,1)^(k-1);
 end
end

 

// calculation of A = S matrix
A = zeros(p+1,p+1);
for i = 1 : (p+1)
 for j = 1 : (p+1)
  if (i == 1 & j == 1) then
   A(1,1) = n;
  else
   A(i,j) = S(i+j-2);
  end
 end
end

 


// calculation of  B = W matrix
B = zeros(p+1,1);
for j = 1 : (p+1)
 B(j) = W(j);
end

 


// calculation of the coefficients
if (det(A) == 0) then
 printf('
########################################################################
###############\n')
 printf(' ####                                              Singular
matrix => no solution
####\n')
 printf('
########################################################################
###############\n')

 

else
 //C = inv(A)*B;

C = lsq(A,B);   // a bit faster than the previous calculation / same
results
 // calculation of R_square
 // formula : R_square = 1 - ( sum(F_fit - F_measured)^2 / sum(F_mean -
F_measured )
 F_fit = zeros(n,1);
 R_square = 0;
 F_mean = 0;
 
 for i = 1 : n
  // Calcul de F_fit
   for k = 1 : (p+1)
    F_fit(i) = F_fit(i) + C(k)*experience(i,1)^(k-1) ;
   end
 end

 

 calculation of  F_mean
 F_mean = mean(experience(:,2));

 

 // SSE = sum (F_fit - F_mean)
 // SSTE = sum (F_mean - F_measured)
 SSE = 0;
 SST = 0;



 for i = 1 : n
  SSE = SSE + (F_fit(i) - experience(i,2))^2 ;
  SST = SST + (F_mean - experience(i,2))^2 ;
 end

 

 R_square = 1 - (SSE / SST);

 

 

end

 

clear A
clear B
clear S
clear W
clear SSE
clear SST

 


endfunction

 

 


--------------------------------------------------------------------------------


Le présent mail et ses pièces jointes sont confidentiels et destinés à la personne ou aux personnes visée(s) ci-dessus. Si vous avez reçu cet e-mail par erreur, veuillez contacter immédiatement l'expéditeur et effacer le message de votre système. Toute divulgation, copie ou distribution de cet e-mail est strictement interdite.

This email and any files transmitted with it are confidential and intended solely for the use of the individual or entity to whom they are addressed. If you have received this email in error, please contact the sender and delete the email from your system. If you are not the named addressee you should not disseminate, distribute or copy this email.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20100827/4a7a1224/attachment.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: matrix.JPG
Type: image/jpeg
Size: 24546 bytes
Desc: matrix.JPG
URL: <https://lists.scilab.org/pipermail/users/attachments/20100827/4a7a1224/attachment.jpe>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: least_square_method.sce
Type: application/octet-stream
Size: 2671 bytes
Desc: least_square_method.sce
URL: <https://lists.scilab.org/pipermail/users/attachments/20100827/4a7a1224/attachment.obj>


More information about the users mailing list