clc clear altura = [0.912; 0.986; 1.060; 1.130; 1.190; 1.260; 1.320; 1.380; 1.410; 1.490]; peso = [13.7; 15.9; 18.5; 21.3; 23.5; 27.2; 32.7; 36.0; 38.6; 43.7]; %p = @(h,c1,c2) c1.*h.^c2; p = @(h,c1,c2) c1.*exp(c2.*log(h)); m = length(peso); tol = 1e-9; k = 0; c = [2; .5]; %c = [1,.1]; d = inf; while norm(d)>tol && k < 100 r = -peso + p(altura, c(1), c(2)); A = [exp(c(2).*log(altura)), c(1)*log(altura).*exp(c(2).*log(altura))]; %cond(A'*A) %d = (A'*A)\(A'*r); %qr [Q,R] = qr(A); R = R(1:2,:); yy = transpose(Q)*r; yy = yy(1:2); d = R\yy; c = c - d; k = k+1; end vec = linspace(.8,1.6); plot(altura, peso,'ok','LineWidth',2); hold on plot(vec, p(vec, c(1), c(2)), '-b', 'LineWidth', 2); grid on xlabel('t', 'FontSize',14) ylabel('y', 'FontSize',14) %% Parte b. clc log_peso = log(peso); p_lin = @(h,a,b) a + b*log(h); A = [ones(m,1), log(altura)]; %Ec normales. yy = transpose(A)*log_peso; AtA = transpose(A)*A; x = AtA\yy; cb = [exp(x(1));x(2)]; vec = linspace(.8,1.6); plot(altura, peso,'ok','LineWidth',2); hold on plot(vec, p(vec, cb(1), cb(2)), '-b', 'LineWidth', 2); grid on xlabel('t', 'FontSize',14) ylabel('y', 'FontSize',14) %% Parte c. vec = linspace(.8,1.6); plot(altura, peso,'ok','LineWidth',2); hold on plot(vec, p(vec, cb(1), cb(2)), '-b', 'LineWidth', 2); grid on plot(vec, p(vec, c(1), c(2)), '-r', 'LineWidth', 2)