es el código fuente de qrmu
%POLYFIT datos de ajuste polinomial.
% P = POLYFIT(X, Y, N) encuentra los coeficientes del polinomio P(X)
% grado N que mejor se ajusta a los datos Y en el sentido de mínimos cuadrados. p es un
% vector de fila de longitud N+1, que contiene los coeficientes polinomiales en
% de potencia decreciente, p(1)*x^n+p(2)* x ^(n-1)+...+ P(N)*X + P(N+1).
%
% [P, S] = POLYFIT(X, Y, N) da coeficientes polinomiales P y una
% estructura S junto con POLYVAL Uso para obtener una estimación del error
% del pronóstico. s contiene los campos de los factores trigonométricos de QR (R), el % de descomposición de la matriz de Vandermond de X, los grados de libertad (gl) y la norma de los residuos (normr). Si los datos Y son aleatorios,
% La estimación de la matriz de covarianza de p es (Rinv*Rinv')*normr^2/df,
% donde Rinv es el recíproco de r.
%
% [P, S, MU] = POLYFIT(X, Y, N) encuentra los coeficientes del polinomio en
% XHAT = ( X -MU(1))/MU(2)donde MU(1) = MEDIA(X), MU(2) = STD(X). Este
% de transformaciones de centrado y escala mejora las propiedades numéricas
% de los algoritmos polinómicos y de ajuste.
%
Produce un mensaje de advertencia % si N > = longitud(X), si X es un duplicado, o
% es casi un duplicado, punto , o X Si se requiere centrar y escalar.
%
La clase % para las entradas X e Y admite:
Porcentaje flotante: precisión doble, precisión simple
% p >
%Ver POLY, POLYVAL, ROOTS, LSCOV.
%Copyright 1984-2008 The MathWorks, Inc.
% $Revisión: 5.17 4 .
El problema de regresión % se formula en formato matricial como:
%
% y = V*p o
% p>
% 3 2
% y = [x x x 1] [p3
% p2
% p1
% p0]
%
%El vector p contiene el coeficiente a encontrar. Para un
% polinomio de séptimo orden, la matriz V será:
%
% V = [x.^7 x.^6 x.^ 5 x.^4 x.^3 x.^2 x(tamaño(x))];
if ~isequal(tamaño(x), tamaño(y))
Error('MATLAB:polyfit:XYSizeMismatch',...
Los vectores x e Y deben tener el mismo tamaño.)
Fin
x = x (: );
y = y(:);
if nargout & gt2
mu =[mean(x);STD(x)];
p>
x =(x-mu(1))/mu(2);
End
% Construye la matriz de Vandermond.
v(:, n+1) = unos(longitud(x), 1, clase(x)
Para j = n:-1:1
V(:,j) = x.*V(:,j+1);
Fin
% Resuelve el problema de mínimos cuadrados.
[Q, R] = qr(V, 0);
ws = advertencia('apagado', 'todo'); \(Q ' * y); % igual que p = V\y;
advertencia(ws);
if tamaño(R, 2) > tamaño(R, 1)
WARNING('MATLAB:polyfit:PolyNotUnique',...
El polinomio no es único; grado>=número de puntos de datos.)
else if warniflagconditionnumber(R)
if nargout & gt2
warn(' MATLAB:polyfit:RepeatedPoints',...
['La condición del polinomio es deficiente. Agregar Puntos con diferentes :RepeatedPointsOrRescale ',...
['La condición del polinomio es mala\n '...
Valor, baje el grado del polinomio o intente centrarlo. n '...
y escalar como se describe en AYUDA POLYFIT ]);
Fin
Fin
r = y-V *. p;
p = p '; %Los coeficientes polinómicos son vectores fila por convención.
%S es una estructura que contiene tres elementos: la descomposición % QR de la
matriz de Vandermond, los grados de libertad y la
normal norma del residual .
Sur R = R
S.df = max(0, longitud(y)-(n+1));
s. (r);
Función flag = warniflagconditionnumber(R)
if isa(R,' double ')
flag =(contest(R)>1e +10);
Otros
flag =(contest(R)>1e+05);
Fin