Scilab Website | Contribute with GitLab | Mailing list archives | ATOMS toolboxes
Scilab Online Help
2024.0.0 - Русский


clean

очищает матрицы (округление малых значений до нуля)

Синтаксис

B = clean(A)
B = clean(A, epsa)
B = clean(A, epsa, epsr)

Аргументы

A

скалярное число, вектор, матрица или гиперматрица десятичных чисел или комплексные числа, в плотном или разреженном кодировании или полиномах или рациональных с действительными или комплексными коэффициентами.

epsa, epsr

вещественные числа. Допустимые отклонения для очистки (значения по умолчанию соответственно 10-10 и 10-10)

Описание

Эта функция исключает (то есть устанавливает равными нулю) все коэффициенты с абсолютным значением < epsa относительным значением < epsr (относительно max(abs(A)), игнорируя значения %inf и %nan матрицы A).

Для массива полиномов или рациональных дробей, clean() применяется одинаково ко всему набору их коэффициентов.

Примеры

m = grand(3,5,"uin",1,9) .* 10.^grand(3,5,"uin",-16,1)
clean(m)
clean(m, 1e-7)
--> m = grand(3,5,"uin",1,9) .* 10.^grand(3,5,"uin",-16,1)
 m  =
   5.000D-08   5.          0.8         7.000D-08   4.000D-11
   0.00007     7.          4.000D-09   6.000D-13   2.000D-16
   2.000D-08   1.000D-14   1.          8.          0.7

--> clean(m)
 ans  =
   5.000D-08   5.   0.8         7.000D-08   0.
   0.00007     7.   4.000D-09   0.          0.
   2.000D-08   0.   1.          8.          0.7

--> clean(m, 1e-7)
 ans  =
   0.        5.   0.8   0.   0.
   0.00007   7.   0.    0.   0.
   0.        0.   1.    8.   0.7

Для рациональных чисел:

x = poly(0,'x');
w = [3+2*x, 2+x; 3+x, 2-x]/5
r = w * inv(w)
clean(r)
--> w = [3+2*x, 2+x; 3+x, 2-x]/5
 w  =
   0.6 +0.4x   0.4 +0.2x
   0.6 +0.2x   0.4 -0.2x

--> r = w * inv(w)
 r  =
                                                                2
   -3.140D-16 + x                        -1.110D-15 + 3.331D-16x
   ---------------                       ------------------------
                                                           2
         x                                   1.3333333x + x
                                      2                             2
   1.110D-15 - 2.220D-16x - 5.551D-17x   -1.110D-15 + 1.3333333x + x
   ------------------------------------  ----------------------------
                           2                                 2
             1.3333333x + x                    1.3333333x + x

--> clean(r)
 ans  =
   1   0
   --  --
   1   1

   0   1
   --  --
   1   1

Смотрите также

  • %eps — epsilon (машинная эпсилон -- относительная точность представления чисел с плавающей запятой)
  • cond — condition number of a matrix
  • nearfloat — получить предыдущее или следующее число с плавающей запятой
  • number_properties — определение параметров чисел с плавающей запятой
Report an issue
<< ceil Плавающая запятая double >>

Copyright (c) 2022-2024 (Dassault Systèmes)
Copyright (c) 2017-2022 (ESI Group)
Copyright (c) 2011-2017 (Scilab Enterprises)
Copyright (c) 1989-2012 (INRIA)
Copyright (c) 1989-2007 (ENPC)
with contributors
Last updated:
Tue Oct 24 14:37:06 CEST 2023