﻿ defuzz – Algosim documentation
Algosim documentation: defuzz

defuzz

Replaces entries that are extremely close to being integral with the integers they approximate.

Syntax

• `defuzz(x[, ε])`

• `x` is a number, a vector, or a matrix

• `ε` is a positive number

Description

If `x` is a number, a vector, or a matrix, then `defuzz(x, ε)` returns `x` with all entries that are extremely close to being integral replaced by the integers they approximate. The required closeness is specified by the `ε` parameter, which defaults to `1E−8` if omitted.

Examples

`A ≔ ❨❨4, 1, 2, 3❩, ❨0, −2, 1, 5❩, ❨1, 0, 2, 2❩, ❨6, 1, 0, 2❩❩`
```⎛ 4   1   2   3⎞
⎜ 0  −2   1   5⎟
⎜ 1   0   2   2⎟
⎝ 6   1   0   2⎠
```
`Λ, U ≔ eigenvectors(A);`
`U ⋅ diag(Λ) ⋅ U^−1`
```⎛                    4 − 2.93249699516⋅10^−18⋅i                       1 − 6.7735386976⋅10^−19⋅i                      2 + 5.21897174135⋅10^−20⋅i                       3 + 5.6676363145⋅10^−21⋅i⎞
⎜−2.23074596989⋅10^−17 + 3.91940438539⋅10^−18⋅i                      −2 + 1.1917654819⋅10^−18⋅i                      1 − 2.81257201536⋅10^−18⋅i                       5 − 4.7883868275⋅10^−18⋅i⎟
⎜                    1 − 8.33908275002⋅10^−19⋅i   1.21972744405⋅10^−19 − 1.51585575754⋅10^−19⋅i                      2 − 3.33358238173⋅10^−19⋅i                      2 − 4.65069351146⋅10^−19⋅i⎟
⎝                    6 − 1.47707544878⋅10^−18⋅i                      1 − 1.22688894046⋅10^−19⋅i   5.96311194867⋅10^−19 − 8.62051771278⋅10^−19⋅i                      2 − 1.37030513329⋅10^−18⋅i⎠
```
`defuzz(ans)`
```⎛ 4   1   2   3⎞
⎜ 0  −2   1   5⎟
⎜ 1   0   2   2⎟
⎝ 6   1   0   2⎠
```