Print a warning when translating subscripted functions
[maxima.git] / doc / info / ru / interpol.texi
blob220d6eee36e7d3c90407a76a74d4608f99498c93
1 @c Language=Russian
2 @c Encoding=UTF-8
3 @c File=interpol.texi 
4 @c OriginalRevision=1.8
5 @c TranslatedBy: (c) 2008-03 Vadim V. Zhytnikov <vvzhyt@gmail.com>
8 @menu
9 * Введение в пакет interpol::
10 * Функции и переменные пакета interpol::
11 @end menu
13 @node Введение в пакет interpol, Функции и переменные пакета interpol, Пакет interpol, Пакет interpol
14 @section Введение в пакет interpol
16 Пакет @code{interpol} определяет методы Лагранжа, линейный и и метод кубических сплайнов для
17 полиномиальной интерполяции.
19 С комментариями, сообщениями об ошибках и предложениями, пожалуйста
20 обращайтесь ко мне по адресу @var{'mario AT edu DOT xunta DOT es'}.
22 @opencatbox{Категории:}
23 @category{Численные методы}
24 @category{Пакеты библиотеки share}
25 @category{Пакет interpol}
26 @closecatbox
28 @node Функции и переменные пакета interpol,  , Введение в пакет interpol, Пакет interpol
29 @section Функции и переменные пакета interpol
32 @deffn {Функция} lagrange (@var{points})
33 @deffnx {Функция} lagrange (@var{points}, @var{option})
34 Вычисляет полиномиальную интерполяцию методом Лагранжа. Аргумент @var{points} должен быть либо:
36 @itemize @bullet
37 @item
38 матрицей из двух колонок, @code{p:matrix([2,4],[5,6],[9,3])},
39 @item
40 списком пар, @code{p: [[2,4],[5,6],[9,3]]},
41 @item
42 списком чисел @code{p: [4,6,3]}, в этом случае абсцисса будет назначена автоматически равной 1, 2, 3 и т.д.
43 @end itemize
45 В первых двух случаях, перед проведением вычислений, пары упорядочиваются в соответствии 
46 со значением первой координаты.
48 Аргумент @var{option} позволяет выбрать имя независимой переменной, по умолчанию равной @code{'x}.
49 Чтобы задать другую переменную напишите @code{varname='z}. 
51 Отметим, что при работе с многочленами высокого порядка, вычисления с плавающей точкой 
52 нестабильны.
54 Примеры:
56 @example
57 (%i1) load("interpol")$
58 (%i2) p:[[7,2],[8,2],[1,5],[3,2],[6,7]]$
59 (%i3) lagrange(p);
60                  4        3         2
61              73 x    701 x    8957 x    5288 x   186
62 (%o3)        ----- - ------ + ------- - ------ + ---
63               420     210       420      105      5
64 (%i4) f(x):=''%;
65                      4        3         2
66                  73 x    701 x    8957 x    5288 x   186
67 (%o4)    f(x) := ----- - ------ + ------- - ------ + ---
68                   420     210       420      105      5
69 (%i5) /* Evaluate the polynomial at some points */
70       map(f,[2.3,5/7,%pi]);
71                              919062
72 (%o5)  [- 1.567534999999992, ------,
73                              84035
74                          4          3           2
75                    73 %pi    701 %pi    8957 %pi    5288 %pi   186
76                    ------- - -------- + --------- - -------- + ---]
77                      420       210         420        105       5
78 (%i6) %,numer;
79 (%o6) [- 1.567534999999992, 10.9366573451538, 2.89319655125692]
80 (%i7) load("draw")$  /* load draw package */
81 (%i8) /* Plot the polynomial together with points */
82       draw2d(
83         color      = red,
84         key        = "Lagrange polynomial",
85         explicit(f(x),x,0,10),
86         point_size = 3,
87         color      = blue,
88         key        = "Sample points",
89         points(p))$
90 (%i9) /* Change variable name */
91       lagrange(p, varname=w);
92                  4        3         2
93              73 w    701 w    8957 w    5288 w   186
94 (%o9)        ----- - ------ + ------- - ------ + ---
95               420     210       420      105      5
96 @end example
98 @opencatbox{Категории:}
99 @category{Пакет interpol}
100 @closecatbox
102 @end deffn
105 @deffn {Функция} charfun2 (@var{x}, @var{a}, @var{b})
106 Возвращает @code{true} если число @var{x} принадлежит интервалу @math{[a, b)}, и @code{false} в противном случае.
108 @opencatbox{Категории:}
109 @category{Пакет interpol}
110 @closecatbox
112 @end deffn
115 @deffn {Функция} linearinterpol (@var{points})
116 @deffnx {Функция} linearinterpol (@var{points}, @var{option})
117 Вычисляет полиномиальную интерполяцию линейным методом. Аргумент @var{points} должен быть либо:
119 @itemize @bullet
120 @item
121 матрицей из двух колонок, @code{p:matrix([2,4],[5,6],[9,3])},
122 @item
123 списком пар, @code{p: [[2,4],[5,6],[9,3]]},
124 @item
125 списком чисел @code{p: [4,6,3]}, в этом случае абсцисса будет назначена автоматически равной 1, 2, 3 и т.д.
126 @end itemize
128 В первых двух случаях, перед проведением вычислений, пары упорядочиваются в соответствии 
129 со значением первой координаты.
131 Аргумент @var{option} позволяет выбрать имя независимой переменной, по умолчанию равной @code{'x}.
132 Чтобы задать другую переменную напишите @code{varname='z}. 
134 Примеры:
135 @example
136 (%i1) load("interpol")$
137 (%i2) p: matrix([7,2],[8,3],[1,5],[3,2],[6,7])$
138 (%i3) linearinterpol(p);
139         13   3 x
140 (%o3)  (-- - ---) charfun2(x, minf, 3)
141         2     2
142  + (x - 5) charfun2(x, 7, inf) + (37 - 5 x) charfun2(x, 6, 7)
143     5 x
144  + (--- - 3) charfun2(x, 3, 6)
145      3
147 (%i4) f(x):=''%;
148                 13   3 x
149 (%o4)  f(x) := (-- - ---) charfun2(x, minf, 3)
150                 2     2
151  + (x - 5) charfun2(x, 7, inf) + (37 - 5 x) charfun2(x, 6, 7)
152     5 x
153  + (--- - 3) charfun2(x, 3, 6)
154      3
155 (%i5)  /* Evaluate the polynomial at some points */
156        map(f,[7.3,25/7,%pi]);
157                             62  5 %pi
158 (%o5)                 [2.3, --, ----- - 3]
159                             21    3
160 (%i6) %,numer;
161 (%o6)  [2.3, 2.952380952380953, 2.235987755982989]
162 (%i7) load("draw")$  /* load draw package */
163 (%i8)  /* Plot the polynomial together with points */
164        draw2d(
165          color      = red,
166          key        = "Linear interpolator",
167          explicit(f(x),x,-5,20),
168          point_size = 3,
169          color      = blue,
170          key        = "Sample points",
171          points(args(p)))$
172 (%i9)  /* Change variable name */
173        linearinterpol(p, varname='s);
174        13   3 s
175 (%o9) (-- - ---) charfun2(s, minf, 3)
176        2     2
177  + (s - 5) charfun2(s, 7, inf) + (37 - 5 s) charfun2(s, 6, 7)
178     5 s
179  + (--- - 3) charfun2(s, 3, 6)
180      3
181 @end example
183 @opencatbox{Категории:}
184 @category{Пакет interpol}
185 @closecatbox
187 @end deffn
191 @deffn {Функция} cspline (@var{points})
192 @deffnx {Функция} cspline (@var{points}, @var{option1}, @var{option2}, ...)
193 Вычисляет полиномиальную интерполяцию методом кубических сплайнов. Аргумент @var{points} должен быть либо:
195 @itemize @bullet
196 @item
197 матрицей из двух колонок, @code{p:matrix([2,4],[5,6],[9,3])},
198 @item
199 списком пар, @code{p: [[2,4],[5,6],[9,3]]},
200 @item
201 списком чисел @code{p: [4,6,3]}, в этом случае абсцисса будет назначена автоматически равной 1, 2, 3 и т.д.
202 @end itemize
204 В первых двух случаях, перед проведением вычислений, пары упорядочиваются в соответствии 
205 со значением первой координаты.
207 Существует три специальные опции:
208 @itemize @bullet
209 @item
210 @code{'d1}, по умолчанию @code{'unknown}, -- первая производная в точке @math{x_1}. Если @code{'unknown}, 
211 то вторая производная в точке @math{x_1} предполагается равной 0 (натуральный кубический сплайн). 
212 Если задана, то вторая производная вычисляется исходя из этого числа.
214 @item
215 @code{'dn}, по умолчанию @code{'unknown}, -- первая производная в точке @math{x_n}. Если @code{'unknown}, 
216 то вторая производная в точке @math{x_n} предполагается равной 0 (натуральный кубический сплайн). 
217 Если задана, то вторая производная вычисляется исходя из этого числа.
219 @item
220 @code{'varname}, по умолчанию @code{'x}, -- имя независимой переменной.
221 @end itemize
223 Примеры:
224 @example
225 (%i1) load("interpol")$
226 (%i2) p:[[7,2],[8,2],[1,5],[3,2],[6,7]]$
227 (%i3) /* Unknown first derivatives at the extremes
228          is equivalent to natural cubic splines */
229       cspline(p);
230               3         2
231         1159 x    1159 x    6091 x   8283
232 (%o3)  (------- - ------- - ------ + ----) charfun2(x, minf, 3)
233          3288      1096      3288    1096
234             3         2
235       2587 x    5174 x    494117 x   108928
236  + (- ------- + ------- - -------- + ------) charfun2(x, 7, inf)
237        1644       137       1644      137
238           3          2
239     4715 x    15209 x    579277 x   199575
240  + (------- - -------- + -------- - ------) charfun2(x, 6, 7)
241      1644       274        1644      274
242             3         2
243       3287 x    2223 x    48275 x   9609
244  + (- ------- + ------- - ------- + ----) charfun2(x, 3, 6)
245        4932       274      1644     274
247 (%i4) f(x):=''%$
248 (%i5) /* Some evaluations */
249       map(f,[2.3,5/7,%pi]), numer;
250 (%o5) [1.991460766423356, 5.823200187269903, 2.227405312429507]
251 (%i6) load("draw")$  /* load draw package */
252 (%i7) /* Plotting interpolating function */
253       draw2d(
254         color      = red,
255         key        = "Cubic splines",
256         explicit(f(x),x,0,10),
257         point_size = 3,
258         color      = blue,
259         key        = "Sample points",
260         points(p))$
261 (%i8) /* New call, but giving values at the derivatives */
262       cspline(p,d1=0,dn=0);
263               3          2
264         1949 x    11437 x    17027 x   1247
265 (%o8)  (------- - -------- + ------- + ----) charfun2(x, minf, 3)
266          2256       2256      2256     752
267             3          2
268       1547 x    35581 x    68068 x   173546
269  + (- ------- + -------- - ------- + ------) charfun2(x, 7, inf)
270         564       564        141      141
271          3          2
272     607 x    35147 x    55706 x   38420
273  + (------ - -------- + ------- - -----) charfun2(x, 6, 7)
274      188       564        141      47
275             3         2
276       3895 x    1807 x    5146 x   2148
277  + (- ------- + ------- - ------ + ----) charfun2(x, 3, 6)
278        5076       188      141      47
279 (%i8) /* Defining new interpolating function */
280       g(x):=''%$
281 (%i9) /* Plotting both functions together */
282       draw2d(
283         color      = black,
284         key        = "Cubic splines (default)",
285         explicit(f(x),x,0,10),
286         color      = red,
287         key        = "Cubic splines (d1=0,dn=0)",
288         explicit(g(x),x,0,10),
289         point_size = 3,
290         color      = blue,
291         key        = "Sample points",
292         points(p))$
293 @end example
295 @opencatbox{Категории:}
296 @category{Пакет interpol}
297 @closecatbox
299 @end deffn