Scilab Home page | Wiki | Bug tracker | Forge | Mailing list archives | ATOMS | File exchange
Please login or create an account
Change language to: English - Français - 日本語 - Русский

Please note that the recommended version of Scilab is 6.0.1. This page might be outdated.
See the recommended documentation of this function

Ajuda Scilab >> Interpolação > lsq_splin

lsq_splin

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

Seqüência de Chamamento

[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:

_m_                               _m_                       
\                           2     \                           2
/   wd(k) (s(xd(k)) - yd(k))  <=  /   wd(k) (f(xd(k)) - yd(k))    
---                               ---  
k=1                               k=1

para todo fem 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

  • interp — função de avaliação de spline cúbico
  • splin — interpolação por spline cúbico

Autores

  • C. De Boor, A.H. Morris (código da biblioteca FORTRAN NSWC)
  • B. Pincon (interface Scilab e ligeiras modificações)
Scilab Enterprises
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Apr 02 17:37:04 CEST 2013