Polynomial Fitting

Read opd data from file:

>> opd = textread('doublet_opd.txt');
>> y = linspace(1,0,11);

Taylor Series Polynomial

opd = c1 y2 + c2 y4 + c3 y6 + c4 y8 + c5 y10 + c6 y12

>> taylorfit(y,opd)

ans =

   10.3373         0         0         0         0         0
    6.3176    5.1472         0         0         0         0
   -1.3602   30.8652  -18.7387         0         0         0
    0.2181   20.9325   -1.2146   -9.2130         0         0
   -0.0298   23.4728   -9.2283    0.6461   -4.1397         0
    0.0034   22.9609   -6.6810   -4.8325    1.1568   -1.8864

Matlab code

function table = taylorfit(y,opd)

yfit =  [ y.^2 y.^4 y.^6 y.^8 y.^10  y.^12];
sz=size(yfit);
for k=1:sz(2)
    c = yfit(:,1:k)\opd;
    table(k,1:k)=c';
end

Zernike Polynomials

>> zernfit(y,opd)

ans =

    3.2729         0         0         0         0         0         0
    4.9916    5.7289         0         0         0         0         0
    4.8605    5.8772    0.6230         0         0         0         0
    4.9265    6.3179    0.4769   -0.9602         0         0         0
    4.9403    6.3441    0.5526   -0.9805   -0.1337         0         0
    4.9416    6.3488    0.5577   -0.9718   -0.1385   -0.0166         0
    4.9419    6.3495    0.5587   -0.9710   -0.1380   -0.0179   -0.0021

Matlab code

function table = zernfit(y,opd)

yfit = zern(y);
for k=1:7
    c = yfit(:,1:k)\opd;
    table(k,1:k)=c';
end

Chebyshev Polynomials

>> chebyfit(y,opd);

ans =

    3.2729         0         0         0         0         0         0
    4.9916    5.7289         0         0         0         0         0
    5.0163    5.8772    0.4673         0         0         0         0
    5.0457    5.9579    0.3576   -0.6001         0         0         0
    5.0596    5.9764    0.3727   -0.6128   -0.0731         0         0
    5.0616    5.9805    0.3750   -0.6119   -0.0757   -0.0082         0
    5.0620    5.9812    0.3755   -0.6118   -0.0760   -0.0088   -0.0009

Matlab code

function table = chebyfit(y,opd)

cf = cheb(y);
yfit = cf(:,1:2:13);
for k=1:7
    c = yfit(:,1:k)\opd;
    table(k,1:k)=c';
end


Maintained by John Loomis, last updated 22 Jan 2003