Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2024.0.0 - Português


lsq_splin

ajuste ponderado por spline cúbico de mínimos quadrados

Seqüência de Chamamento

[y, d] = lsq_splin(xd, yd, x)
[y, d] = lsq_splin(xd, yd, wd, x)

Parâmetros

xd, yd

vetores de mesmo tamanho, dados a serem ajustados por um spline cúbico

wd

(opcional) um vetor de mesmo formato que xd e yd, pesos dos ajustes de mínimos quadrados.

x

vetor (linha ou coluna) estritamente crescente, pontos de interrupção do spline cúbico

y, d

vetores de mesmo formato que x, a tripla(x,y,d) define o spline cúbico aproximado.

Descrição

Esta função computa um spline cúbico aproximado s para os dados xd, yd, wd (a partir daqui m é suposto como o comprimento desses vetores) e, de uma escolha dos pontos de interrupção do spline, o vetor x (por exemplo, se você deseja n pontos de interrupção uniformemente escolhidos você pode usar x=linspace(min(xd),max(xd),n))). Se S é o espaço de todas as funções spline cúbicas com pontos de interrupção x1 < x2 < ... < xn então, o spline resultante s é tal que:

∑_k=1→m wd(k).[s(xd(k))-yd(k)]² ⬅ ∑_k=1→m wd(k).[f(xd(k))-yd(k)]²

para todo f em S, i.e., realiza o mínimo da soma de todos os erros quadrados sobre todas as funções de S.

O spline s é completamente definido pela tripla (x,y,d) (y e d são os vetores das ordenadas dos splines e das derivadas primeiras nos xi 's : yi=s(xi) e di=s'(xi)) e sua avaliação em alguns pontos deve ser feita pela função interp.

Observações

Quando wd não é dado, todos os pontos têm o mesmo peso 1

Um ponto (xd(k),yd(k)) é considerado no ajuste se xd(k) em [x1,xn] e wd(k) > 0. Em particular, você pode colocar um peso nulo (ou mesmo negativo) a todos os pontos que você deseja que sejam ignorados no ajuste. Quando o número total de pontos levados em conta no "procedure" de ajuste é (estritamente) menor que 4, ocorre um erro.

O vetor xd não necessita estar em ordem crescente

Dependendo do número e das posições dos xd(k) 's e da escolha dos x(i) 's podem haver várias soluções, mas apenas uma é selecionada. Quando isso ocorre, um aviso é exibido na janela de comando do Scilab. Esta função foi feita para ser usada quando m é muito maior que n e neste caso, tal tipo de problema não ocorre.

Exemplos

// este é um exemplo artificial, onde os dados xd e yd
// são contruídos a partir de uma função seno perturbada
a = 0; b = 2*%pi;
sigma = 0.1;  // desvio padrão do ruído gaussiano
m = 200;       // número de pontos experimentais
xd = linspace(a,b,m)';
yd = sin(xd) + grand(xd,"nor",0,sigma);

n = 6; // número de pontos de interrupção
x = linspace(a,b,n)';

// computando o spline
[y, d] = lsq_splin(xd, yd, x);  // usando pesos iguais

// plotando
ye = sin(xd);
ys = interp(xd, x, y, d);
clf()
plot2d(xd,[ye yd ys],style=[2 -2 3], ...
       leg="função exata@medidas experimentais (perturbação gaussiana)@spline ajustado")
xtitle("Um spline de mínimos quadrados")
show_window()

Ver Também

  • backslash — (\) divisão matricial direita-esquerda: exact or least square solution
  • datafit — Non linear (constrained) parametric fit of measured (weighted) data
  • interp — função de avaliação de spline cúbico
  • splin — interpolação por spline cúbico
Report an issue
<< linear_interpn Interpolação mesh2d >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Oct 24 14:35:25 CEST 2023