[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
53.1 Introducción a interpol | ||
53.2 Definiciones para interpol |
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
El paquete interpol
desarrolla los métodos de interpolación polinómica de Lagrange, lineal y de splines cúbicos.
Para comentarios, fallos o sugerencias, contactar con 'mario ARROBA edu PUNTO xunta PUNTO es'.
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
Calcula el polinomio de interpolación por el método de Lagrange. El argumento points debe ser:
p:matrix([2,4],[5,6],[9,3])
,
p: [[2,4],[5,6],[9,3]]
,
p: [4,6,3]
, en cuyo caso las abscisas se asignarán automáticamente a 1, 2, 3, etc.
En los dos primeros casos los pares se ordenan con respecto a la primera coordenada antes de proceder a los cálculos.
Mediante el argumento option es posible seleccionar el nombre de la variable independiente, que por defecto es 'x
; para definir otra, escríbase algo como varname='z
.
Ejemplos:
(%i1) load("interpol")$ (%i2) p:[[7,2],[8,2],[1,5],[3,2],[6,7]]$ (%i3) lagrange(p); 4 3 2 73 x - 1402 x + 8957 x - 21152 x + 15624 (%o3) ------------------------------------------- 420 (%i4) f(x):=''%; 4 3 2 73 x - 1402 x + 8957 x - 21152 x + 15624 (%o4) f(x) := ------------------------------------------- 420 (%i5) /* Evaluate the polynomial at some points */ map(f,[2.3,5/7,%pi]); 919062 (%o5) [- 1.567535000000005, ------, 84035 4 3 2 73 %pi - 1402 %pi + 8957 %pi - 21152 %pi + 15624 ---------------------------------------------------] 420 (%i6) %,numer; (%o6) [- 1.567535000000005, 10.9366573451538, 2.89319655125692] (%i7) /* Plot the polynomial together with points */ plot2d([f(x),[discrete,p]],[x,0,10], [gnuplot_curve_styles, ["with lines","with points pointsize 3"]])$ (%i8) /* Change variable name */ lagrange(p, varname=w); 4 3 2 73 w - 1402 w + 8957 w - 21152 w + 15624 (%o8) ------------------------------------------- 420 |
Devuelve true
si el número x pertenece al intervalo [a, b), y false
en caso contrario.
Calcula rectas de interpolación. El argumento points debe ser:
p:matrix([2,4],[5,6],[9,3])
,
p: [[2,4],[5,6],[9,3]]
,
p: [4,6,3]
, en cuyo caso las abscisas se asignarán automáticamente a 1, 2, 3, etc.
En los dos primeros casos los pares se ordenan con respecto a la primera coordenada antes de proceder a los cálculos.
Mediante el argumento option es posible seleccionar el nombre de la variable independiente, que por defecto es 'x
; para definir otra, escríbase algo como varname='z
.
Ejemplos:
(%i1) load("interpol")$ (%i2) p: matrix([7,2],[8,3],[1,5],[3,2],[6,7])$ (%i3) linearinterpol(p); (%o3) - ((9 x - 39) charfun2(x, minf, 3) + (30 - 6 x) charfun2(x, 7, inf) + (30 x - 222) charfun2(x, 6, 7) + (18 - 10 x) charfun2(x, 3, 6))/6 (%i4) f(x):=''%; (%o4) f(x) := - ((9 x - 39) charfun2(x, minf, 3) + (30 - 6 x) charfun2(x, 7, inf) + (30 x - 222) charfun2(x, 6, 7) + (18 - 10 x) charfun2(x, 3, 6))/6 (%i5) /* Evaluate the polynomial at some points */ map(f,[7.3,25/7,%pi]); 62 18 - 10 %pi (%o5) [2.3, --, - -----------] 21 6 (%i6) %,numer; (%o6) [2.3, 2.952380952380953, 2.235987755982988] (%i7) /* Plot the polynomial together with points */ plot2d(['(f(x)),[discrete,args(p)]],[x,-5,20], [gnuplot_curve_styles, ["with lines","with points pointsize 3"]])$ (%i8) /* Change variable name */ linearinterpol(p, varname='s); (%o8) - ((9 s - 39) charfun2(s, minf, 3) + (30 - 6 s) charfun2(s, 7, inf) + (30 s - 222) charfun2(s, 6, 7) + (18 - 10 s) charfun2(s, 3, 6))/6 |
Calcula el polinomio de interpolación por el método de los splines cúbicos. El argumento points debe ser:
p:matrix([2,4],[5,6],[9,3])
,
p: [[2,4],[5,6],[9,3]]
,
p: [4,6,3]
, en cuyo caso las abscisas se asignarán automáticamente a 1, 2, 3, etc.
En los dos primeros casos los pares se ordenan con respecto a la primera coordenada antes de proceder a los cálculos.
Esta función dispone de tres opciones para acomodarse a necesidades concretas:
'd1
, por defecto 'unknown
, es la primera derivada en x_1; si toma el valor 'unknown
, la segunda derivada en x_1 se iguala a 0 (spline cúbico natural); en caso de tomar un valor numérico, la segunda derivada se calcula en base a este número.
'dn
, por defecto 'unknown
, es la primera derivada en x_n; si toma el valor 'unknown
, la segunda derivada en x_n se iguala a 0 (spline cúbico natural); en caso de tomar un valor numérico, la segunda derivada se calcula en base a este número.
'varname
, por defecto 'x
, es el nombre de la variable independiente.
Ejemplos:
(%i1) load("interpol")$ (%i2) p:[[7,2],[8,2],[1,5],[3,2],[6,7]]$ (%i3) /* Unknown first derivatives at the extremes is equivalent to natural cubic splines */ cspline(p); 3 2 (%o3) ((3477 x - 10431 x - 18273 x + 74547) 3 2 charfun2(x, minf, 3) + (- 15522 x + 372528 x - 2964702 x + 7842816) charfun2(x, 7, inf) 3 2 + (28290 x - 547524 x + 3475662 x - 7184700) 3 2 charfun2(x, 6, 7) + (- 6574 x + 80028 x - 289650 x + 345924) charfun2(x, 3, 6))/9864 (%i4) f(x):=''%$ (%i5) /* Some evaluations */ map(f,[2.3,5/7,%pi]), numer; (%o5) [1.991460766423358, 5.823200187269904, 2.227405312429501] (%i6) /* Plotting interpolating function */ plot2d(['(f(x)),[discrete,p]],[x,0,10], [gnuplot_curve_styles, ["with lines","with points pointsize 3"]])$ (%i7) /* New call, but giving values at the derivatives */ cspline(p,d1=0,dn=0); 3 2 (%o7) ((17541 x - 102933 x + 153243 x + 33669) 3 2 charfun2(x, minf, 3) + (- 55692 x + 1280916 x - 9801792 x + 24990624) charfun2(x, 7, inf) 3 2 + (65556 x - 1265292 x + 8021664 x - 16597440) 3 2 charfun2(x, 6, 7) + (- 15580 x + 195156 x - 741024 x + 927936) charfun2(x, 3, 6))/20304 (%i8) /* Defining new interpolating function */ g(x):=''%$ (%i9) /* Plotting both functions together */ plot2d(['(f(x)),'(g(x)),[discrete,p]],[x,0,10], [gnuplot_curve_styles, ["with lines","with lines","with points pointsize 3"]])$ |
[ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by root on octubre, 18 2006 using texi2html 1.76.