~ubuntu-branches/ubuntu/karmic/maxima/karmic

« back to all changes in this revision

Viewing changes to doc/info/es.utf8/maxima_56.html

  • Committer: Bazaar Package Importer
  • Author(s): Christophe Sauthier
  • Date: 2009-07-13 15:38:41 UTC
  • mfrom: (3.1.3 squeeze)
  • Revision ID: james.westby@ubuntu.com-20090713153841-gtux06oun30kuuo7
Tags: 5.17.1-1ubuntu1
* Merge from debian unstable, remaining changes (LP: #296643, LP: #242243):
   - debian/maxima-doc.doc-base.{tips, plotting}:
    + Use .shtml instead of .html to fix lintian errors.
   - debian/maxima-emacs.emacsen-install:
    + Install symlinks for source files rather than copying them.  This
      makes find-function work.
    + Install symlink for *.lisp so that we don't need to add
      /usr/share/emacs/site-lisp/maxima to load-path.
  - debian/maxima-emacs.emacsen-startup:
    + Remove use of /usr/share/emacs/site-lisp/maxima, since this
      causes load-path shadows and is not needed anymore.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
2
2
<html>
3
 
<!-- Created on agosto, 25 2007 by texi2html 1.76 -->
 
3
<!-- Created on diciembre, 14 2008 by texi2html 1.76 -->
4
4
<!--
5
5
Written by: Lionel Cons <Lionel.Cons@cern.ch> (original author)
6
6
            Karl Berry  <karl@freefriends.org>
11
11
 
12
12
-->
13
13
<head>
14
 
<title>Manual de Maxima: 56. lbfgs</title>
 
14
<title>Manual de Maxima: 56. interpol</title>
15
15
 
16
 
<meta name="description" content="Manual de Maxima: 56. lbfgs">
17
 
<meta name="keywords" content="Manual de Maxima: 56. lbfgs">
 
16
<meta name="description" content="Manual de Maxima: 56. interpol">
 
17
<meta name="keywords" content="Manual de Maxima: 56. interpol">
18
18
<meta name="resource-type" content="document">
19
19
<meta name="distribution" content="global">
20
20
<meta name="Generator" content="texi2html 1.76">
125
125
div.categorybox
126
126
{
127
127
    border: 1px solid gray;
128
 
    padding-top: 1em;
129
 
    padding-bottom: 1em;
 
128
    padding-top: 0px;
 
129
    padding-bottom: 0px;
130
130
    padding-left: 1em;
131
131
    padding-right: 1em;
132
132
    background: rgb(247,242,220);
141
141
 
142
142
<body lang="es" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
143
143
 
144
 
<a name="lbfgs"></a>
145
 
<a name="SEC214"></a>
 
144
<a name="interpol"></a>
 
145
<a name="SEC220"></a>
146
146
<table cellpadding="1" cellspacing="1" border="0">
147
 
<tr><td valign="middle" align="left">[<a href="maxima_55.html#SEC213" title="Previous section in reading order"> &lt; </a>]</td>
148
 
<td valign="middle" align="left">[<a href="#SEC215" title="Next section in reading order"> &gt; </a>]</td>
 
147
<tr><td valign="middle" align="left">[<a href="maxima_55.html#SEC219" title="Previous section in reading order"> &lt; </a>]</td>
 
148
<td valign="middle" align="left">[<a href="#SEC221" title="Next section in reading order"> &gt; </a>]</td>
149
149
<td valign="middle" align="left"> &nbsp; </td>
150
 
<td valign="middle" align="left">[<a href="maxima_55.html#SEC211" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
150
<td valign="middle" align="left">[<a href="maxima_55.html#SEC218" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
151
151
<td valign="middle" align="left">[<a href="maxima.html#SEC_Top" title="Up section"> Up </a>]</td>
152
 
<td valign="middle" align="left">[<a href="maxima_57.html#SEC217" title="Next chapter"> &gt;&gt; </a>]</td>
 
152
<td valign="middle" align="left">[<a href="maxima_57.html#SEC223" title="Next chapter"> &gt;&gt; </a>]</td>
153
153
<td valign="middle" align="left"> &nbsp; </td>
154
154
<td valign="middle" align="left"> &nbsp; </td>
155
155
<td valign="middle" align="left"> &nbsp; </td>
156
156
<td valign="middle" align="left"> &nbsp; </td>
157
157
<td valign="middle" align="left">[<a href="maxima.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
158
158
<td valign="middle" align="left">[<a href="maxima_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
159
 
<td valign="middle" align="left">[<a href="maxima_76.html#SEC287" title="Index">Index</a>]</td>
 
159
<td valign="middle" align="left">[<a href="maxima_78.html#SEC302" title="Index">Index</a>]</td>
160
160
<td valign="middle" align="left">[<a href="maxima_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
161
161
</tr></table>
162
 
<h1 class="chapter"> 56. lbfgs </h1>
 
162
<h1 class="chapter"> 56. interpol </h1>
163
163
 
164
164
<table class="menu" border="0" cellspacing="0">
165
 
<tr><td align="left" valign="top"><a href="#SEC215">56.1 Introducci&oacute;n a lbfgs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
165
<tr><td align="left" valign="top"><a href="#SEC221">56.1 Introducci&oacute;n a interpol</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
166
166
</td></tr>
167
 
<tr><td align="left" valign="top"><a href="#SEC216">56.2 Funciones y variables para lbfgs</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
 
167
<tr><td align="left" valign="top"><a href="#SEC222">56.2 Funciones y variables para interpol</a></td><td>&nbsp;&nbsp;</td><td align="left" valign="top">
168
168
</td></tr>
169
169
</table>
170
170
 
171
171
<hr size="6">
172
 
<a name="Introducci_00f3n-a-lbfgs"></a>
173
 
<a name="SEC215"></a>
174
 
<table cellpadding="1" cellspacing="1" border="0">
175
 
<tr><td valign="middle" align="left">[<a href="#SEC214" title="Previous section in reading order"> &lt; </a>]</td>
176
 
<td valign="middle" align="left">[<a href="#SEC216" title="Next section in reading order"> &gt; </a>]</td>
177
 
<td valign="middle" align="left"> &nbsp; </td>
178
 
<td valign="middle" align="left">[<a href="#SEC214" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
179
 
<td valign="middle" align="left">[<a href="#SEC214" title="Up section"> Up </a>]</td>
180
 
<td valign="middle" align="left">[<a href="maxima_57.html#SEC217" title="Next chapter"> &gt;&gt; </a>]</td>
181
 
<td valign="middle" align="left"> &nbsp; </td>
182
 
<td valign="middle" align="left"> &nbsp; </td>
183
 
<td valign="middle" align="left"> &nbsp; </td>
184
 
<td valign="middle" align="left"> &nbsp; </td>
185
 
<td valign="middle" align="left">[<a href="maxima.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
186
 
<td valign="middle" align="left">[<a href="maxima_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
187
 
<td valign="middle" align="left">[<a href="maxima_76.html#SEC287" title="Index">Index</a>]</td>
188
 
<td valign="middle" align="left">[<a href="maxima_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
189
 
</tr></table>
190
 
<h2 class="section"> 56.1 Introducci&oacute;n a lbfgs </h2>
191
 
 
192
 
<p>La funci&oacute;n <code>lbfgs</code> implementa el llamado algoritmo L-BFGS [1]
193
 
para resolver problemas de minimizaci&oacute;n sin restricciones mediante una
194
 
t&eacute;cnica <i>cuasi-Newton con memoria limitada</i> (BFGS). El t&eacute;rmino
195
 
memoria limitada procede del hecho de que se almacena una aproximaci&oacute;n
196
 
de rango bajo de la inversa de la matriz hessiana, en lugar de la matriz
197
 
completa. El programa fue originalmente escrito en Fortran [2] por
198
 
Jorge Nocedal, incorporando algunas funciones escritas originalmente
199
 
por Jorge J. Mor&eacute; y David J. Thuente, traducidas posteriormente a Lisp
200
 
autom&aacute;ticamente con el programa <code>f2cl</code>. El paquete <code>lbfgs</code>
201
 
contiene el c&oacute;digo traducido, junto con una funci&oacute;n interfaz que para
202
 
controlar ciertos detalles.
203
 
</p>
204
 
 
205
 
<p>Referencias:
206
 
</p>
207
 
<p>[1] D. Liu and J. Nocedal. &quot;On the limited memory BFGS method for large
208
 
scale optimization&quot;. <i>Mathematical Programming B</i> 45:503-528 (1989)
209
 
</p>
210
 
<p>[2] <a href="http://netlib.org/opt/lbfgs_um.shar">http://netlib.org/opt/lbfgs_um.shar</a>
211
 
</p>
212
 
<hr size="6">
213
 
<a name="Funciones-y-variables-para-lbfgs"></a>
214
 
<a name="SEC216"></a>
215
 
<table cellpadding="1" cellspacing="1" border="0">
216
 
<tr><td valign="middle" align="left">[<a href="#SEC215" title="Previous section in reading order"> &lt; </a>]</td>
217
 
<td valign="middle" align="left">[<a href="maxima_57.html#SEC217" title="Next section in reading order"> &gt; </a>]</td>
218
 
<td valign="middle" align="left"> &nbsp; </td>
219
 
<td valign="middle" align="left">[<a href="#SEC214" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
220
 
<td valign="middle" align="left">[<a href="#SEC214" title="Up section"> Up </a>]</td>
221
 
<td valign="middle" align="left">[<a href="maxima_57.html#SEC217" title="Next chapter"> &gt;&gt; </a>]</td>
222
 
<td valign="middle" align="left"> &nbsp; </td>
223
 
<td valign="middle" align="left"> &nbsp; </td>
224
 
<td valign="middle" align="left"> &nbsp; </td>
225
 
<td valign="middle" align="left"> &nbsp; </td>
226
 
<td valign="middle" align="left">[<a href="maxima.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
227
 
<td valign="middle" align="left">[<a href="maxima_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
228
 
<td valign="middle" align="left">[<a href="maxima_76.html#SEC287" title="Index">Index</a>]</td>
229
 
<td valign="middle" align="left">[<a href="maxima_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
230
 
</tr></table>
231
 
<h2 class="section"> 56.2 Funciones y variables para lbfgs </h2>
232
 
 
233
 
<dl>
234
 
<dt><u>Funci&oacute;n:</u> <b>lbfgs</b><i> (<var>FOM</var>, <var>X</var>, <var>X0</var>, <var>epsilon</var>, <var>iprint</var>)</i>
235
 
<a name="IDX1886"></a>
236
 
</dt>
237
 
<dd><p>Encuentra una soluci&oacute;n aproximada para el problema de minimizaci&oacute;n
238
 
sin restricciones de la funci&oacute;n objetivo <var>FOM</var> para la lista de 
239
 
variables <var>X</var>, partiendo de los estimadores iniciales <var>X0</var>,
240
 
de tal manera que <em>norm grad FOM &lt; epsilon max(1, norm X)</em>.
241
 
</p>
242
 
<p>El algoritmo utilizado es una t&eacute;cnica <i>cuasi-Newton con memoria limitada</i>
243
 
(BFGS) [1]. El t&eacute;rmino <i>memoria limitada</i> procede del hecho de que se almacena
244
 
una aproximaci&oacute;n de rango bajo de la inversa de la matriz hessiana, en lugar
245
 
de la matriz completa.
246
 
Cada iteraci&oacute;n del algoritmo es una b&uacute;squeda a lo largo de una recta,
247
 
cuya direcci&oacute;n se calcula a partir de la matriz inversa aproximada del
248
 
hessiano. La funci&oacute;n objetivo decrece siempre tras cada b&uacute;squeda
249
 
exitosa a lo largo de la recta; adem&aacute;s, casi siempre decrece tambi&eacute;n
250
 
el m&oacute;dulo del gradiente de la funci&oacute;n.
251
 
</p>
252
 
<p>El argumento <var>iprint</var> controla los mensajes de progreso que env&iacute;a
253
 
la funci&oacute;n <code>lbfgs</code>.
254
 
</p>
255
 
 
256
 
<dl compact="compact">
257
 
<dt> <code>iprint[1]</code></dt>
258
 
<dd><p><code><var>iprint</var>[1]</code> controla la frecuencia con la que se emiten los mensajes.
259
 
</p><dl compact="compact">
260
 
<dt> <code>iprint[1] &lt; 0</code></dt>
261
 
<dd><p>No se env&iacute;an mensajes.
262
 
</p></dd>
263
 
<dt> <code>iprint[1] = 0</code></dt>
264
 
<dd><p>Mensajes &uacute;nicamente en la primera y &uacute;ltima iteraciones.
265
 
</p></dd>
266
 
<dt> <code>iprint[1] &gt; 0</code></dt>
267
 
<dd><p>Imprime un mensaje cada <code><var>iprint</var>[1]</code> iteraciones.
268
 
</p></dd>
269
 
</dl>
270
 
</dd>
271
 
<dt> <code>iprint[2]</code></dt>
272
 
<dd><p><code><var>iprint</var>[2]</code> controla la cantidad de informaci&oacute;n contenida en los mensajes.
273
 
</p><dl compact="compact">
274
 
<dt> <code>iprint[2] = 0</code></dt>
275
 
<dd><p>Imprime contador de iteraciones, n&uacute;mero de evaluaciones de <var>FOM</var>, valor de <var>FOM</var>,
276
 
m&oacute;dulo del gradiente de <var>FOM</var> y amplitud del paso.
277
 
</p></dd>
278
 
<dt> <code>iprint[2] = 1</code></dt>
279
 
<dd><p>Igual que <code><var>iprint</var>[2] = 0</code>, incluyendo <var>X0</var> y el gradiente de <var>FOM</var> evaluado en <var>X0</var>.
280
 
</p></dd>
281
 
<dt> <code>iprint[2] = 2</code></dt>
282
 
<dd><p>Igual que <code><var>iprint</var>[2] = 1</code>, incluyendo los valores de <var>X</var> en cada iteraci&oacute;n.
283
 
</p></dd>
284
 
<dt> <code>iprint[2] = 3</code></dt>
285
 
<dd><p>Igual que <code><var>iprint</var>[2] = 2</code>, incluyendo el gradiente de <var>FOM</var> en cada iteraci&oacute;n.
286
 
</p></dd>
287
 
</dl>
288
 
</dd>
289
 
</dl>
290
 
 
291
 
<p>Las columnas devueltas por <code>lbfgs</code> son las siguientes:
292
 
</p>
293
 
<dl compact="compact">
294
 
<dt> <code>I</code></dt>
295
 
<dd><p>N&uacute;mero de iteraciones. Se incremente tras cada b&uacute;squeda a lo
296
 
largo de una recta.
297
 
</p></dd>
298
 
<dt> <code>NFN</code></dt>
299
 
<dd><p>N&uacute;mero de evaluaciones de la funci&oacute;n objetivo.
300
 
</p></dd>
301
 
<dt> <code>FUNC</code></dt>
302
 
<dd><p>Valor de la funci&oacute;n objetivo al final de cada iteraci&oacute;n.
303
 
</p></dd>
304
 
<dt> <code>GNORM</code></dt>
305
 
<dd><p>M&oacute;dulo del gradiente de la funci&oacute;n objetivo al final de
306
 
cada iteraci&oacute;n.
307
 
</p></dd>
308
 
<dt> <code>STEPLENGTH</code></dt>
309
 
<dd><p>Un par&aacute;metro interno del algoritmo de b&uacute;squeda.
310
 
</p></dd>
311
 
</dl>
312
 
 
313
 
<p>Para m&aacute;s informaci&oacute;n sobre el algoritmo se puede acudir a los
314
 
comentarios en el c&oacute;digo original en Fortran [2].
315
 
</p>
316
 
<p>V&eacute;anse tambi&eacute;n <code>lbfgs_nfeval_max</code> y <code>lbfgs_ncorrections</code>.
317
 
</p>
318
 
<p>Referencias:
319
 
</p>
320
 
<p>[1] D. Liu and J. Nocedal. &quot;On the limited memory BFGS method for large
321
 
scale optimization&quot;. <i>Mathematical Programming B</i> 45:503-528 (1989)
322
 
</p>
323
 
<p>[2] <a href="http://netlib.org/opt/lbfgs_um.shar">http://netlib.org/opt/lbfgs_um.shar</a>
324
 
</p>
325
 
<p>Ejemplos:
326
 
</p>
327
 
<p>La misma funci&oacute;n objetivo utilizada por FGCOMPUTE en el programa 
328
 
sdrive.f del paquete LBFGS de Netlib. N&oacute;tese que las variables en
329
 
cuesti&oacute;n est&aacute;n subindicadas. La funci&oacute;n objetivo tiene un
330
 
m&iacute;nimo exacto igual a cero en <em>u[k] = 1</em>, para
331
 
<em>k = 1, ..., 8</em>.
332
 
</p><pre class="example">(%i1) load (lbfgs);
333
 
(%o1)   /usr/share/maxima/5.10.0cvs/share/lbfgs/lbfgs.mac
334
 
(%i2) t1[j] := 1 - u[j];
335
 
(%o2)                     t1  := 1 - u
336
 
                            j         j
337
 
(%i3) t2[j] := 10*(u[j + 1] - u[j]^2);
338
 
                                          2
339
 
(%o3)                t2  := 10 (u      - u )
340
 
                       j         j + 1    j
341
 
(%i4) n : 8;
342
 
(%o4)                           8
343
 
(%i5) FOM : sum (t1[2*j - 1]^2 + t2[2*j - 1]^2, j, 1, n/2);
344
 
                 2 2           2              2 2           2
345
 
(%o5) 100 (u  - u )  + (1 - u )  + 100 (u  - u )  + (1 - u )
346
 
            8    7           7           6    5           5
347
 
                     2 2           2              2 2           2
348
 
        + 100 (u  - u )  + (1 - u )  + 100 (u  - u )  + (1 - u )
349
 
                4    3           3           2    1           1
350
 
(%i6) lbfgs (FOM, '[u[1],u[2],u[3],u[4],u[5],u[6],u[7],u[8]],
351
 
       [-1.2, 1, -1.2, 1, -1.2, 1, -1.2, 1], 1e-3, [1, 0]);
352
 
*************************************************
353
 
  N=    8   NUMBER OF CORRECTIONS=25
354
 
       INITIAL VALUES
355
 
 F=  9.680000000000000D+01   GNORM=  4.657353755084532D+02
356
 
*************************************************
357
 
</pre><pre class="example"> I NFN   FUNC                    GNORM                   STEPLENGTH
358
 
 
359
 
 1   3   1.651479526340304D+01   4.324359291335977D+00   7.926153934390631D-04
360
 
 2   4   1.650209316638371D+01   3.575788161060007D+00   1.000000000000000D+00
361
 
 3   5   1.645461701312851D+01   6.230869903601577D+00   1.000000000000000D+00 
362
 
 4   6   1.636867301275588D+01   1.177589920974980D+01   1.000000000000000D+00
363
 
 5   7   1.612153014409201D+01   2.292797147151288D+01   1.000000000000000D+00
364
 
 6   8   1.569118407390628D+01   3.687447158775571D+01   1.000000000000000D+00
365
 
 7   9   1.510361958398942D+01   4.501931728123680D+01   1.000000000000000D+00
366
 
 8  10   1.391077875774294D+01   4.526061463810632D+01   1.000000000000000D+00
367
 
 9  11   1.165625686278198D+01   2.748348965356917D+01   1.000000000000000D+00
368
 
10  12   9.859422687859137D+00   2.111494974231644D+01   1.000000000000000D+00
369
 
11  13   7.815442521732281D+00   6.110762325766556D+00   1.000000000000000D+00
370
 
12  15   7.346380905773160D+00   2.165281166714631D+01   1.285316401779533D-01
371
 
13  16   6.330460634066370D+00   1.401220851762050D+01   1.000000000000000D+00
372
 
14  17   5.238763939851439D+00   1.702473787613255D+01   1.000000000000000D+00
373
 
15  18   3.754016790406701D+00   7.981845727704576D+00   1.000000000000000D+00
374
 
16  20   3.001238402309352D+00   3.925482944716691D+00   2.333129631296807D-01
375
 
17  22   2.794390709718290D+00   8.243329982546473D+00   2.503577283782332D-01
376
 
18  23   2.563783562918759D+00   1.035413426521790D+01   1.000000000000000D+00
377
 
19  24   2.019429976377856D+00   1.065187312346769D+01   1.000000000000000D+00
378
 
20  25   1.428003167670903D+00   2.475962450826961D+00   1.000000000000000D+00
379
 
21  27   1.197874264861340D+00   8.441707983493810D+00   4.303451060808756D-01
380
 
22  28   9.023848941942773D-01   1.113189216635162D+01   1.000000000000000D+00
381
 
23  29   5.508226405863770D-01   2.380830600326308D+00   1.000000000000000D+00
382
 
24  31   3.902893258815567D-01   5.625595816584421D+00   4.834988416524465D-01
383
 
25  32   3.207542206990315D-01   1.149444645416472D+01   1.000000000000000D+00
384
 
26  33   1.874468266362791D-01   3.632482152880997D+00   1.000000000000000D+00
385
 
27  34   9.575763380706598D-02   4.816497446154354D+00   1.000000000000000D+00
386
 
28  35   4.085145107543406D-02   2.087009350166495D+00   1.000000000000000D+00
387
 
29  36   1.931106001379290D-02   3.886818608498966D+00   1.000000000000000D+00
388
 
30  37   6.894000721499670D-03   3.198505796342214D+00   1.000000000000000D+00
389
 
31  38   1.443296033051864D-03   1.590265471025043D+00   1.000000000000000D+00
390
 
32  39   1.571766603154336D-04   3.098257063980634D-01   1.000000000000000D+00
391
 
33  40   1.288011776581970D-05   1.207784183577257D-02   1.000000000000000D+00
392
 
34  41   1.806140173752971D-06   4.587890233385193D-02   1.000000000000000D+00
393
 
35  42   1.769004645459358D-07   1.790537375052208D-02   1.000000000000000D+00
394
 
36  43   3.312164100763217D-10   6.782068426119681D-04   1.000000000000000D+00
395
 
</pre><pre class="example">
396
 
 THE MINIMIZATION TERMINATED WITHOUT DETECTING ERRORS.
397
 
 IFLAG = 0
398
 
(%o6) [u  = 1.000005339815974, u  = 1.000009942839805, 
399
 
        1                       2
400
 
u  = 1.000005339815974, u  = 1.000009942839805, 
401
 
 3                       4
402
 
u  = 1.000005339815974, u  = 1.000009942839805, 
403
 
 5                       6
404
 
u  = 1.000005339815974, u  = 1.000009942839805]
405
 
 7                       8
406
 
</pre>
407
 
 
408
 
 
409
 
<p>Un problema de regresi&oacute;n. La funci&oacute;n objetivo es el cuadrado medio
410
 
de la diferencia entre la predicci&oacute;n <em>F(X[i])</em> y el valor observado
411
 
<em>Y[i]</em>. La funci&oacute;n <em>F</em> es mon&oacute;tona y acotada (llamada en ocasiones
412
 
&quot;sigmoidal&quot;). En este ejemplo, <code>lbfgs</code> calcula valores aproximados para los
413
 
par&aacute;metros de <em>F</em> y <code>plot2d</code> hace una representaci&oacute;n gr&aacute;fica
414
 
comparativa de <em>F</em> junto con los datos observados.
415
 
</p>
416
 
<pre class="example">(%i1) load (lbfgs);
417
 
(%o1)   /usr/share/maxima/5.10.0cvs/share/lbfgs/lbfgs.mac
418
 
(%i2) FOM : '((1/length(X))*sum((F(X[i]) - Y[i])^2, i, 1,
419
 
                                                length(X)));
420
 
                               2
421
 
               sum((F(X ) - Y ) , i, 1, length(X))
422
 
                       i     i
423
 
(%o2)          -----------------------------------
424
 
                            length(X)
425
 
(%i3) X : [1, 2, 3, 4, 5];
426
 
(%o3)                    [1, 2, 3, 4, 5]
427
 
(%i4) Y : [0, 0.5, 1, 1.25, 1.5];
428
 
(%o4)                [0, 0.5, 1, 1.25, 1.5]
429
 
(%i5) F(x) := A/(1 + exp(-B*(x - C)));
430
 
                                   A
431
 
(%o5)            F(x) := ----------------------
432
 
                         1 + exp((- B) (x - C))
433
 
(%i6) ''FOM;
434
 
                A               2            A                2
435
 
(%o6) ((----------------- - 1.5)  + (----------------- - 1.25)
436
 
          - B (5 - C)                  - B (4 - C)
437
 
        %e            + 1            %e            + 1
438
 
            A             2            A               2
439
 
 + (----------------- - 1)  + (----------------- - 0.5)
440
 
      - B (3 - C)                - B (2 - C)
441
 
    %e            + 1          %e            + 1
442
 
             2
443
 
            A
444
 
 + --------------------)/5
445
 
      - B (1 - C)     2
446
 
   (%e            + 1)
447
 
(%i7) estimates : lbfgs (FOM, '[A, B, C], [1, 1, 1], 1e-4, [1, 0]);
448
 
*************************************************
449
 
  N=    3   NUMBER OF CORRECTIONS=25
450
 
       INITIAL VALUES
451
 
 F=  1.348738534246918D-01   GNORM=  2.000215531936760D-01
452
 
*************************************************
453
 
 
454
 
</pre><pre class="example">I  NFN  FUNC                    GNORM                   STEPLENGTH
455
 
1    3  1.177820636622582D-01   9.893138394953992D-02   8.554435968992371D-01  
456
 
2    6  2.302653892214013D-02   1.180098521565904D-01   2.100000000000000D+01  
457
 
3    8  1.496348495303005D-02   9.611201567691633D-02   5.257340567840707D-01  
458
 
4    9  7.900460841091139D-03   1.325041647391314D-02   1.000000000000000D+00  
459
 
5   10  7.314495451266917D-03   1.510670810312237D-02   1.000000000000000D+00  
460
 
6   11  6.750147275936680D-03   1.914964958023047D-02   1.000000000000000D+00  
461
 
7   12  5.850716021108205D-03   1.028089194579363D-02   1.000000000000000D+00  
462
 
8   13  5.778664230657791D-03   3.676866074530332D-04   1.000000000000000D+00  
463
 
9   14  5.777818823650782D-03   3.010740179797255D-04   1.000000000000000D+00  
464
 
</pre><pre class="example">
465
 
 THE MINIMIZATION TERMINATED WITHOUT DETECTING ERRORS.
466
 
 IFLAG = 0
467
 
(%o7) [A = 1.461933911464101, B = 1.601593973254802, 
468
 
                                           C = 2.528933072164854]
469
 
(%i8) plot2d ([F(x), [discrete, X, Y]], [x, -1, 6]), ''estimates;
470
 
(%o8) 
471
 
</pre>
472
 
</dd></dl>
473
 
 
474
 
<dl>
475
 
<dt><u>Variable:</u> <b>lbfgs_nfeval_max</b>
476
 
<a name="IDX1887"></a>
477
 
</dt>
478
 
<dd><p>Valor por defecto: 100
479
 
</p>
480
 
<p>La variable <code>lbfgs_nfeval_max</code> almacena el n&uacute;mero m&aacute;ximo de
481
 
evaluaciones de la funci&oacute;n objetivo en <code>lbfgs</code>. Cuando se
482
 
alcanza el valor <code>lbfgs_nfeval_max</code>, <code>lbfgs</code> devuelve
483
 
el resultado logrado en la &uacute;ltima iteraci&oacute;n exitosa.
484
 
</p>
485
 
</dd></dl>
486
 
 
487
 
<dl>
488
 
<dt><u>Variable:</u> <b>lbfgs_ncorrections</b>
489
 
<a name="IDX1888"></a>
490
 
</dt>
491
 
<dd><p>Valor por defecto: 25
492
 
</p>
493
 
<p>La variable <code>lbfgs_ncorrections</code> almacena el n&uacute;mero de correcciones
494
 
aplicadas a la matriz inversa aproximada del hessiano, la cual es gestionada
495
 
por <code>lbfgs</code>.
496
 
</p>
497
 
</dd></dl>
498
 
 
499
 
<hr size="6">
500
 
<table cellpadding="1" cellspacing="1" border="0">
501
 
<tr><td valign="middle" align="left">[<a href="#SEC214" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
502
 
<td valign="middle" align="left">[<a href="maxima_57.html#SEC217" title="Next chapter"> &gt;&gt; </a>]</td>
503
 
<td valign="middle" align="left"> &nbsp; </td>
504
 
<td valign="middle" align="left"> &nbsp; </td>
505
 
<td valign="middle" align="left"> &nbsp; </td>
506
 
<td valign="middle" align="left"> &nbsp; </td>
507
 
<td valign="middle" align="left"> &nbsp; </td>
508
 
<td valign="middle" align="left">[<a href="maxima.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
509
 
<td valign="middle" align="left">[<a href="maxima_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
510
 
<td valign="middle" align="left">[<a href="maxima_76.html#SEC287" title="Index">Index</a>]</td>
 
172
<a name="Introducci_00f3n-a-interpol"></a>
 
173
<a name="SEC221"></a>
 
174
<table cellpadding="1" cellspacing="1" border="0">
 
175
<tr><td valign="middle" align="left">[<a href="#SEC220" title="Previous section in reading order"> &lt; </a>]</td>
 
176
<td valign="middle" align="left">[<a href="#SEC222" title="Next section in reading order"> &gt; </a>]</td>
 
177
<td valign="middle" align="left"> &nbsp; </td>
 
178
<td valign="middle" align="left">[<a href="#SEC220" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
179
<td valign="middle" align="left">[<a href="#SEC220" title="Up section"> Up </a>]</td>
 
180
<td valign="middle" align="left">[<a href="maxima_57.html#SEC223" title="Next chapter"> &gt;&gt; </a>]</td>
 
181
<td valign="middle" align="left"> &nbsp; </td>
 
182
<td valign="middle" align="left"> &nbsp; </td>
 
183
<td valign="middle" align="left"> &nbsp; </td>
 
184
<td valign="middle" align="left"> &nbsp; </td>
 
185
<td valign="middle" align="left">[<a href="maxima.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 
186
<td valign="middle" align="left">[<a href="maxima_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
187
<td valign="middle" align="left">[<a href="maxima_78.html#SEC302" title="Index">Index</a>]</td>
 
188
<td valign="middle" align="left">[<a href="maxima_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
 
189
</tr></table>
 
190
<h2 class="section"> 56.1 Introducci&oacute;n a interpol </h2>
 
191
 
 
192
<p>El paquete <code>interpol</code> desarrolla los m&eacute;todos de interpolaci&oacute;n polin&oacute;mica de Lagrange, lineal y de <i>splines</i> c&uacute;bicos.
 
193
</p>
 
194
 
 
195
<p>Para comentarios, fallos o sugerencias, contactar con <var>'mario ARROBA edu PUNTO xunta PUNTO es'</var>.
 
196
</p>
 
197
 
 
198
 
 
199
<hr size="6">
 
200
<a name="Funciones-y-variables-para-interpol"></a>
 
201
<a name="SEC222"></a>
 
202
<table cellpadding="1" cellspacing="1" border="0">
 
203
<tr><td valign="middle" align="left">[<a href="#SEC221" title="Previous section in reading order"> &lt; </a>]</td>
 
204
<td valign="middle" align="left">[<a href="maxima_57.html#SEC223" title="Next section in reading order"> &gt; </a>]</td>
 
205
<td valign="middle" align="left"> &nbsp; </td>
 
206
<td valign="middle" align="left">[<a href="#SEC220" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
207
<td valign="middle" align="left">[<a href="#SEC220" title="Up section"> Up </a>]</td>
 
208
<td valign="middle" align="left">[<a href="maxima_57.html#SEC223" title="Next chapter"> &gt;&gt; </a>]</td>
 
209
<td valign="middle" align="left"> &nbsp; </td>
 
210
<td valign="middle" align="left"> &nbsp; </td>
 
211
<td valign="middle" align="left"> &nbsp; </td>
 
212
<td valign="middle" align="left"> &nbsp; </td>
 
213
<td valign="middle" align="left">[<a href="maxima.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 
214
<td valign="middle" align="left">[<a href="maxima_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
215
<td valign="middle" align="left">[<a href="maxima_78.html#SEC302" title="Index">Index</a>]</td>
 
216
<td valign="middle" align="left">[<a href="maxima_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
 
217
</tr></table>
 
218
<h2 class="section"> 56.2 Funciones y variables para interpol </h2>
 
219
 
 
220
 
 
221
<dl>
 
222
<dt><u>Funci&oacute;n:</u> <b>lagrange</b><i> (<var>points</var>)</i>
 
223
<a name="IDX2111"></a>
 
224
</dt>
 
225
<dt><u>Funci&oacute;n:</u> <b>lagrange</b><i> (<var>points</var>, <var>option</var>)</i>
 
226
<a name="IDX2112"></a>
 
227
</dt>
 
228
<dd><p>Calcula el polinomio de interpolaci&oacute;n por el m&eacute;todo de Lagrange. El argumento <var>points</var> debe ser:
 
229
</p>
 
230
<ul>
 
231
<li>
 
232
una matriz de dos columnas, <code>p:matrix([2,4],[5,6],[9,3])</code>,
 
233
</li><li>
 
234
una lista de pares de n&uacute;meros, <code>p: [[2,4],[5,6],[9,3]]</code>,
 
235
</li><li>
 
236
una lista de n&uacute;meros, <code>p: [4,6,3]</code>, en cuyo caso las abscisas se asignar&aacute;n autom&aacute;ticamente a 1, 2, 3, etc.
 
237
</li></ul>
 
238
 
 
239
<p>En los dos primeros casos los pares se ordenan con respecto a la primera coordenada antes de proceder a los c&aacute;lculos.
 
240
</p>
 
241
<p>Mediante el argumento <var>option</var> es posible seleccionar el nombre de la variable independiente, que por defecto es <code>'x</code>; para definir otra, escr&iacute;base algo como <code>varname='z</code>.
 
242
</p>
 
243
<p>T&eacute;ngase en cuenta que cuando se trabaja con polinomios de grado alto, los
 
244
c&aacute;lculos con n&uacute;meros decimales en coma flotante pueden ser muy inestables.
 
245
</p>
 
246
<p>Ejemplos:
 
247
</p>
 
248
<pre class="example">(%i1) load(interpol)$
 
249
(%i2) p:[[7,2],[8,2],[1,5],[3,2],[6,7]]$
 
250
(%i3) lagrange(p);
 
251
       (x - 7) (x - 6) (x - 3) (x - 1)
 
252
(%o3)  -------------------------------
 
253
                     35
 
254
   (x - 8) (x - 6) (x - 3) (x - 1)
 
255
 - -------------------------------
 
256
                 12
 
257
   7 (x - 8) (x - 7) (x - 3) (x - 1)
 
258
 + ---------------------------------
 
259
                  30
 
260
   (x - 8) (x - 7) (x - 6) (x - 1)
 
261
 - -------------------------------
 
262
                 60
 
263
   (x - 8) (x - 7) (x - 6) (x - 3)
 
264
 + -------------------------------
 
265
                 84
 
266
(%i4) f(x):=''%;
 
267
               (x - 7) (x - 6) (x - 3) (x - 1)
 
268
(%o4)  f(x) := -------------------------------
 
269
                             35
 
270
   (x - 8) (x - 6) (x - 3) (x - 1)
 
271
 - -------------------------------
 
272
                 12
 
273
   7 (x - 8) (x - 7) (x - 3) (x - 1)
 
274
 + ---------------------------------
 
275
                  30
 
276
   (x - 8) (x - 7) (x - 6) (x - 1)
 
277
 - -------------------------------
 
278
                 60
 
279
   (x - 8) (x - 7) (x - 6) (x - 3)
 
280
 + -------------------------------
 
281
                 84
 
282
(%i5) /* Evaluate the polynomial at some points */
 
283
      expand(map(f,[2.3,5/7,%pi]));
 
284
                                  4          3           2
 
285
                    919062  73 %pi    701 %pi    8957 %pi
 
286
(%o5)  [- 1.567535, ------, ------- - -------- + ---------
 
287
                    84035     420       210         420
 
288
                                             5288 %pi   186
 
289
                                           - -------- + ---]
 
290
                                               105       5
 
291
(%i6) %,numer;
 
292
(%o6) [- 1.567535, 10.9366573451538, 2.89319655125692]
 
293
(%i7) load(draw)$  /* load draw package */
 
294
(%i8) /* Plot the polynomial together with points */
 
295
      draw2d(
 
296
        color      = red,
 
297
        key        = &quot;Lagrange polynomial&quot;,
 
298
        explicit(f(x),x,0,10),
 
299
        point_size = 3,
 
300
        color      = blue,
 
301
        key        = &quot;Sample points&quot;,
 
302
        points(p))$
 
303
(%i9) /* Change variable name */
 
304
      lagrange(p, varname=w);
 
305
       (w - 7) (w - 6) (w - 3) (w - 1)
 
306
(%o9)  -------------------------------
 
307
                     35
 
308
   (w - 8) (w - 6) (w - 3) (w - 1)
 
309
 - -------------------------------
 
310
                 12
 
311
   7 (w - 8) (w - 7) (w - 3) (w - 1)
 
312
 + ---------------------------------
 
313
                  30
 
314
   (w - 8) (w - 7) (w - 6) (w - 1)
 
315
 - -------------------------------
 
316
                 60
 
317
   (w - 8) (w - 7) (w - 6) (w - 3)
 
318
 + -------------------------------
 
319
                 84
 
320
</pre>
 
321
</dd></dl>
 
322
 
 
323
 
 
324
<dl>
 
325
<dt><u>Funci&oacute;n:</u> <b>charfun2</b><i> (<var>x</var>, <var>a</var>, <var>b</var>)</i>
 
326
<a name="IDX2113"></a>
 
327
</dt>
 
328
<dd><p>Devuelve <code>true</code> si el n&uacute;mero <var>x</var> pertenece al intervalo <em>[a, b)</em>, y <code>false</code> en caso contrario.
 
329
</p></dd></dl>
 
330
 
 
331
 
 
332
<dl>
 
333
<dt><u>Funci&oacute;n:</u> <b>linearinterpol</b><i> (<var>points</var>)</i>
 
334
<a name="IDX2114"></a>
 
335
</dt>
 
336
<dt><u>Funci&oacute;n:</u> <b>linearinterpol</b><i> (<var>points</var>, <var>option</var>)</i>
 
337
<a name="IDX2115"></a>
 
338
</dt>
 
339
<dd><p>Calcula rectas de interpolaci&oacute;n. El argumento <var>points</var> debe ser:
 
340
</p>
 
341
<ul>
 
342
<li>
 
343
una matriz de dos columnas, <code>p:matrix([2,4],[5,6],[9,3])</code>,
 
344
</li><li>
 
345
una lista de pares de n&uacute;meros, <code>p: [[2,4],[5,6],[9,3]]</code>,
 
346
</li><li>
 
347
una lista de n&uacute;meros, <code>p: [4,6,3]</code>, en cuyo caso las abscisas se asignar&aacute;n autom&aacute;ticamente a 1, 2, 3, etc.
 
348
</li></ul>
 
349
 
 
350
<p>En los dos primeros casos los pares se ordenan con respecto a la primera coordenada antes de proceder a los c&aacute;lculos.
 
351
</p>
 
352
<p>Mediante el argumento <var>option</var> es posible seleccionar el nombre de la variable independiente, que por defecto es <code>'x</code>; para definir otra, escr&iacute;base algo como <code>varname='z</code>.
 
353
</p>
 
354
<p>Ejemplos:
 
355
</p>
 
356
<pre class="example">(%i1) load(interpol)$
 
357
(%i2) p: matrix([7,2],[8,3],[1,5],[3,2],[6,7])$
 
358
(%i3) linearinterpol(p);
 
359
        13   3 x
 
360
(%o3)  (-- - ---) charfun2(x, minf, 3)
 
361
        2     2
 
362
 + (x - 5) charfun2(x, 7, inf) + (37 - 5 x) charfun2(x, 6, 7)
 
363
    5 x
 
364
 + (--- - 3) charfun2(x, 3, 6)
 
365
     3
 
366
 
 
367
(%i4) f(x):=''%;
 
368
                13   3 x
 
369
(%o4)  f(x) := (-- - ---) charfun2(x, minf, 3)
 
370
                2     2
 
371
 + (x - 5) charfun2(x, 7, inf) + (37 - 5 x) charfun2(x, 6, 7)
 
372
    5 x
 
373
 + (--- - 3) charfun2(x, 3, 6)
 
374
     3
 
375
(%i5)  /* Evaluate the polynomial at some points */
 
376
       map(f,[7.3,25/7,%pi]);
 
377
                            62  5 %pi
 
378
(%o5)                 [2.3, --, ----- - 3]
 
379
                            21    3
 
380
(%i6) %,numer;
 
381
(%o6)  [2.3, 2.952380952380953, 2.235987755982989]
 
382
(%i7) load(draw)$  /* load draw package */
 
383
(%i8)  /* Plot the polynomial together with points */
 
384
       draw2d(
 
385
         color      = red,
 
386
         key        = &quot;Linear interpolator&quot;,
 
387
         explicit(f(x),x,-5,20),
 
388
         point_size = 3,
 
389
         color      = blue,
 
390
         key        = &quot;Sample points&quot;,
 
391
         points(args(p)))$
 
392
(%i9)  /* Change variable name */
 
393
       linearinterpol(p, varname='s);
 
394
       13   3 s
 
395
(%o9) (-- - ---) charfun2(s, minf, 3)
 
396
       2     2
 
397
 + (s - 5) charfun2(s, 7, inf) + (37 - 5 s) charfun2(s, 6, 7)
 
398
    5 s
 
399
 + (--- - 3) charfun2(s, 3, 6)
 
400
     3
 
401
</pre>
 
402
</dd></dl>
 
403
 
 
404
 
 
405
 
 
406
<dl>
 
407
<dt><u>Funci&oacute;n:</u> <b>cspline</b><i> (<var>points</var>)</i>
 
408
<a name="IDX2116"></a>
 
409
</dt>
 
410
<dt><u>Funci&oacute;n:</u> <b>cspline</b><i> (<var>points</var>, <var>option1</var>, <var>option2</var>, ...)</i>
 
411
<a name="IDX2117"></a>
 
412
</dt>
 
413
<dd><p>Calcula el polinomio de interpolaci&oacute;n por el m&eacute;todo de los <i>splines</i> c&uacute;bicos. El argumento <var>points</var> debe ser:
 
414
</p>
 
415
<ul>
 
416
<li>
 
417
una matriz de dos columnas, <code>p:matrix([2,4],[5,6],[9,3])</code>,
 
418
</li><li>
 
419
una lista de pares de n&uacute;meros, <code>p: [[2,4],[5,6],[9,3]]</code>,
 
420
</li><li>
 
421
una lista de n&uacute;meros, <code>p: [4,6,3]</code>, en cuyo caso las abscisas se asignar&aacute;n autom&aacute;ticamente a 1, 2, 3, etc.
 
422
</li></ul>
 
423
 
 
424
<p>En los dos primeros casos los pares se ordenan con respecto a la primera coordenada antes de proceder a los c&aacute;lculos.
 
425
</p>
 
426
<p>Esta funci&oacute;n dispone de tres opciones para acomodarse a necesidades concretas:
 
427
</p>
 
428
<ul>
 
429
<li>
 
430
<code>'d1</code>, por defecto <code>'unknown</code>, es la primera derivada en <em>x_1</em>; si toma el valor <code>'unknown</code>, la segunda derivada en <em>x_1</em> se iguala a 0 (<i>spline</i> c&uacute;bico natural); en caso de tomar un valor num&eacute;rico, la segunda derivada se calcula en base a este n&uacute;mero.
 
431
 
 
432
</li><li>
 
433
<code>'dn</code>, por defecto <code>'unknown</code>, es la primera derivada en <em>x_n</em>; si toma el valor <code>'unknown</code>, la segunda derivada en <em>x_n</em> se iguala a 0 (<i>spline</i> c&uacute;bico natural); en caso de tomar un valor num&eacute;rico, la segunda derivada se calcula en base a este n&uacute;mero.
 
434
 
 
435
</li><li>
 
436
<code>'varname</code>, por defecto <code>'x</code>, es el nombre de la variable independiente.
 
437
</li></ul>
 
438
 
 
439
<p>Ejemplos:
 
440
</p>
 
441
<pre class="example">(%i1) load(interpol)$
 
442
(%i2) p:[[7,2],[8,2],[1,5],[3,2],[6,7]]$
 
443
(%i3) /* Unknown first derivatives at the extremes
 
444
         is equivalent to natural cubic splines */
 
445
      cspline(p);
 
446
              3         2
 
447
        1159 x    1159 x    6091 x   8283
 
448
(%o3)  (------- - ------- - ------ + ----) charfun2(x, minf, 3)
 
449
         3288      1096      3288    1096
 
450
            3         2
 
451
      2587 x    5174 x    494117 x   108928
 
452
 + (- ------- + ------- - -------- + ------) charfun2(x, 7, inf)
 
453
       1644       137       1644      137
 
454
          3          2
 
455
    4715 x    15209 x    579277 x   199575
 
456
 + (------- - -------- + -------- - ------) charfun2(x, 6, 7)
 
457
     1644       274        1644      274
 
458
            3         2
 
459
      3287 x    2223 x    48275 x   9609
 
460
 + (- ------- + ------- - ------- + ----) charfun2(x, 3, 6)
 
461
       4932       274      1644     274
 
462
 
 
463
(%i4) f(x):=''%$
 
464
(%i5) /* Some evaluations */
 
465
      map(f,[2.3,5/7,%pi]), numer;
 
466
(%o5) [1.991460766423356, 5.823200187269903, 2.227405312429507]
 
467
(%i6) load(draw)$  /* load draw package */
 
468
(%i7) /* Plotting interpolating function */
 
469
      draw2d(
 
470
        color      = red,
 
471
        key        = &quot;Cubic splines&quot;,
 
472
        explicit(f(x),x,0,10),
 
473
        point_size = 3,
 
474
        color      = blue,
 
475
        key        = &quot;Sample points&quot;,
 
476
        points(p))$
 
477
(%i8) /* New call, but giving values at the derivatives */
 
478
      cspline(p,d1=0,dn=0);
 
479
              3          2
 
480
        1949 x    11437 x    17027 x   1247
 
481
(%o8)  (------- - -------- + ------- + ----) charfun2(x, minf, 3)
 
482
         2256       2256      2256     752
 
483
            3          2
 
484
      1547 x    35581 x    68068 x   173546
 
485
 + (- ------- + -------- - ------- + ------) charfun2(x, 7, inf)
 
486
        564       564        141      141
 
487
         3          2
 
488
    607 x    35147 x    55706 x   38420
 
489
 + (------ - -------- + ------- - -----) charfun2(x, 6, 7)
 
490
     188       564        141      47
 
491
            3         2
 
492
      3895 x    1807 x    5146 x   2148
 
493
 + (- ------- + ------- - ------ + ----) charfun2(x, 3, 6)
 
494
       5076       188      141      47
 
495
(%i8) /* Defining new interpolating function */
 
496
      g(x):=''%$
 
497
(%i9) /* Plotting both functions together */
 
498
      draw2d(
 
499
        color      = black,
 
500
        key        = &quot;Cubic splines (default)&quot;,
 
501
        explicit(f(x),x,0,10),
 
502
        color      = red,
 
503
        key        = &quot;Cubic splines (d1=0,dn=0)&quot;,
 
504
        explicit(g(x),x,0,10),
 
505
        point_size = 3,
 
506
        color      = blue,
 
507
        key        = &quot;Sample points&quot;,
 
508
        points(p))$
 
509
</pre></dd></dl>
 
510
 
 
511
 
 
512
<dl>
 
513
<dt><u>Funci&oacute;n:</u> <b>ratinterpol</b><i> (<var>points</var>, <var>numdeg</var>)</i>
 
514
<a name="IDX2118"></a>
 
515
</dt>
 
516
<dt><u>Funci&oacute;n:</u> <b>ratinterpol</b><i> (<var>points</var>, <var>numdeg</var>, <var>option1</var>, <var>option2</var>, ...)</i>
 
517
<a name="IDX2119"></a>
 
518
</dt>
 
519
<dd><p>Genera el interpolador racional para los datos dados por <var>points</var> y con
 
520
grado <var>numdeg</var> en el numerador; el grado del denominador se calcula
 
521
autom&aacute;ticamente. El argumento <var>points</var> debe ser:
 
522
</p>
 
523
<ul>
 
524
<li>
 
525
una matriz de dos columnas, <code>p:matrix([2,4],[5,6],[9,3])</code>,
 
526
</li><li>
 
527
una lista de pares de n&uacute;meros, <code>p: [[2,4],[5,6],[9,3]]</code>,
 
528
</li><li>
 
529
una lista de n&uacute;meros, <code>p: [4,6,3]</code>, en cuyo caso las abscisas se asignar&aacute;n autom&aacute;ticamente a 1, 2, 3, etc.
 
530
</li></ul>
 
531
 
 
532
<p>En los dos primeros casos los pares se ordenan con respecto a la primera coordenada antes de proceder a los c&aacute;lculos.
 
533
</p>
 
534
<p>Esta funci&oacute;n dispone de dos opciones para acomodarse a necesidades concretas:
 
535
</p><ul>
 
536
<li>
 
537
<code>'denterm</code>, por defecto <code>1</code>, es el t&eacute;rmino independente del polinomio en el denominador.
 
538
 
 
539
</li><li>
 
540
<code>'varname</code>, por defecto <code>'x</code>, es el nombre de la variable independiente.
 
541
</li></ul>
 
542
 
 
543
<p>Ejemplos:
 
544
</p>
 
545
<pre class="example">(%i1) load(interpol)$
 
546
(%i2) load(draw)$
 
547
(%i3) p:[[7.2,2.5],[8.5,2.1],[1.6,5.1],[3.4,2.4],[6.7,7.9]]$
 
548
(%i4) for k:0 thru length(p)-1 do                                     
 
549
        draw2d(
 
550
          explicit(ratinterpol(p,k),x,0,9),                      
 
551
          point_size = 3,                                        
 
552
          points(p),                                             
 
553
          title = concat(&quot;Grado del numerador = &quot;,k),            
 
554
          yrange=[0,10])$
 
555
</pre></dd></dl>
 
556
 
 
557
<hr size="6">
 
558
<table cellpadding="1" cellspacing="1" border="0">
 
559
<tr><td valign="middle" align="left">[<a href="#SEC220" title="Beginning of this chapter or previous chapter"> &lt;&lt; </a>]</td>
 
560
<td valign="middle" align="left">[<a href="maxima_57.html#SEC223" title="Next chapter"> &gt;&gt; </a>]</td>
 
561
<td valign="middle" align="left"> &nbsp; </td>
 
562
<td valign="middle" align="left"> &nbsp; </td>
 
563
<td valign="middle" align="left"> &nbsp; </td>
 
564
<td valign="middle" align="left"> &nbsp; </td>
 
565
<td valign="middle" align="left"> &nbsp; </td>
 
566
<td valign="middle" align="left">[<a href="maxima.html#SEC_Top" title="Cover (top) of document">Top</a>]</td>
 
567
<td valign="middle" align="left">[<a href="maxima_toc.html#SEC_Contents" title="Table of contents">Contents</a>]</td>
 
568
<td valign="middle" align="left">[<a href="maxima_78.html#SEC302" title="Index">Index</a>]</td>
511
569
<td valign="middle" align="left">[<a href="maxima_abt.html#SEC_About" title="About (help)"> ? </a>]</td>
512
570
</tr></table>
513
571
<p>
514
572
 <font size="-1">
515
 
  This document was generated by <em>Robert Dodier</em> on <em>agosto, 25 2007</em> using <a href="http://texi2html.cvshome.org/"><em>texi2html 1.76</em></a>.
 
573
  This document was generated by <em>Robert Dodier</em> on <em>diciembre, 14 2008</em> using <a href="http://texi2html.cvshome.org/"><em>texi2html 1.76</em></a>.
516
574
 </font>
517
575
 <br>
518
576