% 10.34 - Fall 2006
% HW Set#2, Problem #2a
% Rob Ashcraft - Sept. 11, 2006
% This function find the best fit coefficients for the Pade form
% f(x) = (a0 + a1*x + Cv,inf*a2*x^2)/(1 + a3*x + a2*x^2);
% This must first be linearized in terms of the parameters as:
% f(x) = a0 + x*a1 + (Cv,inf*x^2 - f(x)*x^2)*a2 - x*a3
function a_vec = calc_Pade_coeff(x,f,Cv_inf)
% Input:
% x = data for the independent variable
% f = data for dependent variable
% Cv_inf = value of f(x) at infinite x
%
% Output
% a_vec = polynomial coefficients = [a0; a1; a2; a3]
%
% first build the system matrix for this type of equation
for i=1:length(x)
X_mat(i,1) = 1;
X_mat(i,2) = x(i);
X_mat(i,3) = (Cv_inf - f(i))*x(i)^2;
X_mat(i,4) = -x(i)*f(i);
end
% Check to see if you have enough data to determine the 4 coefficients. If
% you do, the perform a linear regression to detemine the parameters. If
% the number of parameters and data points are the same, doing a linear
% regression and solving a linear system of equations is identical. Since
% the N_param does not change with this form, it is always written as a
% linear regression problem
if(length(x) < 4)
disp('You do not have enough data to solve for the 4 coefficients in the Pade form.');
else
% since N_data >= N_coef, you can perform a regression to get a's
a_vec = X_mat'*X_mat\X_mat'*f;
end