Menu

Main Inicio Главная

Calculator - Polynomial approximation of data based on fuzzy sets

Calculadora - Aproximación polinomial de datos basada en conjuntos difusos

Калькулятор - Полиномиальная аппроксимация данных на основе нечетких множеств



Calculator - Computing of matrices in fuzzy linear systems

Calculadora: cálculo de matrices en sistemas lineales difusos

Калькулятор - Вычисление матриц в нечетких линейных системах

 

Слабоумие и отвага

Аппроксимация полиномами нечетких данных и

решение нечетких систем линейных уравнений

Существует большое количество задач, направленных на обработку данных. Это могут быть задачи анализа, планирования, прогнозирования. Решение задачи сводится к формализации потока данных в функциональную зависимость. Определение функциональной зависимости сводится к аппроксимации данных математической функцией. Рассмотрим основные виды зависимостей. Математические функции могут описывать линейное, нелинейное и циклическое изменение данных. Какая математическая функция может быть достаточно гибкая, что бы пописывать такое разнообразие исходных параметров. Мы предлагаем использовать полиноминальные функции. Полином первой степени будет характеризовать линейную зависимость, полиномы более высоких степеней могут описывать нелинейные и периодические зависимости. Как построить полиноминальную функцию описывающую поток данных? Мы предлагаем использовать аппроксимацию данных методом наименьших квадратов. Например, с использованием MS EXCEL аппроксимация полиномом второй степени выглядит следующим образом.

Для потока модельных данных со следующими параметрами:

Определим корни полинома. Определение корней полинома реализуем методом наименьших квадратов. Путем решения системы линейных уравнений, записанных в матричном виде.

Реализация решения в MS EXCEL не представляет сложностей. Так матрица значений определяется следующим образом.

Вектор значений определяется следующим образом.

Запишем в алгебраическом виде уравнение: .

Где

Из этого уравнения найдем x. .

Где

 – обратная матрица .

Для определения обратной матрицы нужно осуществить расчет детерминанта исходной матрицы. Исходная матрица не должна быть сингулярной. В данном случае определитель матрицы  равен 124.585. Обратная матрица примет следующие значения.

Таким образом:

 

По результатам расчета можно сформировать полиноминальную функцию второй степени

 , что собственно показано MS EXCEL .

Продолжим наши рассуждения с использованием нечетких чисел. Мы разработали программно-аппаратные комплексы для формирования аппроксимационной матрицы и вектора нечетких чисел и для проведения нечетких матричных вычислений, решения нечетких систем линейных уравнений.

Подготовим исходные данные с начала в виде синглтонов нечетких множеств.

Данные удобно подготавливать с использованием MS EXCEL, а затем копировать данные в MS NOTEPAD или в программный комплекс.

0.75  ,        0.75  ,        0.75  ,        0.75  ;

1.5    ,        1.5    ,        1.5    ,        1.5    ;

2.25  ,        2.25  ,        2.25  ,        2.25  ;

3       ,        3       ,        3       ,        3       ;

3.75  ,        3.75  ,        3.75  ,        3.75  ;

 

2.5    ,        2.5    ,        2.5    ,        2.5    ;

1.2    ,        1.2    ,        1.2    ,        1.2    ;

1.12  ,        1.12  ,        1.12  ,        1.12  ;

2.25  ,        2.25  ,        2.25  ,        2.25  ;

4.28  ,        4.28  ,        4.28  ,        4.28  ;

Общий вид введения данных в программный комплекс.

Нажимаем кнопку “Computing” и получаем результат из двух файлов.

Матрица A  вектор в виде синглтонов примут вид.

 

L Воспользуемся MS EXCEL как редактором заполним входные параметры для нечетких матричных вычислений, на основе полученных данных.

A             ={                                                                                                                                                                                                                                                                                                                                                                                    

                1=            5,5,5,5;                                    11.25,11.25,11.25,11.25;                         30.9375,30.9375,30.9375,30.9375;

                2=            11.25,11.25,11.25,11.25;          30.9375,30.9375,30.9375,30.9375;         94.921875,94.921875,94.921875,94.921875;

                        3=                   30.9375,30.9375,30.9375,30.9375;     94.921875,94.921875,94.921875,94.921875;      309.7617188,309.7617188,309.7617188,309.7617188;

}              ;                                                                                                                                                                                                                                                                                                                                                                                                      

b              =              {                                                                                                                                                                                                                                                                                                                                                                                     

                1              =              11.35               ,       11.35               ,       11.35               ,       11.35               ;                                                                                                                                                                                                                                                

                2              =              28.995             ,       28.995             ,       28.995             ,       28.995             ;                                                                                                                                                                                                                                                

                3              =              90.21375 ,               90.21375 ,               90.21375 ,               90.21375 ;                                                                                                                                                                                                                                                        

}              ;

INV=INV(A);

x=MUL(INV,b);

Нажимаем кнопку “Computing” и получаем результат из стека всех переменных.

Результат вычислений корней полинома в виде синглтона содержится в переменной “x”.

Мы видим корректные результаты для синглтонов. Следующим шагом будет эксплуатация программно-аппаратных комплексов с треугольными нечеткими числами. Зададим отклонение нечетких чисел на 10% в меньшую и большую сторону.

X

0.675

,

0.75

,

0.75

,

0.825

;

 

1.35

,

1.5

,

1.5

,

1.65

;

 

2.025

,

2.25

,

2.25

,

2.475

;

 

2.7

,

3

,

3

,

3.3

;

 

3.375

,

3.75

,

3.75

,

4.125

;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

y

2.25

,

2.5

,

2.5

,

2.75

;

 

1.08

,

1.2

,

1.2

,

1.32

;

 

1.008

,

1.12

,

1.12

,

1.232

;

 

2.025

,

2.25

,

2.25

,

2.475

;

 

3.852

,

4.28

,

4.28

,

4.708

;

Проведем расчеты с использованием принципа расширения Заде.

 

Полученные данные соберем в команды.

A                    =                     {                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  

                        1                     =                     5,5,5,5;                              10.125,11.25,11.25,12.375;                    25.059375,30.9375,30.9375,37.434375;

                        2                     =                     10.125,11.25,11.25,12.375;            25.059375,30.9375,30.9375,37.434375;          69.19804688,94.921875,94.921875,126.3410156;

                                               3                                           =                                           25.059375,30.9375,30.9375,37.434375;  69.19804688,94.921875,94.921875,126.3410156;  203.2346637,309.7617188,309.7617188,453.5221324;

}                      ;                                                                                                                                                                                                                                                                                        

b                     =                     {                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  

                        1                     =                     10.215                                   ,                      11.35             ,                       11.35             ,                       12.485                                  ;                                                                                                                                                                                                                                                                                                                                                                                                             

                        2                     =                     23.48595                             ,                      28.995          ,                       28.995          ,                      35.08395                             ;                                                                                                                                                                                                                                                                                                                                                                                      

                        3                     =                     65.76582375                     ,                       90.21375     ,                       90.21375     ,                       120.0745013                     ;                                                                                                                                                                                                                                                                                                                                                                                      

}                      ;

 

Проверили определитель матрицы. Определитель матрицы А не равен нулю.

Нашли корни системы уравнений.

Про эксплуатируем полученные данные. Напишем полиномы и зададим параметры “X”.

 

 

Проведем расчеты с использованием упорядоченных нечетких чисел.

 

 

Проверили определитель матрицы. Определитель матрицы А не равен нулю.

Нашли корни системы уравнений.

Про эксплуатируем эти данные. Напишем полиномы и зададим параметры “X”.

 

 

Полученный анализ показал ожидаемые результаты. Расчеты с использованием расширения Заде показывают исчерпывающий разброс значений, гарантирующий невыход параметров за пределы определяемых значений. Расчеты с упорядоченными нечеткими числами характеризуют величины, поддерживающие возможность строгого использования в дальнейших аналитических исследованиях. Совместное использование этих двух подходов будет способствовать более эффективному решению прикладных задач.

Кондитерская фабрика производит продукцию трех видов: Продукция 1, Продукция 2 и Продукция 3. Для их производства используется сырье трех типов: Сырье 1, Сырье 2, Сырье 3. Нормы расхода каждого из них на одну продукцию и объем расхода сырья на один день заданы таблицей:

Type of raw materials

Rates of consumption of raw materials per unit of production, conv. units

Daily consumption of raw materials, conv. units

Products 1

Products 2

Products 3

Raw materials 1

1.6, 1.6, 1.6, 1.6;

0.3, 0.3, 0.3, 0.3;

0.8, 0.8, 0.8, 0.8;

216, 216, 216, 216;

Raw materials 2

2.7, 2.7, 2.7, 2.7;

0.2, 0.2, 0.2, 0.2;

0.6, 0.6, 0.6, 0.6;

232, 232, 232, 232;

Raw materials 3

0.6, 0.6, 0.6, 0.6;

0.1, 0.1, 0.1, 0.1;

0.4, 0.4, 0.4, 0.4;

88, 88, 88, 88;

Найдем оптимальные объемы производства.

Если оперировать действительными числами, то можно использовать метод Крамера для решения данной задачи.

Перейдем от четкого решения к нечетким числам. Воспользуемся MS EXCEL и запишем входные данные описывающие синглтоны нечетких множеств.

A

=

{

1

=

1.6

,

1.6

,

1.6

,

1.6

;

0.3

,

0.3

,

0.3

,

0.3

;

0.8

,

0.8

,

0.8

,

0.8

;

2

=

2.7

,

2.7

,

2.7

,

2.7

;

0.2

,

0.2

,

0.2

,

0.2

;

0.6

,

0.6

,

0.6

,

0.6

;

3

=

0.6

,

0.6

,

0.6

,

0.6

;

0.1

,

0.1

,

0.1

,

0.1

;

0.4

,

0.4

,

0.4

,

0.4

;

}

;

b

=

{

1

=

216

,

216

,

216

,

216

;

2

=

232

,

232

,

232

,

232

;

3

=

88

,

88

,

88

,

88

;

}

;

Команды матричных операций:

DET = DET(A);

INV = INV(A);

x = MUL(INV,b);

Программный комплекс вернет результат. И актуальные параметры для нас – это детерминант матрицы “А” и значения матрицы “х”. Видим, что полученные результаты совпадают со значениями, полученными методом Крамера. Так как мы эксплуатировали синглтоны, то не будет иметь значение какой метод вычислений мы использовали расширение Заде или упорядоченные нечеткие числа.

Продолжим рассуждение. Перейдем от синглтонов к треугольным числам. Зададим вариацию в меньшую большую сторону 10%. Подготовим данные и поэксплуатируем методы вычислений расширение Заде или упорядоченных нечетких чисел.

A

=

{

 

1

=

1.44

,

1.6

,

1.6

,

1.76

;

0.27

,

0.3

,

0.3

,

0.33

;

0.72

,

0.8

,

0.8

,

0.88

;

2

=

2.43

,

2.7

,

2.7

,

2.97

;

0.18

,

0.2

,

0.2

,

0.22

;

0.54

,

0.6

,

0.6

,

0.66

;

3

=

0.54

,

0.6

,

0.6

,

0.66

;

0.09

,

0.1

,

0.1

,

0.11

;

0.36

,

0.4

,

0.4

,

0.44

;

}

;

b

=

{

1

=

194.4

,

216

,

216

,

237.6

;

2

=

208.8

,

232

,

232

,

255.2

;

3

=

79.2

,

88

,

88

,

96.8

;

}

;

 

Метод расширение Заде ожидаемо дает большой разброс конечных значений.

Используя те же данные проведем расчет для упорядоченных нечетких чисел.

Исходя из свойств линейных уравнений и заданного отклонения в меньшую/большую сторону одинакового для матрицы “A” и вектора “b” дает результат аналогичный синглтонам.

Что бы посмотреть результаты представленные треугольными числами, зададим матрицу “A” как треугольные числа, а вектор “b” как синглтон. Это создаст определенную нелинейность, что отразится на результате.

A

=

{

1

=

1.44

,

1.6

,

1.6

,

1.76

;

0.27

,

0.3

,

0.3

,

0.33

;

0.72

,

0.8

,

0.8

,

0.88

;

2

=

2.43

,

2.7

,

2.7

,

2.97

;

0.18

,

0.2

,

0.2

,

0.22

;

0.54

,

0.6

,

0.6

,

0.66

;

3

=

0.54

,

0.6

,

0.6

,

0.66

;

0.09

,

0.1

,

0.1

,

0.11

;

0.36

,

0.4

,

0.4

,

0.44

;

}

;

 

b

=

{

1

=

216

,

216

,

216

,

216

;

2

=

232

,

232

,

232

,

232

;

3

=

88

,

88

,

88

,

88

;

}

;

В рассмотренных примерах мы специально ограничивали количество альфа-уровней, что бы упростить описание процессов. Но для серьёзных исследований их увеличение придаст расчетам большую точность. Для своих исследований я устанавливаю количество уровней равным 10. В целом приведенные программно-аппаратные комплексы показали широкие возможности в реализации численных нечетких вычислений в рамках матричных систем и задач линейной алгебры.

PS

Совсем забыл. Я упоминал, что полиномы первой степени могут работать как линейные функции.

Поэксплуатируем это утверждение для данных:

X

0.75  ,        0.75  ,        0.75  ,        0.75  ;

1.5    ,        1.5    ,        1.5    ,        1.5    ;

2.25  ,        2.25  ,        2.25  ,        2.25  ;

3       ,        3       ,        3       ,        3       ;

3.75  ,        3.75  ,        3.75  ,        3.75  ;

Y

2.5    ,        2.5    ,        2.5    ,        2.5    ;

1.2    ,        1.2    ,        1.2    ,        1.2    ;

1.12  ,        1.12  ,        1.12  ,        1.12  ;

2.25  ,        2.25  ,        2.25  ,        2.25  ;

4.28  ,        4.28  ,        4.28  ,        4.28  ;

Общая конфигурация программы будет иметь следующий вид.

Подготовим данные для матричных вычислений.

A

=

{

1

=

5

,

5

,

5

,

5

;

11.25

,

11.25

,

11.25

,

11.25

;

 

2

=

11.25

,

11.25

,

11.25

,

11.25

;

30.9375

,

30.9375

,

30.9375

,

30.9375

;

 

}

;

 

 

 

b

=

{

 

1

=

11.35

,

11.35

,

11.35

,

11.35

;

 

2

=

28.995

,

28.995

,

28.995

,

28.995

;

 

}

;

 

DET = DET(A);

INV = INV(A);

x = MUL(INV,b);

Выше перечисленные параметры введем в программный комплекс.

Результат вычислений будет иметь вид.

Полученные параметры полностью совпадают с линейной функцией, рассчитанной MS EXCEL для наших модельных данных

 

или

.

 

Moscow, Russia 12/12/2020 Zulfira Sadykova

 

Software development by Vladimir Abaev and Zulfira Sadykova

fuzzy.arithmetic.calculator@gmail.com