Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

spap2

Aproximación por mínimos cuadrados de un spline

Descripción

ejemplo

spline = spap2(knots,k,x,y) devuelve el B-form del spline f de orden k con la secuencia de nudos dada knots para el que

(*)   y(:,j) = f(x(j)), all j 

en el sentido del cuadrado medio ponderado, lo que significa que la suma

jw(j)|y(:,j)f(x(j))|2

se minimiza, con ponderaciones predeterminadas iguales a 1. Los valores de datos y(:,j) pueden ser escalares, vectores, matrices o arreglos n-dimensionales y z|2 es la suma de los cuadrados de todas las entradas de z. Los puntos de datos con el mismo sitio se sustituyen por su media.

Si los sitios x satisfacen las condiciones de Schoenberg-Whitney

          knots(j)<x(j)<knots(j+k)(**)                                j=1,...,length(x)=length(knots)k

hay un spline único del orden y secuencia de nudos dados que satisface (*) exactamente. No se devuelve ningún spline a menos que se satisfaga (**) para alguna subsecuencia de x.

spap2(l,k,x,y) , con l siendo un entero positivo, devuelve el B-form de una aproximación por mínimos cuadrados de un spline, pero con la secuencia de nudos que haya elegido. La secuencia de nudos se obtiene aplicando aptknt a una subsecuencia apropiada de x. El polinomio por tramos resultante consta de l tramos polinómicos y tiene k-2 derivadas continuas. Si cree que una distribución diferente de los nudos interiores podría funcionar mejor, escriba lo siguiente a continuación

sp1 = spap2(newknt(spline),k,x,y));

spline = spap2(...,x,y,w) permite especificar las ponderaciones w en la medida de errores (especificada más arriba). w debe ser un vector del mismo tamaño que x, con entradas no negativas. Todas las ponderaciones correspondientes a los puntos de datos con el mismo sitio se suman cuando esos puntos de datos se sustituyen por su media.

spap2({knorl1,...,knorlm},k,{x1,...,xm},y) proporciona una aproximación por mínimos cuadrados de un spline a los datos de malla. En este caso, cada knorli es una secuencia de nudos o un entero positivo. Además, k debe ser un vector m e y debe ser un arreglo (r+m)-dimensional, siendo y(:,i1,...,im) el dato que ajustar en el site[x{1}(i1),...,x{m}(im)], para todo i1, ..., im. Sin embargo, si el spline tiene que ser un valor escalar, en contraposición al caso univariado, y puede ser un arreglo m-dimensional, en cuyo caso y(i1,...,im) es el dato que ajustar en el site [x{1}(i1),...,x{m}(im)], para todo i1, ..., im.

spap2({knorl1,...,knorlm},k,{x1,...,xm},y,w) también permite especificar las ponderaciones. En este caso m-variado, w debe ser un arreglo de celdas con m entradas, con un vector no negativo w{i} del mismo tamaño que xi, o bien w{i} debe estar vacío, en cuyo caso se utilizan las ponderaciones predeterminadas en la i-ésima variable.

Ejemplos

contraer todo

Este ejemplo muestra cómo calcular la aproximación por mínimos cuadrados a los datos x, y, mediante splines cúbicos con dos derivadas continuas, un intervalo básico [a..b] e interrupciones interiores xi, siempre que xi tenga todas sus entradas en (a..b) y se satisfagan las condiciones (**).

sp = spap2(augknt([a,xi,b],4),4,x,y)

En ese caso, la aproximación consta de length(xi)+1 tramos polinómicos. Si solo desea obtener una aproximación por splines cúbicos compuesta por l tramos polinómicos, utilice en su lugar

sp = spap2(l,4,x,y); 

Si la aproximación resultante no es satisfactoria, pruebe a utilizar un l más grande. O, si no, utilice

sp = spap2(newknt(sp),4,x,y);

para una mejor distribución de la secuencia de nudos. Repita este proceso varias veces para aumentar la fidelidad de la distribución.

Como ejemplo adicional, spap2(1,2,x,y); proporciona el ajuste de línea recta de mínimos cuadrados a los datos x, y, mientras que

w = ones(size(x)); 
w([1 end]) = 100; 
spap2(1,2,x,y,w); 

fuerza a ese ajuste a acercarse mucho al primer punto de datos y al último.

Este ejemplo muestra cómo crear una función bivariada, así como calcular y representar su aproximación por mínimos cuadrados.

Genere los datos para la aproximación y la función bivariada.

x = -2:.2:2; 
y=-1:.25:1; 
[xx, yy] = ndgrid(x,y); 
z = exp(-(xx.^2+yy.^2)); 

Calcule la aproximación por mínimos cuadrados y represéntela.

sp = spap2({augknt([-2:2],3),2},[3 4],{x,y},z);
fnplt(sp)

Figure contains an axes object. The axes object contains an object of type surface.

Argumentos de entrada

contraer todo

Secuencia de nudos del spline, especificada como un vector no decreciente.

Orden del spline f, especificado como un escalar.

Número de tramos polinómicos del polinomio por tramos resultante, especificado como un número entero positivo.

Ponderaciones en la medida de errores, especificadas como un vector no negativo del mismo tamaño que x.

Sitios de datos de valores de datos y que hay que ajustar, especificados como un vector o como un arreglo de celdas en el caso de datos multivariados. Se crea un spline f con nudos en cada sitio de datos x de forma que f(x(j)) = y(:,j) para todos los valores de j.

En el caso de datos de malla y multivariados, puede especificar x como un arreglo de celdas que especifica el sitio de datos en cada dimensión variable: f(x1(i),x2(j),...xn(k)) = y(:,i,j,...,k).

Valores de datos que se van a ajustar durante la creación del spline, especificados como vector, matriz o arreglo. Los valores de datos y(:,j) pueden ser escalares, matrices o arreglos n-dimensionales. Se promedian los valores de los datos que están en el mismo sitio de datos x.

Tipos de datos: single | double

Argumentos de salida

contraer todo

Spline, devuelto como una estructura con estos campos.

Forma del spline, devuelta como B-. B- indica que tiene B-form.

Posiciones de los nudos del spline, devueltas como un vector o un arreglo de celdas de vectores en el caso de datos multivariados. Los vectores contienen elementos estrictamente crecientes que representan el inicio y el fin de cada uno de los intervalos en los que se definen los tramos polinómicos.

Coeficientes de los polinomios para cada tramo, devueltos como una matriz o como un arreglo en el caso de datos multivariados.

Número de tramos polinómicos que describen el spline, devuelto como un escalar o como un vector de números de tramos de cada variable en el caso de datos multivariados.

Orden de la función polinómica que describe cada tramo polinómico del spline, devuelta como un escalar o como un vector que contiene el orden de cada variable en el caso de datos multivariados.

Dimensionalidad de la función de destino, devuelta como un escalar.

Algoritmos

Se llama a spcol para proporcionar la matriz de colocación casi diagonal por bloques (Bj,k(xi)) y slvblk resuelve el sistema lineal (*) en el sentido de mínimos cuadrados (ponderados) usando una factorización QR en bloque.

Los datos de malla se ajustan, en forma de tensor-product, variable por variable, aprovechando el hecho de que un ajuste univariado por mínimos cuadrados ponderados depende linealmente de los valores que se están ajustando.

Historial de versiones

Introducido antes de R2006a