Use 1//2 instead of ((rat simp) 1 2)
[maxima.git] / doc / info / pt_BR / interpol.texi
blobfc699ba34472b93785ab4bf5c1a7655b52f8bb56
1 @c Language: Brazilian Portuguese, Encoding: iso-8859-1
2 @c /interpol.texi/1.3/Sat Jun  2 00:13:22 2007//
3 @menu
4 * Introdução a interpol::
5 * Funções e Variáveis Definidas para interpol::
6 @end menu
8 @node Introdução a interpol, Funções e Variáveis Definidas para interpol, interpol, interpol
9 @section Introdução a interpol
11 Pacote @code{interpol} define os métodos Lagrangiano, linear e o de
12 splines cúbicos para interpolação polinomial.
16 Comentários, correções e sugestões, por favor contacte-me em @var{'mario AT edu DOT xunta DOT es'}.
20 @node Funções e Variáveis Definidas para interpol,  , Introdução a interpol, interpol
21 @section Funções e Variáveis Definidas para interpol
24 @deffn {Função} lagrange (@var{pontos})
25 @deffnx {Função} lagrange (@var{pontos}, @var{opção})
26 Calcula a interpolação polinomial através do método Lagrangiano. O argumento @var{pontos} deve ser um dos seguintes:
28 @itemize @bullet
29 @item
30 uma matriz de duas colunas, @code{p:matrix([2,4],[5,6],[9,3])},
31 @item
32 uma lista de pares, @code{p: [[2,4],[5,6],[9,3]]},
33 @item
34 uma lista de números, @code{p: [4,6,3]}, e nesse caso as abcissas irão ser atribuídas automaticamente aos valores 1, 2, 3, etc.
35 @end itemize
37 Nos dois primeiros casos os pares são ordenados em relação à primeira coordenada antes de fazer os cálculos.
39 Com o argumento @var{opção} é possível escolher o nome da variável independente, o qual é @code{'x} por padrão; para definir qualquer outra, z por exemplo, escreva @code{varname='z}. 
41 Exemplos:
43 @example
44 (%i1) load("interpol")$
45 (%i2) p:[[7,2],[8,2],[1,5],[3,2],[6,7]]$
46 (%i3) lagrange(p);
47                  4        3         2
48              73 x    701 x    8957 x    5288 x   186
49 (%o3)        ----- - ------ + ------- - ------ + ---
50               420     210       420      105      5
51 (%i4) f(x):=''%;
52                      4        3         2
53                  73 x    701 x    8957 x    5288 x   186
54 (%o4)    f(x) := ----- - ------ + ------- - ------ + ---
55                   420     210       420      105      5
56 (%i5) /* Evaluate the polynomial at some points */
57       map(f,[2.3,5/7,%pi]);
58                              919062
59 (%o5)  [- 1.567534999999992, ------,
60                              84035
61                          4          3           2
62                    73 %pi    701 %pi    8957 %pi    5288 %pi   186
63                    ------- - -------- + --------- - -------- + ---]
64                      420       210         420        105       5
65 (%i6) %,numer;
66 (%o6) [- 1.567534999999992, 10.9366573451538, 2.89319655125692]
67 (%i7) /* Plot the polynomial together with points */
68       plot2d([f(x),[discrete,p]],[x,0,10],
69            [gnuplot_curve_styles,
70                  ["with lines","with points pointsize 3"]])$
71 (%i8) /* Change variable name */
72       lagrange(p, varname=w);
73                  4        3         2
74              73 w    701 w    8957 w    5288 w   186
75 (%o8)        ----- - ------ + ------- - ------ + ---
76               420     210       420      105      5
77 @end example
79 @end deffn
82 @deffn {Função} charfun2 (@var{x}, @var{a}, @var{b})
83 Retorna @code{true}, i. e., verdadeiro se o número @var{x} pertence ao intervalo @math{[a, b)}, e @code{false}, i. e., falsono caso contrário.
84 @end deffn
87 @deffn {Função} linearinterpol (@var{pontos})
88 @deffnx {Função} linearinterpol (@var{pontos}, @var{opção})
89 Calcula a interpolação polinomial através do método linear. O argumento @var{pontos} deve ser um dos seguintes:
91 @itemize @bullet
92 @item
93 uma matriz de duas colunas, @code{p:matrix([2,4],[5,6],[9,3])},
94 @item
95 uma lista de pares, @code{p: [[2,4],[5,6],[9,3]]},
96 @item
97 uma lista de números, @code{p: [4,6,3]}, e nesse caso as abcissas irão ser atribuídas automaticamente aos valores 1, 2, 3, etc.
98 @end itemize
100 Nos dois primeiros casos os pares são ordenados em relação à primeira coordenada antes de fazer os cálculos.
102 Com o argumento @var{opção} é possível escolher o nome da variável independente, o qual é @code{'x} por padrão; para definir qualquer outra, z por exemplo, escreva @code{varname='z}. 
104 Examples:
105 @example
106 (%i1) load("interpol")$
107 (%i2) p: matrix([7,2],[8,3],[1,5],[3,2],[6,7])$
108 (%i3) linearinterpol(p);
109         13   3 x
110 (%o3)  (-- - ---) charfun2(x, minf, 3)
111         2     2
112  + (x - 5) charfun2(x, 7, inf) + (37 - 5 x) charfun2(x, 6, 7)
113     5 x
114  + (--- - 3) charfun2(x, 3, 6)
115      3
117 (%i4) f(x):=''%;
118                 13   3 x
119 (%o4)  f(x) := (-- - ---) charfun2(x, minf, 3)
120                 2     2
121  + (x - 5) charfun2(x, 7, inf) + (37 - 5 x) charfun2(x, 6, 7)
122     5 x
123  + (--- - 3) charfun2(x, 3, 6)
124      3
125 (%i5)  /* Evaluate the polynomial at some points */
126        map(f,[7.3,25/7,%pi]);
127                             62  5 %pi
128 (%o5)                 [2.3, --, ----- - 3]
129                             21    3
130 (%i6) %,numer;
131 (%o6)  [2.3, 2.952380952380953, 2.235987755982989]
132 (%i7)  /* Plot the polynomial together with points */
133        plot2d(['(f(x)),[discrete,args(p)]],[x,-5,20],
134            [gnuplot_curve_styles,
135                  ["with lines","with points pointsize 3"]])$
136 (%i8)  /* Change variable name */
137        linearinterpol(p, varname='s);
138        13   3 s
139 (%o8) (-- - ---) charfun2(s, minf, 3)
140        2     2
141  + (s - 5) charfun2(s, 7, inf) + (37 - 5 s) charfun2(s, 6, 7)
142     5 s
143  + (--- - 3) charfun2(s, 3, 6)
144      3
145 @end example
147 @end deffn
151 @deffn {Função} cspline (@var{pontos})
152 @deffnx {Função} cspline (@var{pontos}, @var{opção1}, @var{opção2}, ...)
153 Calcula a interpolação polnomial pelo método de splines ( polinômios de ordem k que interpolam os dados e têm k-1 derivadas contínuas em todo o intervalo ) cúbicos. O argumento @var{pontos} deve ser um dos seguintes:
155 @itemize @bullet
156 @item
157 uma matriz de duas colunas, @code{p:matrix([2,4],[5,6],[9,3])},
158 @item
159 uma lista de pares, @code{p: [[2,4],[5,6],[9,3]]},
160 @item
161 uma lista de números, @code{p: [4,6,3]}, e nesse caso as abcissas irão ser atribuídas automaticamente aos valores 1, 2, 3, etc.
162 @end itemize
164 Nos dois primeiros casos os pares são ordenados em relação à primeira coordenada antes de fazer os cálculos.
166 Existem três opções para ajustar necessidades específicas:
167 @itemize @bullet
168 @item
169 @code{'d1}, o padrão é @code{'unknown}, é a primeira derivada em @math{x_1}; se essa primeira derivada for desconhecida, @code{'unknown}, a segunda derivada em @math{x_1} é igualada a 0 (o spline cúbico natural); se essa primeira derivada for igual a um número, a segunda derivada é calculada baseando-se nesse número.
171 @item
172 @code{'dn}, o padrão é @code{'unknown}, é a primeira derivada em @math{x_n}; se essa primeira derivada for desconhecida, @code{'unknown}, a segunda derivada em @math{x_n} é igualada a 0 (o spline cúbico natural); se essa primeira derivada for igual a um número, a segunda derivada é calculada baseando-se nesse número.
174 @item
175 @code{'nome_var}, o padrão é @code{'x}, é o nome da variável independente.
176 @end itemize
178 Exemplos:
179 @example
180 (%i1) load("interpol")$
181 (%i2) p:[[7,2],[8,2],[1,5],[3,2],[6,7]]$
182 (%i3) /* Unknown first derivatives at the extremes
183          is equivalent to natural cubic splines */
184       cspline(p);
185               3         2
186         1159 x    1159 x    6091 x   8283
187 (%o3)  (------- - ------- - ------ + ----) charfun2(x, minf, 3)
188          3288      1096      3288    1096
189             3         2
190       2587 x    5174 x    494117 x   108928
191  + (- ------- + ------- - -------- + ------) charfun2(x, 7, inf)
192        1644       137       1644      137
193           3          2
194     4715 x    15209 x    579277 x   199575
195  + (------- - -------- + -------- - ------) charfun2(x, 6, 7)
196      1644       274        1644      274
197             3         2
198       3287 x    2223 x    48275 x   9609
199  + (- ------- + ------- - ------- + ----) charfun2(x, 3, 6)
200        4932       274      1644     274
202 (%i4) f(x):=''%$
203 (%i5) /* Some evaluations */
204       map(f,[2.3,5/7,%pi]), numer;
205 (%o5) [1.991460766423356, 5.823200187269903, 2.227405312429507]
206 (%i6) /* Plotting interpolating function */
207       plot2d(['(f(x)),[discrete,p]],[x,0,10],
208           [gnuplot_curve_styles,
209                ["with lines","with points pointsize 3"]])$
210 (%i7) /* New call, but giving values at the derivatives */
211       cspline(p,d1=0,dn=0);
212               3          2
213         1949 x    11437 x    17027 x   1247
214 (%o7)  (------- - -------- + ------- + ----) charfun2(x, minf, 3)
215          2256       2256      2256     752
216             3          2
217       1547 x    35581 x    68068 x   173546
218  + (- ------- + -------- - ------- + ------) charfun2(x, 7, inf)
219         564       564        141      141
220          3          2
221     607 x    35147 x    55706 x   38420
222  + (------ - -------- + ------- - -----) charfun2(x, 6, 7)
223      188       564        141      47
224             3         2
225       3895 x    1807 x    5146 x   2148
226  + (- ------- + ------- - ------ + ----) charfun2(x, 3, 6)
227        5076       188      141      47
228 (%i8) /* Defining new interpolating function */
229       g(x):=''%$
230 (%i9) /* Plotting both functions together */
231       plot2d(['(f(x)),'(g(x)),[discrete,p]],[x,0,10],
232            [gnuplot_curve_styles,
233               ["with lines","with lines","with points pointsize 3"]])$
234 @end example
236 @end deffn