Переменные
*apr-args-1*
'(x1 yy)
*apr-args-2*
'(x1 x2 yy)
*apr-func-1-2*
'((x1)(1.0)(yy))
yy(x1)=a·x1+b
*apr-func-1-3*
'((x1 x1)(x1)(1.0)(yy))
yy(x1)=a·x12+b·x1+c
*apr-func-1-4*
'((x1 x1 x1)(x1 x1)(x1)(1.0)(yy))
yy(x1)=a·x13+b·x12+c·x1+d
*apr-func-1-5*
'((x1 x1 x1 x1)(x1 x1 x1)(x1 x1)(x1)(1.0)(yy))
yy(x1)=a·x14+b·x13+c·x12+d·x1+e
*apr-func-2-4*
'((x1 x2)(x1)(x2)(1.0)(yy))
yy(x1)=a1·x1·x2+a2·x1+a3·x2+a4
*apr-func-2-5*
'((x1 x1)(x2 x2)(x1)(x2)(1.0)(yy))
yy(x1)=a1·x12+a2·x22+a3·x1+a4·x2+a5
*apr-func-2-6*
'((x1 x1)(x2 x2)(x1 x2)(x1)(x2)(1.0)(yy))
yy(x1)=a1·x12+a2·x22+a3·x1·x2+a5·x1+a6·x2+a7
*apr-func-2-7*
'((x1 x1 x2)(x1 x2 x2)(x1 x1)(x2 x2)(x1)(x2)(1.0)(yy))
yy(x1)=a1·x12·x2+a2·x1·x22+a3·x12+a4·x22+a5·x1+a6·x2+a7
*apr-func-2-8*
'((x1 x1 x2)(x1 x2 x2)(x1 x1)(x2 x2)(x1 x2)(x1)(x2)(1.0)(yy))
yy(x1)=a1·x12·x2+a2·x1·x22+a3·x12+a4·x22+a5·x1·x2+a6·x1+a7·x2+a8
*apr-func-2-9*
'((x1 x1 x2 x2)(x1 x1 x2)(x1 x2 x2)(x1 x1)(x2 x2)(x1 x2)(x1)(x2)(1.0)(yy))
yy(x1)=a1·x12·x22+ a2·x12·x2+ a3·x1·x22+ a4·x12+ a5·x22+ a6·x1·x2+ a7·x1+ a8·x2+ a9
Макросы
make-approximation-defun
(args-fuc-names func-view args-results func-name)
Описание: макрос make-approximation-defun определяет аппроксимиующую функцию с именем func-name, построенной на основании списка, каждый элемент которого является списком, содержащим значения аргументов функции и значение функции, соответствующее этим аргументам.
Пример использования:
(make-approximation-defun (xx yy)
((xx xx)(xx)(1.0)(yy))
((0.0 0.0)(1.0 1.0)(2.0 4.0)(3.0 9.0))
square-func)
(square-func 1.0) => 1.0d0
(square-func 3.0) => 9.0d0
(square-func 5.0) => 25.0d0
make-approximation-lambda
(args-fuc-names func-view args-results)
Описание: макрос make-approximation-lambda определяет аппроксимиующую lambda-функцию, построенную на основании списка, каждый элемент которого является списком, содержащим значения аргументов функции и значение функции, соответствующее этим аргументам.
Пример использования:
(let ((func
(make-approximation-lambda (xx yy)
((xx xx)(xx)(1.0)(yy))
((0.0 0.0)(1.0 1.0)(2.0 4.0)(3.0 9.0)))))
(funcall func 1.0) ;=> 1.0d0
(funcall func 3.0) ;=> 9.0d0
(funcall func 5.0)) ;=> 25.0d0
Функции
appr-table
(x table)
Описание: функция appr-table возвращает результат линейной интерполяции (или экстраполяции) для значения x на таблице table.
Пример использования:
(appr-table 0.5 '((0.0 0.0)(1.0 1.0)(2.0 4.0)(4.0 0.0))) => 0.5
(appr-table 1.5 '((0.0 0.0)(1.0 1.0)(2.0 4.0)(4.0 0.0))) => 2.5
(appr-table 3.0 '((0.0 0.0)(1.0 1.0)(2.0 4.0)(4.0 0.0))) => 2.0
Тест: (test-approximation-appr-table)
averaging-function-defun
(args-fuc-names func-view args-results func-name)
Описание: функция averaging-function-defun возвращает исходный код именований аппроксимиующей функции, построенной на основании списка, каждый элемент которого является списком, содержащим значения аргументов функции и значение функции, соответствующее этим аргументам.
Переменые:
- args-fuc-names - список, содержащий имена аргументов и функции ;
- func-view - вид функциональной зависимости. Функциональная зависимость должна использовать имена из args-fuc-names ;
- args-results - списка, каждый элемент которого является списком, содержащим значения аргументов функции и значение функции (соответствующее этим аргументам).
- func-name - имя функции.
Пример использования:
(averaging-function-defun '(xx yy)
'((xx xx)(xx)(1.0)(yy))
'((0.0 0.0)(1.0 1.0)(2.0 4.0)(3.0 9.0))
'square-func)
=> (DEFUN SQUARE-FUNC (XX)(+ (* 1.0d0 XX XX)(* 0.0d0 XX)(* 0.0d0 1.0)))
(averaging-function-defun '(xx yy)
'((xx xx xx)(xx xx)(xx)(1.0)(yy))
'((-2.0 -8.0)(-1.0 -1.0)(0.0 0.0)(1.0 1.0)(2.0 8.0))
'cubic-func)
=> (DEFUN CUBIC-FUNC (XX)(+ (* 1.0d0 XX XX XX)(* 0.0d0 XX XX)(* 0.0d0 XX)(* 0.0d0 1.0)))
averaging-function-lambda
(args-fuc-names func-view args-results)
Описание: функция averaging-function-lambda возвращает исходный код аппроксимиующей lambda-функции, построенной на основании списка, каждый элемент которого является списком, содержащим значения аргументов функции и значение функции, соответствующее этим аргументам.
Переменые:
- args-fuc-names - список, содержащий имена аргументов и функции ;
- func-view - вид функциональной зависимости. Функциональная зависимость должна использовать имена из args-fuc-names ;
- args-results - списка, каждый элемент которого является списком, содержащим значения аргументов функции и значение функции (соответствующее этим аргументам).
Пример использования:
(averaging-function-lambda '(xx yy)
'((xx xx)(xx)(1.0)(yy))
'((0.0 0.0)(1.0 1.0)(2.0 4.0)(3.0 9.0)))
=> (LAMBDA (XX)(+ (* 1.0d0 XX XX)(* 0.0d0 XX)(* 0.0d0 1.0)))
(averaging-function-lambda '(xx yy)
'((xx xx xx)(xx xx)(xx)(1.0)(yy))
'((-2.0 -8.0)(-1.0 -1.0)(0.0 0.0)(1.0 1.0)(2.0 8.0)))
=> (LAMBDA (XX)(+ (* 1.0d0 XX XX XX)(* 0.0d0 XX XX)(* 0.0d0 XX)(* 0.0d0 1.0)))
make-appr-linear
(args-resuls)
Описание: функция make-appr-linear возвращает функцию, являющуюся линейной интерполяцией функции одного переменного.
Пример использования:
(let ((f1 (math/appr:make-appr-linear
(loop :for i :from 0 :to 10
:collect (list (* 1.0d0 i)(* 0.1d0 i i))))))
(loop :for i :from 0 :to 10 :by 1/5
:collect
(list (* 1.0 i)(coerce (funcall f1 (* 1d0 i))'single-float ))))
=> '((0.0 0.0)(0.2 0.02)(0.4 0.04)(0.6 0.06)(0.8 0.08)
(1.0 0.1)(1.2 0.16)(1.4 0.22)(1.6 0.28)(1.8 0.34)
(2.0 0.4)(2.2 0.50)(2.4 0.60)(2.6 0.70)(2.8 0.80)
(3.0 0.9)(3.2 1.04)(3.4 1.18)(3.6 1.32)(3.8 1.46)
(4.0 1.6)(4.2 1.78)(4.4 1.96)(4.6 2.14)(4.8 2.32)
(5.0 2.5)(5.2 2.72)(5.4 2.94)(5.6 3.16)(5.8 3.38)
(6.0 3.6)(6.2 3.86)(6.4 4.12)(6.6 4.38)(6.8 4.64)
(7.0 4.9)(7.2 5.20)(7.4 5.50)(7.6 5.80)(7.8 6.10)
(8.0 6.4)(8.2 6.74)(8.4 7.08)(8.6 7.42)(8.8 7.76)
(9.0 8.1)(9.2 8.48)(9.4 8.86)(9.6 9.24)(9.8 9.62)
(10.0 10.0))
make-least-squares-matrix
(vv ff ex_pts)
Описание: функция make-least-squares-matrix возвращает матрицу для расчета коэффициентов полиномиальной зависимости вида ff со списком имен факторов влияния и имени функции отклика vv, которая приближается к экспериментальным точкам ex_pts, методом наименьших квадратов.
Переменые:
- vv - список, состоящий из имен факторов влияния и имени функции отклика;
- ff - задает вид функциональной зависимости;
- ex_pts - задает значения факторов влияния и значение функции отклика;
Пример использования:
;;;; Для аппроксимации экспериментальных точек полиномом второй степени функции одной переменной.
;;;; Здесь коэффициенты a1, a2, a3 можно найти решив САУ, получаемую в результате.
;;;; (defun yy (xx)(+ (* a1 xx xx)(* a2 xx) a3))
(make-least-squares-matrix
'(xx yy)
'((xx xx)(xx)(1.0)(yy))
'((-1.0 1.0)(0.0 0.0)(2.0 4.0)(3.0 9.0)))
=> Matr 3х4
[ 98.0d0 34.0d0 14.0d0 98.0d0 ]
[ 34.0d0 14.0d0 4.0d0 34.0d0 ]
[ 14.0d0 4.0d0 4.0d0 14.0d0 ]
;;;; Для аппроксимации экспериментальных точек полиномом второй степени функции двух переменных.
;;;; Здесь коэффициенты a1, a2, a3 можно найти решив САУ, получаемую в результате.
(defun yy (x1 x2)(+ (* 1.0 x1 x1)(* 2.0 x2 x2)(* 3.0 x1 x2)(* 4.0 x1)(* 5.0 x2) 6.0))
(make-least-squares-matrix
'(x1 x2 yy)
'((x1 x1)(x2 x2)(x1 x2)(x1)(x2)(1.0)(yy))
(let ((pts nil))
(loop :for i :from -2 :to 2 :do
(loop :for j :from -2 to 2 :do
(push (list i j (yy i j)) pts)))
pts))
; => Matr 6х7
; [ 170.0d0 100.0d0 0.0d0 0.0d0 0.0d0 50.0d0 670.0d0 ]
; [ 100.0d0 170.0d0 0.0d0 0.0d0 0.0d0 50.0d0 740.0d0 ]
; [ 0.0d0 0.0d0 100.0d0 0.0d0 0.0d0 0.0d0 300.0d0 ]
; [ 0.0d0 0.0d0 0.0d0 50.0d0 0.0d0 0.0d0 200.0d0 ]
; [ 0.0d0 0.0d0 0.0d0 0.0d0 50.0d0 0.0d0 250.0d0 ]
; [ 50.0d0 50.0d0 0.0d0 0.0d0 0.0d0 25.0d0 300.0d0 ]
(solve-linear-system-gauss *)
; => Matr 1х6
; [ 1.0d0 2.0d0 3.0d0 4.0d0 5.0d0 6.0d0 ]
См. также solve-linear-system-gauss; solve-linear-system-rotation
make-linear-interpolation
(points &key (ff *apr-func-1-2*))
Описание: функция make-linear-interpolation возвращает функциональной зависимость, аппроксимируемую по функции одного переменного, заданной таблично.
Переменые:
- points - список, состоящий из аргумента и значения ;
- ff - вид функциональной зависимости см. *apr-func-1-2* --- *apr-func-1-5*.
Пример использования:
(let* ((points-01 '((0.0 0.0)(1.0 1.0)(2.0 2.0)))
(func-1 (make-linear-interpolation points-01)))
(loop :for x :from 0 :to 2 :by 1/10
:collect (mapcar #'(lambda (el)(coerce el 'single-float))
(list x
(funcall func-1 x)))))
=> ((0.0 0.0)(0.1 0.1)(0.2 0.2)(0.3 0.3)(0.4 0.4)(0.5 0.5)(0.6 0.6)
(0.7 0.7)(0.8 0.8)(0.9 0.9)(1.0 1.0)(1.1 1.1)(1.2 1.2)(1.3 1.3)
(1.4 1.4)(1.5 1.5)(1.6 1.6)(1.7 1.7)(1.8 1.8)(1.9 1.9)(2.0 2.0))
(let* ((points-02 '((0.0 0.0)(1.0 1.0)(2.0 4.0)(3.0 9.0)))
(func-2 (make-linear-interpolation points-02 :ff *apr-func-1-3*)))
(loop :for x :from 1 :to 3 :by 1/10
:collect (mapcar #'(lambda (el)(coerce el 'single-float))
(list x
(funcall func-2 x)))))
=> ((1.0 1.0)(1.1 1.21)(1.2 1.44)(1.3 1.69)(1.4 1.96)(1.5 2.25)(1.6 2.56)
(1.7 2.89)(1.8 3.24)(1.9 3.61)(2.0 4.0)(2.1 4.41)(2.2 4.84)(2.3 5.29)
(2.4 5.76)(2.5 6.25)(2.6 6.76)(2.7 7.29)(2.8 7.84)(2.9 8.41)(3.0 9.0))
Обобщенные функции
refine-smoothing-by-points
(nod-points nod-values base-dist-s &key weight-func delta iterations)
Описание: обобщенная функция refine-smoothing-by-points возвращает массив значений rez-valuesi такой, что для точек nod-pointsi сумма отклонений между nod-valuesi и (smooth-by-points point-si base-dist-s nod-points rez-valuesi :weight-func weight-func) не превысит delta.
Вторым значением возвращается:
- T - если такой массив удалось найти за указанной в параметре iterations количестве итераций;
- nil - если за указанной количество итераций iterations такой массив удалось найти не удалось.
smooth-by-points
(point-s base-dist-s nod-points nod-values &key weight-func)
- таблицей узловых точек nod-points;
- таблицей значений nod-values;
- функцией weight-func учета веса значений от относительного расстояния до аргумента (при которых эти значения определены);
- базовой длины (базовых длинн)base-dist-s, по которой (которым) вычисляются относительные расстояния.
Методы
approximate
((point number) (a-l <appr-linear>))
make-refine-smooting
((nod-points vector) (nod-values vector) (base-dist-s number) &key (weight-func (function gauss-smoothing)) (delta 0.001) (iterations 10000))
Описание: метод make-refine-smooting в случе нахождения сглаживания для функции одного переменного.
Пример использования:
(let* ((nod-pts #(-2.0 -1.0 -0.5 0.0 0.5 1.0 2.0))
(nod-rez #( 4.0 1.0 0.25 0.0 0.25 1.0 4.0))
(base-dists-1_5 1.5 )
(base-dists-1_0 1.0 )
(base-dists-0_6 0.6 )
(base-dists-0_4 0.4 )
(func (make-refine-smooting nod-pts nod-rez base-dists-1_5)))
(loop :for i :from -2 :to 2 :by 1/10
:collect (list (* 1.0 i)
(* 1.0 i i)
(funcall func (* 1.0 i))
(* 100 (1- (/ (* 1.0 i i)
(funcall func (* 1.0 i))))))))
=> '(( 0.0 0.00 0.00350)
( 0.1 0.01 0.01315)
( 0.2 0.04 0.04218)
( 0.3 0.09 0.09071)
( 0.4 0.16 0.15898)
( 0.5 0.25 0.24730)
( 0.6 0.36 0.35599)
( 0.7 0.49 0.48542)
( 0.8 0.64 0.63591)
( 0.9 0.81 0.80774)
( 1.0 1.00 1.00107)
( 1.1 1.21 1.21590)
( 1.2 1.44 1.45205)
( 1.3 1.69 1.70909)
( 1.4 1.96 1.98635)
( 1.5 2.25 2.28284)
( 1.6 2.56 2.59730)
( 1.7 2.89 2.92817)
( 1.8 3.24 3.27363)
( 1.9 3.61 3.63161)
( 2.0 4.00 3.99986))
make-refine-smooting
((nod-points array) (nod-values vector) (base-dist-s vector) &key (weight-func (function gauss-smoothing)) (delta 0.001) (iterations 10000))
Описание: метод make-refine-smooting в случе нахождения сглаживания для функции двух переменных.
Пример использования:
(let* ((nod-lst '((-1.0 -1.0)(1.0 -1.0)(-1.0 1.0)(1.0 1.0)))
(nod-rez #(-10.0 0.0 0.0 10.0))
(nod-pts (make-array '(4 2) :initial-contents nod-lst))
(base-dists-1_5 #(1.5 1.5))
(base-dists-1_0 #(1.0 1.0))
(base-dists-0_6 #(0.6 0.6))
(base-dists-0_4 #(0.4 0.4))
(func (make-refine-smooting nod-pts nod-rez base-dists-1_5)))
(funcall func 0.0 0.5))
refine-smoothing-by-points
((nod-points vector) (nod-values vector) (base-dist-s number) &key (weight-func (function gauss-smoothing)) (delta 0.001) (iterations 10000))
refine-smoothing-by-points
((nod-points array) (nod-values vector) (base-dist-s vector) &key (weight-func (function gauss-smoothing)) (delta 0.001) (iterations 10000))
Описание: метод refine-smoothing-by-points в случе нахождения сглаживания для функции двух переменных.
Пример использования:
(let* ((nod-lst '((-1.0 0.0)(1.0 0.0)(-1.0 1.0)(1.0 1.0)))
(nod-rez #(-10.0 0.0 0.0 10.0))
(nod-pts (make-array '(4 2) :initial-contents nod-lst))
(base-dists-1_5 #(1.5 1.5))
(base-dists-1_0 #(1.0 1.0))
(base-dists-0_6 #(0.6 0.6))
(base-dists-0_4 #(0.4 0.4)))
(refine-smoothing-by-points nod-pts nod-rez base-dists-0_4)
(refine-smoothing-by-points nod-pts nod-rez base-dists-0_6)
(refine-smoothing-by-points nod-pts nod-rez base-dists-1_0)
(refine-smoothing-by-points nod-pts nod-rez base-dists-1_5)
)
=> #(-10.019267 -0.019267347 0.019267347 10.019267), T, 1, 2.9726332e-4, #(-9.999926 7.424513e-5 -7.424499e-5 9.999926), #(-10.0 0.0 0.0 10.0), #(0.4 0.4)
=> #(-10.663013 -0.66271365 0.6627135 10.663013), T, 4, 4.3922185e-4, #(-9.99989 1.0987265e-4 -1.1000411e-4 9.99989), #(-10.0 0.0 0.0 10.0), #(0.6 0.6)
=> #(-16.005812 -5.632663 5.6326632 16.00581), T, 15, 9.807203e-4, #(-9.999755 2.451054e-4 -2.4542634e-4 9.999755), #(-10.0 0.0 0.0 10.0), #(1.0 1.0)
=> #(-29.902119 -15.834344 15.834344 29.902119), T, 40, 8.0980576e-4, #(-9.999799 2.0380187e-4 -2.0355334e-4 9.999799), #(-10.0 0.0 0.0 10.0), #(1.5 1.5)
smooth-by-points
((x number) (dx number) (points vector) (values vector) &key (weight-func (function gauss-smoothing)))
Описание: метод smooth-by-points возвращает значение, являющееся результатом сглаживания зависимости заданной:
- аргументами points;
- значениями в этих точках values;
- функцией weight-func учета веса значений от относительного расстояния до аргумента (при которых эти значения определены);
- базовой длины, по которой вычисляются относительные расстояния.
Этот вариант метода примерняется для сглаживания функции одного аргумента.
Пример использования:
(let ((args #(-2.0 -1.0 0.0 1.0 2.0))
(vals #( 4.0 1.0 0.0 1.0 4.0))
(dx-2_0 2.0)
(dx-1_0 1.0)
(dx-0_6 0.6))
(loop :for i :from 0 :to 2 :by 1/5
:collect (list (* i 1.0)
(* i i 1.0)
(smooth-by-points i dx-0_6 args vals)
(smooth-by-points i dx-1_0 args vals)
(smooth-by-points i dx-2_0 args vals))))
=> '((0.0 0.0 0.11070304 0.4977933 1.3665789)
(0.2 0.04 0.1735467 0.5375060 1.3774427)
(0.4 0.16 0.3702085 0.6551497 1.4096088)
(0.6 0.36 0.6500492 0.8464661 1.4618422)
(0.8 0.64 0.8946066 1.1046556 1.5322074)
(1.0 1.00 1.1105981 1.4196386 1.6182360)
(1.2 1.44 1.4516152 1.7761649 1.7171193)
(1.4 1.96 2.0848030 2.1525292 1.8259060)
(1.6 2.56 2.9039226 2.5225418 1.9416808)
(1.8 3.24 3.5229838 2.8611753 2.0617056)
(2.0 4.00 3.8243356 3.1507930 2.1835241))
smooth-by-points
((x vector) (dx vector) (points array) (values vector) &key (weight-func (function gauss-smoothing)))
Описание: метод smooth-by-points возвращает значение, являющееся результатом сглаживания зависимости заданной:
- аргументами points;
- значениями в этих точках values;
- функцией weight-func учета веса значений от относительного расстояния до аргумента (при которых эти значения определены);
- базовой длины, по которой вычисляются относительные расстояния.
Этот вариант метода примерняется для сглаживания функции двух аргументов.
Пример использования:
(smooth-by-points #(0.0 0.0) #(1.0 1.0)(make-array '(4 2) :initial-contents '((0.0 0.0)(1.0 0.0)(0.0 1.0)(1.0 1.0))) #(0.0 1.0 1.0 2.0)) 0.53788286
(smooth-by-points #(0.0 0.0) #(0.6 0.6)(make-array '(4 2) :initial-contents '((0.0 0.0)(1.0 0.0)(0.0 1.0)(1.0 1.0))) #(0.0 1.0 1.0 2.0)) 0.117073804
(smooth-by-points #(0.0 0.0) #(0.4 0.4)(make-array '(4 2) :initial-contents '((0.0 0.0)(1.0 0.0)(0.0 1.0)(1.0 1.0))) #(0.0 1.0 1.0 2.0)) 0.0038534694
(smooth-by-points #(1.0 0.0) #(1.0 1.0)(make-array '(4 2) :initial-contents '((0.0 0.0)(1.0 0.0)(0.0 1.0)(1.0 1.0))) #(0.0 1.0 1.0 2.0)) 1.0
(smooth-by-points #(1.0 0.0) #(0.6 0.6)(make-array '(4 2) :initial-contents '((0.0 0.0)(1.0 0.0)(0.0 1.0)(1.0 1.0))) #(0.0 1.0 1.0 2.0)) 0.9999999
(smooth-by-points #(1.0 0.0) #(0.4 0.4)(make-array '(4 2) :initial-contents '((0.0 0.0)(1.0 0.0)(0.0 1.0)(1.0 1.0))) #(0.0 1.0 1.0 2.0)) 1.0
(smooth-by-points #(0.0 1.0) #(1.0 1.0)(make-array '(4 2) :initial-contents '((0.0 0.0)(1.0 0.0)(0.0 1.0)(1.0 1.0))) #(0.0 1.0 1.0 2.0)) 1.0
(smooth-by-points #(0.0 1.0) #(0.6 0.6)(make-array '(4 2) :initial-contents '((0.0 0.0)(1.0 0.0)(0.0 1.0)(1.0 1.0))) #(0.0 1.0 1.0 2.0)) 1.0
(smooth-by-points #(0.0 1.0) #(0.4 0.4)(make-array '(4 2) :initial-contents '((0.0 0.0)(1.0 0.0)(0.0 1.0)(1.0 1.0))) #(0.0 1.0 1.0 2.0)) 1.0
(smooth-by-points #(1.0 1.0) #(1.0 1.0)(make-array '(4 2) :initial-contents '((0.0 0.0)(1.0 0.0)(0.0 1.0)(1.0 1.0))) #(0.0 1.0 1.0 2.0)) 1.4621171
(smooth-by-points #(1.0 1.0) #(0.6 0.6)(make-array '(4 2) :initial-contents '((0.0 0.0)(1.0 0.0)(0.0 1.0)(1.0 1.0))) #(0.0 1.0 1.0 2.0)) 1.8829262
(smooth-by-points #(1.0 1.0) #(0.4 0.4)(make-array '(4 2) :initial-contents '((0.0 0.0)(1.0 0.0)(0.0 1.0)(1.0 1.0))) #(0.0 1.0 1.0 2.0)) 1.9961466
(smooth-by-points #(0.5 0.5) #(1.0 1.0)(make-array '(4 2) :initial-contents '((0.0 0.0)(1.0 0.0)(0.0 1.0)(1.0 1.0))) #(0.0 1.0 1.0 2.0)) 1.0
(smooth-by-points #(0.5 0.5) #(0.6 0.6)(make-array '(4 2) :initial-contents '((0.0 0.0)(1.0 0.0)(0.0 1.0)(1.0 1.0))) #(0.0 1.0 1.0 2.0)) 1.0
(smooth-by-points #(0.5 0.5) #(0.4 0.4)(make-array '(4 2) :initial-contents '((0.0 0.0)(1.0 0.0)(0.0 1.0)(1.0 1.0))) #(0.0 1.0 1.0 2.0)) 1.0
Классы
<appr-linear>
Option | Value |
Superclasses: | (t) |
Metaclass: | standard-class |
Default Initargs: | nil |
Описание: Класс <appr-linear> представляет линейную интерполяцию.
Пример использования:
(let ((a1 (make-instance '<appr-linear>
:x1 (vector 1 2 3)
:a1d (vector 1 4 9)))
(a2 (make-instance '<appr-linear>
:x1 (vector 2 3 4)
:a1d (vector 4 9 16))))
(loop :for i :from 0 :to 5 :by 1/5 :do
(format t "| ~5F | ~5F | ~5F |~%" i (approximate i a1)(approximate i a2))))
=>
| 0.0 | -2.0 | -6.0 |
| 0.2 | -1.4 | -5.0 |
| 0.4 | -0.8 | -4.0 |
| 0.6 | -0.2 | -3.0 |
| 0.8 | 0.4 | -2.0 |
| 1.0 | 1.0 | -1.0 |
| 1.2 | 1.6 | -0.0 |
| 1.4 | 2.2 | 1.0 |
| 1.6 | 2.8 | 2.0 |
| 1.8 | 3.4 | 3.0 |
| 2.0 | 4.0 | 4.0 |
| 2.2 | 5.0 | 5.0 |
| 2.4 | 6.0 | 6.0 |
| 2.6 | 7.0 | 7.0 |
| 2.8 | 8.0 | 8.0 |
| 3.0 | 9.0 | 9.0 |
| 3.2 | 10.0 | 10.4 |
| 3.4 | 11.0 | 11.8 |
| 3.6 | 12.0 | 13.2 |
| 3.8 | 13.0 | 14.6 |
| 4.0 | 14.0 | 16.0 |
| 4.2 | 15.0 | 17.4 |
| 4.4 | 16.0 | 18.8 |
| 4.6 | 17.0 | 20.2 |
| 4.8 | 18.0 | 21.6 |
| 5.0 | 19.0 | 23.0 |
x1
Вектор аргументов.Option Value Allocation: instance Type: nil
Accessors: (appr-linear-x1)
a1d-func
Вектор функций.Option Value Allocation: instance Type: nil
Accessors: (appr-linear-a1d-func)