Загрузил semestr_mat

ВКР Найданов ред

Реклама
Министерство науки и высшего образования Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«Сибирский государственный индустриальный университет»
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
выпускной квалификационной работы:
Решение нечетких систем линейных уравнений в
программе компьютерной математики Maxima
ОБУЧАЮЩИЙСЯ
Найданов Кирилл Владимирович
(подпись)
допущен к защите в государственной экзаменационной комиссии «__» _____ 20__ г.
Руководитель
к.ф.-м.н., доцент
___________
Лактионов Сергей Андреевич
(уч. степень, звание)
(подпись)
(фамилия, имя, отчество)
Заведующий кафедрой д.т.н., профессор ___________ Павлова Лариса Дмитриевна
(уч. степень, звание)
Директор института
ИТиАС
(подпись)
(фамилия, имя, отчество)
д.т.н., профессор ___________ Павлова Лариса Дмитриевна
(наименование института) (уч. степень, звание)
(подпись)
Новокузнецк
2023 г.
(фамилия, имя, отчество)
Министерство науки и высшего образования Российской Федерации
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«Сибирский государственный индустриальный университет»
Кафедра прикладной математики и информатики
УТВЕРЖДАЮ
Заведующий кафедрой
_________
Павлова Л.Д.
«____» ___________ 20___г.
ЗАДАНИЕ
на выпускную квалификационную работу
обучающегося Найданов Кирилл Владимирович
группы ИПМИ-19
Тема работы: Решение нечетких систем линейных уравнений в программе компьютерной математики Maxima
Утверждена приказом от 06.03.23 № 289-об
Характер работы прикладное научное исследование
Срок сдачи обучающимся законченной работы «___» ________20_____г.
Исходные условия и данные к работе: задана нечеткая система линейных уравнений с нечеткими правыми частями относительно нечетких неизвестных. Для решения задачи имеется установленная система компьютерной математики Maxima.
Цель, задачи работы:
Цель: разработать программу решения нечеткой системы линейных уравнений
в программе компьютерной алгебры Maxima.
Задачи: сформулировать математическую постановку задачи; определить алгоритм решения; разработать программу в среде программирования Maxima; применить разработанную программу на конкретных нечетких системах линейных уравнений; отметить результаты исследования и сделать вывод на основе выполненной работы.
Содержание работы: Введение; 1. Общая часть; 1.1 Нечеткие множества; 1.1.1
Определение нечеткого множества; 1.1.2 Основные характеристики нечеткого множества; 1.1.3 Дефаззификация нечеткого множества; 1.2 Нечеткие числа; 1.2.1 Опре-
2
деление нечеткого числа, как нечеткого множества; 1.2.2 Линейные операции над нечеткими числами в форме функций принадлежности; 1.2.3 Определение нечеткого
числа через граничные функции; 1.2.4 Линейные операции над нечеткими числами в
форме граничных функций; 1.2.5 Преобразование между способами задания треугольных нечетких чисел в Maxima; 1.3 Постановка задачи решения нечеткой системы линейных уравнений; 1.4 Работа в системе компьютерной алгебры Maxima; 1.5
Инструменты системы компьютерной алгебры Maxima для решения нечетких систем
линейных уравнений; 2. Специальная часть; 2.1 Техническое задание; 2.1.1 Основание для разработки; 2.1.2 Назначение разработки; 2.1.3 Требования к информационному продукту; 2.1.4 Стадии и этапы разработки; 2.2 Выбор и обоснование инструментов для выполнения проекта; 2.2.1 Среда разработки; 2.2.2 Обоснование инструментов для выполнения проекта; 2.3 Постановка и алгоритм решения нечетких систем
линейных уравнений методом расширения; 2.4 Реализация алгоритма решения нечетких систем линейных уравнений для разработки программы в Maxima; 2.5 Примеры
решения нечетких систем линейных уравнений в Maxima; 2.5.1 Нечеткая задача для
дифференциального уравнения второго порядка; 2.5.2Нечеткая задача вариационного
исчисления; 2.5.3Нечеткая задача о выпуске продукции; 2.6 Анализ полученных результатов решения задачи нечеткого линейного программирования в Maxima и их
практического использования; Заключение; Список использованной литературы.
Предполагаемое использование: результаты работы могут быть использованы
преподавателями и обучающимися в любом образовательном учреждении, а также
частными пользователями, для решения нечетких систем линейных уравнений.
Перечень графического материала: презентация доклада, листинг программы
нечетких систем линейного программирования в Maxima.
Нормоконтроль к.т.н., доцент Лавцевич Галина Викторовна_______________
________________________________________________________________________
________________________________________________________________________
________________________________________________________________________
Руководитель ВКР __________________
Задание к исполнению принял ________________ «____» _______20___г.
3
ЛИСТ ЗАМЕЧАНИЙ
4
АННОТАЦИЯ
Найданов Кирилл Владимирович, Решение нечетких систем линейных уравнений в программе компьютерной математики Maxima, выпускная квалификационная
работа по направлению подготовки «Прикладная математика и информатика»
(01.03.02). – Новокузнецк, 2023. – 75 с., табл. 3, ил. 19, источников 26.
В процессе выполнения выпускной квалификационной работы «Решение нечетких систем линейных уравнений в программе компьютерной математики Maxima»,
были разработаны программные средства для решения нечетких систем линейных
уравнений в пакете Maxima.
Произведен обзор и анализ существующих методов и инструментов для решения нечетких систем линейных уравнений, а также произведен выбор метода, на основе которого разрабатывалось программное обеспечение. В работе произведено детальное описание и принципа работы программного обеспечения для решения некоторых нечетких систем линейных уравнений. Объектом исследования является сфера
программного обеспечения, предназначенного для решения математических задач.
Результаты работы находятся в открытом доступе и могут быть использованы
в любом образовательном учреждении, на кафедрах и частными пользователями, для
решения нечетких систем линейных уравнений.
5
ABSTRACT
Naidanov Kirill Vladimirovich, Solving fuzzy systems of linear equations in the program of computer mathematics Maxima, final qualification work in the field of study "Applied Mathematics and Informatics" (01.03.02). - Novokuznetsk, 2023. - 75 p., tab. 3, ill.
19, sources 26.
In the process of completing the final qualification work "Solution of fuzzy systems
of linear equations in the computer mathematics program Maxima", software tools were
developed for solving fuzzy systems of linear equations in the Maxima package.
A review and analysis of existing methods and tools for solving fuzzy systems of
linear equations was made, and a choice was made of the method on the basis of which the
software was developed. The paper produced a detailed description and the principle of operation of the software for solving some fuzzy systems of linear equations. The object of
research is the area of software designed to solve mathematical problems.
The results of the work are in the public domain and can be used in any educational
institution, departments and private users to solve fuzzy systems of linear equations.
6
Содержание
Введение ............................................................................................................................... 9
1 Общая часть .................................................................................................................... 12
1.1 Нечеткие множества ................................................................................................ 12
1.1.1 Определение нечеткого множества ................................................................ 12
1.1.2 Основные характеристики нечеткого множества ......................................... 13
1.1.3 Дефаззификация нечеткого множества ......................................................... 14
1.2 Нечеткие числа ......................................................................................................... 15
1.2.1 Определение нечеткого числа, как нечеткого множества ........................... 16
1.2.2 Линейные операции над нечеткими числами в форме функций
принадлежности .................................................................................................. 20
1.2.3 Определение нечеткого числа через граничные функции ........................... 21
1.2.4 Линейные операции над нечеткими числами в форме граничных
функций ................................................................................................................ 25
1.2.5 Преобразование между способами задания треугольных нечетких чисел в
Maxima.................................................................................................................. 25
1.3 Постановка задачи решения нечеткой системы линейных уравнений .............. 30
1.4 Работа в системе компьютерной алгебры Maxima. .............................................. 31
1.5 Инструменты системы компьютерной алгебры Maxima для решения нечетких
систем линейных уравнений .................................................................................... 36
2 Специальная часть .......................................................................................................... 37
2.1 Техническое задание ................................................................................................ 37
2.1.1 Основание для разработки .............................................................................. 37
2.1.2 Назначение разработки .................................................................................... 37
2.1.3 Требования к информационному продукту .................................................. 37
2.1.4 Стадии и этапы разработки ............................................................................. 38
2.2 Выбор и обоснование инструментов для выполнения проекта .......................... 38
2.2.1 Среда разработки.............................................................................................. 38
2.2.2 Обоснование инструментов для выполнения проекта ................................. 38
2.3 Постановка и алгоритм решения нечетких систем линейных уравнений
методом расширения................................................................................................. 39
2.4 Реализация алгоритма решения нечетких систем линейных уравнений для
разработки программы в Maxima ............................................................................ 40
2.5 Примеры решения нечетких систем линейных уравнений в Maxima ................ 44
2.5.1 Нечеткая задача для дифференциального уравнения второго порядка ..... 44
2.5.2Нечеткая задача вариационного исчисления ................................................. 52
2.5.3Нечеткая задача о выпуске продукции ........................................................... 60
2.6 Анализ полученных результатов решения нечетких систем линейных
уравнений в Maxima и их практического использования ..................................... 67
Заключение......................................................................................................................... 69
Список использованной литературы ............................................................................... 70
ПРИЛОЖЕНИЕ ................................................................................................................. 73
8
Введение
Цель работы
Цель исследования состоит в разработке в системе компьютерной математике
Maxima программы решения нечетких систем линейных уравнений, в которых неизвестными являются треугольные нечеткие числа.
Актуальность темы исследования
Актуальной задачей математического моделирования является создание математических моделей в условиях неопределенности. Один из подходов в решении таких задач состоит в применении методов теории нечетких множеств. Эта теория, возникшая во второй половине 20 века, переживает бурное развитие. В настоящее время
созданы такие разделы теории как элементы нечеткой арифметики, теория нечеткого
дифференциального и интегрального исчисления. Появляются подходы к использованию теории нечетких множеств в специальных разделах математики и ее приложений, такие как, методы решения нечетких дифференциальных уравнений, нечетких
задач оптимизации, задач нечеткого вариационного исчисления.
Теория нечетких множеств и связанная с ней теория возможностей, которые
были разработаны в дополнение к интерпретации лингвистических или измеренных
неопределенностей для случайных явлений реального мира, предоставили мощные
инструменты для более детальной оптимизации. Хотя нечеткость дает более слабый
(менее информативный) признак неопределенности, чем случайность, теория нечетких множеств и теория возможностей не требуют достаточно точных данных для количественной оценки неточной информации.
Решение систем нечетких линейных уравнений актуально в различных областях, где присутствуют неопределенность и неточность. Нечеткая логика — это математическая структура, которая имеет дело с неопределенностью, допуская степени
принадлежности, а не четкие значения истины. Нечеткие линейные уравнения расширяют эту концепцию до линейных систем, где коэффициенты и переменные могут
быть представлены в виде нечетких чисел. Вот некоторые области, в которых важно
решать системы нечетких линейных уравнений.
Системы управления. Нечеткая логика широко используется в системах управления для обработки неточных входных данных и лингвистических переменных. Решение нечетких линейных уравнений помогает определить оптимальные управляющие действия в неопределенных или нечетких средах.
Принятие решений. Нечеткие линейные уравнения могут использоваться для
моделирования проблем принятия решений, когда данные или предпочтения являются неточными или неопределенными. Решая эти уравнения, можно получить решения, представляющие нечеткие отношения между переменными решения.
Оптимизация. Многие задачи оптимизации включают неопределенные или нечеткие параметры. Решение систем нечетких линейных уравнений может помочь в
формулировании и решении таких задач оптимизации, что приводит к надежным и
надежным решениям.
Распознавание образов. Нечеткие линейные уравнения могут использоваться в
задачах распознавания образов для обработки неточных или неточных признаков. Решая эти уравнения, можно получить нечеткие отношения между признаками и классами, что позволяет улучшить классификацию или распознавание.
Искусственный интеллект. Нечеткая логика используется в различных приложениях ИИ, включая экспертные системы и машинное обучение. Решение систем нечетких линейных уравнений может улучшить возможности моделирования и рассуждений систем ИИ, позволяя им эффективно справляться с неопределенностью и неточностями.
Финансовый анализ: нечеткие линейные уравнения могут использоваться в финансовом анализе для работы с неопределенными данными, такими как прогнозы
фондового рынка или экономические показатели. Решая эти уравнения, можно получить нечеткие модели или прогнозы, отражающие присущую финансовым системам
неопределенность.
В целом, решение систем нечетких линейных уравнений актуально в любой области, где существуют неопределенность, неточность или неопределенность. Он
10
обеспечивает математическую основу для обработки таких ситуаций, обеспечивая более точное и надежное принятие решений, оптимизацию и моделирование в различных практических
Актуальность выбора инструмента исследования
Важным направлением развития современных систем компьютерной математики является создание инструментов для решения типовых математических задач.
Такие инструменты представляют собой программы, созданные в пакетах компьютерной математики, которые позволяют пользователю вводить в эти программы исходные данные решаемой задачи и получать готовый результат.
Большое количество программ решения типовых задач по математике имеется
в таких коммерческих пакетах, как Maple, Mathematica, MatLab. Программы, созданные разработчиками данных пакетов, эффективно решают задачи линейной алгебры,
математического анализа, дифференциальных уравнений и позволяют получать решение таких задач в общем виде. Однако высокая стоимость этих пакетов не позволяет рядовым пользователям устанавливать и использовать эти пакеты. Одним из выходов из этой ситуации является использование некоммерческих программ, имеющих
похожую функциональность. Здесь следует отметить такие программы как Maxima,
Scilab, SageMath. Среди этих некоммерческих систем компьютерной математики выделяется программа Maxima, ориентированная на символьное решение математических задач, что позволяет упростить общий процесс постановки и решения задач, а
также появляется возможность получать более понятный ответ, так как он будет получен в символьном виде [2]. В качестве графического интерфейса программы
Maxima используется программа wxMaxima, которая представляет собой обычное
оконное приложение с панелью выпадающего меню, окном ввода команд и различных настроек, свойственных таким приложениям. Эти характеристики программы послужили выбором Maxima в качестве среды разработки для выполнения настоящей
работы по созданию программы решения нечетких систем линейных уравнений.
11
1 Общая часть
1.1 Нечеткие множества
1.1.1 Определение нечеткого множества
Теория нечетких множеств ведет свое начало с 1965г., когда профессор Лотфи
Заде из университета Беркли опубликовал основополагающую работу “FuzzySets” в
журнале “Information and Control”. Прилагательное "fuzzy", которое можно перевести
на русский как «нечеткий, размытый, ворсистый, пушистый», введено в название новой теории с целью дистанцирования от традиционной четкой математики и аристотелевой логики, оперирующих с четкими понятиями: «принадлежит – не принадлежит», «истина – ложь». Концепция нечеткого множества зародилась у Заде «как неудовлетворенность математическими методами классической теории систем, которая
вынуждала добиваться искусственной точности, неуместной во многих системах реального мира, особенно в так называемых гуманистических системах, включающих
людей» [8].
Понятие нечеткого множества – эта попытка математической формализации нечеткой информации для построения математических моделей. В [9] основе этого понятия лежит представление о том, что составляющие данное множество элементы,
обладающие общим свойством, могут обладать этим свойством в различной степени
и, следовательно принадлежать к данному множеству с различной степенью. При таком подходе высказывания типа «такой-то элемент принадлежит данному множеству» теряют смысл, поскольку необходимо указать «насколько сильно» или с какой
степенью конкретный элемент удовлетворяет свойствам данного множества.
Пусть 𝐸 некоторое универсальное множество, а 𝑥 - элемент этого множества.
Нечетким множеством 𝐴 универсального множества 𝐸 называется множество пар
𝐴 = {𝑥/𝜇𝐴 (𝑥)},
(1.1)
где 𝑥 элементы множества 𝐸, а 𝜇𝐴 (𝑥) - функция принадлежности, принимающая значения из отрезка [0,1].
12
Функция принадлежности 𝜇𝐴 (𝑥) указывает степень (или уровень) принадлежности элемента 𝑥 множеству 𝐴. Отметим, что если 𝜇𝐴 (𝑥) принимает только значения
0 или 1, то нечеткое множество 𝐴 может рассматриваться как обычное или четкое
множество.
1.1.2 Основные характеристики нечеткого множества
Для каждого нечеткого множества можно определить следующие основные характеристики:
˗ величина h  A  sup  A  x  или h  A  max  A  x  называется высотой нечетxE
xE
кого множества;
˗ нечеткое множество называется нормальным, если его высота равна 1 и называется субнормальным, если его высота меньше 1;
˗ нечеткое множество 𝐴 пусто, если для ∀𝑥 ∈ 𝐸, 𝜇𝐴 (𝑥) = 0;
˗ если нечеткое множество 𝐴 не пусто и субнормально, то нормализацией этого
множества называется преобразование функции принадлежности по формуле (1.2)
A  x 
A  x
;
sup  A  x 
(1.2)
xE
˗ нечеткое множество называется унимодальным, если 𝜇𝐴 (𝑥) = 1 только для
одного элемента 𝑥 и мультимодальным, если 𝜇𝐴 (𝑥) = 1 для нескольких элементов;
˗ носителем нечеткого множества называется обычное подмножество элементов 𝑥 из 𝐸 для которых 𝜇𝐴 (𝑥) > 0. Носитель обозначается 𝑠𝑢𝑝𝑝 𝐴;
˗ ядром нечеткого множества называется обычное подмножество элементов 𝑥
из 𝐸 для которых 𝜇𝐴 (𝑥) = 1. Ядро обозначается 𝑘𝑒𝑟 𝐴;
˗ элементы 𝑥 ∈ 𝐸 для которых 𝜇𝐴 (𝑥) = 0,5 называются точками перехода нечеткого множества 𝐴;
˗ 𝛼-сечением (𝛼-срезом или множеством -уровня) нечеткого множества называется четкое подмножество универсального множества, для элементов которого
13
𝜇𝐴 (𝑥) > 𝛼. Отметим, что носитель нечеткого множества можно рассматривать как 𝛼сечения нечеткого множества при 𝛼 = 0;
˗ нечеткое множество 𝐴 называется выпуклым, если 𝐸 ⊆ 𝑅𝑛 – выпуклое множество и для любых 𝑥1 и 𝑥2 из 𝐸 выполняется условие
𝜇𝐴 (𝜆𝑥1 + (1 − 𝜆)𝑥2 ) ≥ 𝑚𝑖𝑛(𝜇𝐴 (𝑥1 ), 𝜇𝐴 (𝑥2 )), 𝜆 ∈ [0; 1]
(1.3)
Все 𝛼-сечения нечеткого выпуклого множества являются выпуклыми множествами.
1.1.3 Дефаззификация нечеткого множества
Дефаззификацией нечеткого множества называется преобразование нечеткого
множества в четкое число [10].
В теории нечетких множеств дефаззификация аналогична нахождению числовых характеристик случайных величин в теории вероятности. Простейшим способ дефаззификации состоит в определении четкого числа с наибольшим значением функции принадлежности. Однако этот метод можно применить только для одноэкстремальных функций принадлежности. Для многоэкстремальных функций принадлежности применяются такие методы дефаззификации:
˗ центр тяжести (Centroid);
˗ медиана (Bisector);
˗ центр максимумов (Mean of Maximums);
˗ наибольший из максимумов (Largest of Maximums);
˗ наименьший из максимумов (Smallest of Maximums).
Расчетные формулы этих методов дефаззификации для нечетких множеств с
непрерывными и дискретными носителями приведены в таблице 1.
14
Таблица 1- Дефаззификация нечеткого множества
Дефаззификация нечетких множеств
Метод
Непрерывное нечеткое множе-
Дискретное нечеткое
дефаззи-
ство
множество
фикации
𝐴 = {𝑥/𝜇𝐴 (𝑥)|𝑥 ∈ [𝑎; 𝑏]}
𝐴 = {𝑥1 /𝜇𝐴 (𝑥1 ), … , 𝑥𝑛 /𝜇𝐴 (𝑥𝑛 )}
Центр
тяжести
n
b
 x A ( x)dx
a
b
  A ( x)dx
a
x 
i 1
n

i 1
Найти такое 𝑐, чтобы
Медиана
c
b
  A ( x)dx    A ( x)dx
a
c
максимумов
ший max
Наибольший max
A
( xi )
( xi )
𝑚𝑖𝑛(𝑥𝑗 ) такое, что для ∀𝑗
j
  A ( xi ) 
i 1
1 n
  A ( xi )
2 i 1
xi G
G
𝐺 = {𝑥|𝑚𝑎𝑥(𝜇𝐴 (𝑥))}
Наимень-
A
x
 xdx
G
,
 dx
G
Центр
i
i
,
𝐺 = {𝑥𝑖 |𝑚𝑎𝑥(𝜇𝐴 (𝑥))}
𝑚𝑖𝑛(𝐺)
𝑚𝑖𝑛(𝐺)
𝑚𝑎𝑥(𝐺)
𝑚𝑎𝑥(𝐺)
1.2 Нечеткие числа
Существует два подхода в определении нечетких чисел. Первый подход связан
с определением нечеткого числа как нечеткого множества, заданного на универсальном множестве действительных чисел, функция принадлежности которого обладает
определенными свойствами. Второй подход состоит в задании нечеткого числа через
15
нижнюю и верхнюю или, иначе, левую и правую ограничивающие функции, обладающие тоже определенными свойствами и, по сути дела, являющимися обратными
функциями для функций принадлежности нечеткого числа. Отметим, что свойства
функции принадлежности нечеткого числа всегда позволяют найти обратные к ним
функции, поэтому легко перейти от одного подхода в определении нечеткого числа к
другому. Использование того или иного подхода в определении нечеткого числа
прежде всего связано с задачами, в которых необходимо использовать нечеткие
числа.
1.2.1 Определение нечеткого числа, как нечеткого множества
Нечетким числом a , будем называть нечеткое множество, определенное на
универсальном множестве действительных чисел, которое обладает следующими
свойствами:
1) нечеткое множество является нормальным;
2) функция принадлежности является выпуклой, то есть
a  z   min a  x  , a  y   при x  z  y ;
(1.4)
3) функция принадлежности является полунепрерывной сверху.
Полунепрерывность сверху означает, что для любого   0 существует   0
такое, при котором из условия | x  x0 |  следует, что f  x   f  x0    . То есть значения функции в интервале  x0   ; x0    не могут увеличиваться больше, чем на 
относительно f  x0  , а уменьшаться могут на любую величину.
Из этого определения нечеткого числа следует, что
1) существуют такие элементы x нечеткого числа a как нечеткого множества,
для которых функция принадлежности a  x   1;
2) слева от любой из точек, для которых a  x   1 функция принадлежности не
убывает, а справа от любой из точек, для которых a  x   1 функция принадлежности
не возрастает.
16
Таким образом, для нечеткого числа значение a  x   1 функции принадлежности имеет место либо для целого отрезка, либо только для одной точки. Если
a  x   1 только для одной точки, то нечеткое число, также, как нечеткое множество
называется унимодальным.
3) Носителем нечеткого числа называется множество S A  x | a  x   0 .
Нечеткое число называется
- нечетким нулем, если a  0   1;
- положительным, если x  S A , a  x   0 ;
- отрицательным, если x  S A , a  x   0 .
К пунктам 1-3 в определении нечетких чисел принято добавлять следующие
требования:
4) нечеткое число является унимодальным;
5) носитель нечеткого числа S A  x | a  x   0 представляет собой ограниченное подмножество числовой прямой.
Множество нечетких чисел, удовлетворяющих требованиям 1-3 обозначим через A , удовлетворяющих требованиям 1-3, 4 через B , удовлетворяющих требованиям 1-3, 5 через C и удовлетворяющих всем требованиям 1-5 через D .
Отметим, что четкое число a есть частный случай нечеткого числа a с функ-
1, x  a,
цией принадлежности a  x   
0, x  a.
Исходя из вида функций принадлежности, которыми задаются нечеткие числа,
среди нечетких чисел выделим наиболее значимые классы нечетких чисел.
1) Треугольные нечеткие числа.
Треугольными нечеткими числами называют нечеткие числа, функция принадлежности которых имеет вид
17
x  aL ,
0,
 xa
L , a xa ,

L
C
 aC  aL
a  x   
 aR  x , a  x  a ,
C
R
 aR  aC

x  aR ,
0,
aL  aC  aR .
(1.5)
График функции принадлежности треугольного числа имеет вид треугольника
(рисунок 1).
a  x 
1
0
aС
aL
aR
x
Рисунок 1 – График функции принадлежности треугольного числа
Треугольные числа принадлежат множеству D . Треугольные нечеткие числа
обычно обозначают через  aL , aC , aR  .
2) Трапециевидные нечеткие числа.
Трапециевидными нечеткими числами называют нечеткие числа, функция принадлежности которых имеет вид
0,
x  aL ,

 xa
CL ,

aL  x  aCL ,
 aCL  aL

a  x   
1,
aCL  x  aCR ,
 a x
 R
, aCR  x  aR ,
 aR  aCR

0,
x  aR ,

18
aL  aCL  aCR  aR .
(1.6)
График функции принадлежности трапециевидного нечеткого числа имеет вид
треугольника (рисунок 2)
a  x 
1
0
aСR
aСL
aL
aR
x
Рисунок 2 – График функции принадлежности трапециевидного числа
Трапециевидные нечеткие числа не являются унимодальными, поэтому они
принадлежат множеству C .
3) Гауссовские нечеткие числа.
Гауссовскими нечеткими числами называются нечеткие числа с функцией принадлежности, соответствующей нормальному распределению
a  x   e
2
xa 


2 2
.
(1.7)
Носитель гауссовского нечеткого числа не ограничен, поэтому гауссовские нечеткие числа принадлежат множеству B .
График функции принадлежности гауссовского нечеткого числа соответствует
графику нормального распределения, предоставленный на рисунке 3.
19
a  x 
1
a
0
x
Рисунок 3 – График функции принадлежности гауссовского числа
Будем называть нечеткие числа, заданные через функцию принадлежности нечеткого множества нечеткими числами в форме функций принадлежности. Два нечетких числа a и b называются равными, если их функции принадлежности в каждой
точке имеют одно и тоже значение – a  x   b  x  .
1.2.2 Линейные операции над нечеткими числами в форме функций принадлежности
Определим линейные операции над нечеткими числами в форме функций принадлежности по следующим формулам
1) сложение двух нечетких чисел
 

(1.8)
 

(1.9)
c  a  b , c  z   max min a  x  , b  y  ;
z  x y
2) вычитание двух нечетких чисел
c  a  b , c  z   max min a  x  , b  y  ;
z  x y
3) умножение нечеткого числа на действительное число
 x
b  k  a  b  x   a   , k  0
k
(1.10)
Запишем эти формулы для треугольных нечетких чисел в форме. Пусть
a   aL , aC , aR  и b   bL , bC , bR  два треугольных числа. Тогда
20
1) сложение двух треугольных нечетких чисел
c  a  b, c   aL  bL , aC  bC , aR  bR  ;
(1.11)
2) вычитание двух треугольных нечетких чисел
c  a  b, c   aL  bR , aC  bC , aR  bL  ;
(1.12)
3) умножение треугольного нечеткого числа на действительное число
b   kaL , kaC , kaR  , k  0,
b  k a  
b   kaR , kaC , kaL  , k  0.
(1.13)
1.2.3 Определение нечеткого числа через граничные функции
Далее рассмотрим определение нечетких чисел с помощью пары ограничивающих функций.
Нечетким числом u будем называть упорядоченную пару функций  u  r  , u  r  
, 0  r  1 , заданных на отрезке 0;1 и удовлетворяющих следующим требованиям:
1) u  r  является непрерывной неубывающей функцией, определенной на отрезке 0;1 ;
2) u  r  является непрерывной невозрастающей функцией, определенной на отрезке 0;1 ;
3) u  r   u  r  , 0  r  1 .
Точно также, как в случае определения нечетких чисел принято добавлять такие
требования
4) u 1  u 1 ;
5) uL  u  r   u  r   uR , 0  r  1 .
21
Если выполняется условие 4, то нечеткое число называется унимодальным, а
если не выполняется, то есть u 1  u 1 , то называется мультимодальным. Условие
5 означает, что носитель нечеткого числа есть конечное множество.
Унимодальное нечеткое число u   u  r  , u  r   , для которого функции u  r  и
u  r  , задающие это число являются линейными непостоянными функциями является
треугольным нечетким числом в смысле первого определения. Мультимодальное нечеткое число  u  r  , u  r   , для которого функции u  r  и u  r  , задающие это число
являются линейными непостоянными функциями является трапециевидным нечетким числом в смысле первого определения.
Построение функций u  r  и u  r  определяет изображение нечеткого числа u
. Например, изображение нечеткого числа u  1  r ,4  2r  показано на рисунке 4.
На этом рисунке нечеткое число изображено в виде графиков функций u  r  и u  r 
соответственно возрастающей и убывающей на отрезке [0;1] . Легко видеть, что это
унимодальное нечеткое число.
Рисунок 4 – Нечеткое число 1  r , 4  2r 
22
Отметим, что четкое число  , очевидно, представляется через постоянные
функции u  r   u  r    , 0  r  1.
Установим связь между первым и вторым определениями нечеткого числа. Рассмотрим по отдельности функции u  r  и u  r  . Так как функция u  r  является неубывающей, то на участках строгой монотонности можно определить обратную
функцию r  u  . На участках, где u  r  постоянна в качестве значения функции r  u 
будем брать значение на правой границе этого участка. Построенная таким образом
функция r  u  является неубывающей полунепрерывной сверху функцией, что соответствует определению функции принадлежности нечеткого числа в смысле первого
определения.
Аналогично через функцию u  r  определим функцию r  u  . Только на участках постоянства функции u  r  в качестве значения функции r  u  будем брать значение для левой границы этого участка. Построенная таким образом функция r  u 
является невозрастающей полунепрерывной сверху функцией.
Далее с помощью функций r  u  и r  u  составим функцию принадлежности
нечеткого числа с конечным носителем
 0,
u  u 0

 r  u  , u  0   u  u 1 ,
u  u    1,
u 1  u  u 1 ,
 r  u  , u 1  u  u  0  ,

u  u  0 .
 0,
(1.14)
Эта функция принадлежности задает нечеткое число u   u  r  , u  r   в смысле
первого определения нечетких чисел.
В качестве примера преобразуем задание нечеткого числа u  1  r ,4  2r  , заданного через граничные функции, к его заданию через функцию принадлежности.
Имеем
23
u  r   1  r , 0  r  1  1  u  r   2  r  u   u  1, 1  u  r   2;
u
u  r   4  2r , 0  r  1  2  u  r   4  r  u   2  , 2  u  r   4.
2
(1.15)
Таким образом, функция принадлежности, задающая нечеткое число
u  1  r ,4  2r  имеет вид (рисунок 5)
u 1
 0,
 u  1, 1  u  2,

u  u    u
2  2 , 2  u  4,

u  4.
 0,
(1.16)
Рисунок 5 – График функции принадлежности числа 1  r ,4  2r 
Отметим, что нечеткое число, график функции принадлежности которого изображен на рисунке 5, называется треугольным нечетким числом. График функции принадлежности такого числа определяет треугольник с основанием на оси Ox . Через
значения функций u  r  и u  r  , где u 1  u 1 такое число обозначается в виде
 u  0 , u 1 , u  0  1,2,4 .
Нечеткие числа, заданные парой граничных функций, будем называть
нечеткими числами в форме граничных функций. Два нечетких числа u   u  r  , u  r  
24
и v   v  r  , v  r   в форме граничных функций называются равными, если
u  r   v  r  , u  r   v  r  , 0  r  1.
Отметим, что в общем случае треугольное нечеткое число в форме граничных
функций задается виде u   u  r  , u  r     a1r  b1, b2  a2r  , где 0  r  1 , a1  0, a2  0
и из условия u 1  u 1 следует, что a1  b1  b2  a2 .
1.2.4 Линейные операции над нечеткими числами в форме граничных
функций
Определим линейные операции над нечеткими числами в форме граничных
функций по следующим формулам
1) Сложение двух нечетких чисел в форме граничных функций
u  v   u  r   v  r  , u  r   v  r  .
(1.17)
2) Вычитание двух нечетких чисел в форме граничных функций
u  v   u  r   v  r  , u  r   v  r  .
(1.18)
3) Умножение нечеткого числа на действительное число в форме граничных
функций
 ku  r  , ku  r   , k  0,
ku  
.
ku
r
,
ku
r
,
k

0.







(1.19)
В силу определения равенства между нечеткими числами и введения операций
сложения, вычитания и умножения на число нечетких чисел можно рассматривать
линейные уравнения и системы линейных уравнений, содержащие нечеткие числа.
1.2.5 Преобразование между способами задания треугольных
нечетких чисел в Maxima
Составим простые программы в системе Maxima, преобразующие задание треугольных нечетких чисел от одного вида к другому.
25
Пусть задано треугольное нечеткое число a   aL , aC , aR  с помощью функции
принадлежности
x  aL ,
0,
 xa
L , a xa ,

L
C
 aC  aL
a  x   
 aR  x , a  x  a ,
C
R
 aR  aC

x  aR ,
0,
Функции r 
aL  aC  aR .
(1.20)
u  aL
a u
и r R
строго монотонные, поэтому можно найти
aC  aL
aR  aC
обратные функции u   aC  aL  r  aL и u  aR   aR  aC  r , которые задают нечеткое число u    aC  aL  r  aL , aR   aR  aC  r  .
Обратно, пусть задано нечеткое треугольное число через ограничивающие
функции
u   u  r  , u  r     a1r  b1, b2  a2r  ,
где
0  r  1,
a1  0, a2  0,
u  r   u  r  , u 1  u 1 .Из условия u 1  u 1 следует, что a1  b1  b2  a2 , поэтому
для нечеткого треугольного числа в формуле u   a1r  b1, b2  a2r  должно выполняться равенство a2  b2  a1  b1 .
Функции x  a1r  b1 и x  b2  a2r строго монотонные, значит для них можно
найти обратные функции r1 
x  b1
b x
и r2  2
. Из условия u  r   u  r  имеем
a1
a2
a1r  b1  b2  a2r , поэтому при r  0 получаем b1  b2 . Из условия u 1  u 1 следует, что a1  b1  b2  a2 . Обозначим a1  b1  b2  a2  aC , b1  aL , b2  aR . Тогда
b  x aR  x
a1  aC  aL , a2  aR  aC , поэтому r1  x  b1  x  aL , r2  2
. Эти функ
a2
aR  aC
a1
aC  aL
ции и определят функцию принадлежности нечеткого треугольного числа
a   aL , aC , aR  , где aL  b1, aR  b2 , aC  a1  b1  b2  a2 .
26
На основе полученных формул составим программу преобразования нечетких
треугольных чисел в Maxima.
1) Преобразование от a   aL , aC , aR  к u   u  r  , u  r  
kill(all)$
- Ввод треугольного числа a=(aL, aC, aR), aL<aC<aR
aL: 0$ aC: 2$ aR: 5$
a: [aL,aC,aR];
- Преобразование треугольного числа a=(aL, aC, aR) к u=(u1(r), u2(r))
u1: (a[2]−a[1])·r+a[1]$ u2: a[3]−(a[3]−a[2])·r$
u=[u1,u2];
- График функции принадлежности a=(aL, aC, aR) (рисунок 6)
w(x):=if (x<aL) then 0 else if (x<aC) then ((x−aL)/(aC−aL))
else if (x<aR) then (aR−x)/(aR−aC) else 0$
plot2d(w(x),[x,a[1]−1,a[3]+1],nobox, grid2d,
[yx_ratio, 1], [axes, solid], [xtics, a[1], 1, a[3]],
[ytics, −1, 0.2, 1], [label, ["x", aC+0.5, −0.1],
["w", −0.8, 0.5]], [title, "Треугольноечисло a"]);
- Графики граничных функций u=(u1(r), u2(r)) (рисунок 7)
plot2d([u1,u2], [r,0,1],nobox, grid2d,
[yx_ratio, 1], [axes, solid], [xtics, −1, 0.5, 2],
[ytics, 1, 1, 6], [label, ["x", 2.9, −0.3],
["x^2-1", 0.1, 8]], [title, "Треугольноечисло u"]);
27
Рисунок 6 – График функции принадлежности a=(aL, aC, aR)
Рисунок 7 – Графики граничных функций u=(u1(r), u2(r))
2) Преобразование от u   u  r  , u  r   к a   aL , aC , aR 
28
-
Задаем
u   u  r  , u  r     a1r  b1 , b2  a2 r  , где
0  r  1,
a1  0, a2  0,
u  r   u  r  , u 1  u 1 .
1. Ввод треугольного числа u=(u1(r),u2(r))=(a1*r+b1,b2-a2*r)=(a1*r+b1,a2-a1-b1-a2*r)
a1>0, a2>0
a1: 3$ a2: 2$ b1: −3$ b2: a2−a1−b1$
u: [a1·r+b1,a2−a1−b1−a2·r];
2. Преобразование треугольного числа u=(u1(r),u2(r)) к a=(aL, aC, aR)
aL: b1$ aR: b2$ aC: a1+b1$
a:[aL,aC,aR];
4. Графики граничных функций (рисунок 8)
plot2d([u[1], u[2]],[r,0,1],nobox, grid2d,
[yx_ratio, 1], [axes, solid], [xtics, 0, 1, 6],
[ytics, 1, 1, 6], [label, ["x", 2.9, −0.3],
["x^2-1", 0.1, 8]], [title, "Треугольноечисло u"]);
Рисунок 8 – Графики граничных функций u=(u1(r), u2(r))
29
3. График функции принадлежности a=(aL, aC, aR) (рисунок 9)
w(x):=if (x<aL) then 0 else if (x<aC) then ((x−aL)/(aC−aL))
else if (x<aR) then (aR−x)/(aR−aC) else 0;
plot2d(w(x),[x,a[1]−1,a[3]+1],nobox, grid2d,
[yx_ratio, 1], [axes, solid], [xtics, a[1], 1, a[3]],
[ytics, −1, 0.2, 1], [label, ["x", aC+0.5, −0.1],
["w", −0.8, 0.5]], [title, "Треугольное число a"]);
Рисунок 9 - График функции принадлежности a=(aL, aC, aR)
1.3 Постановка задачи решения нечеткой системы линейных уравнений
Нечеткой системой линейных алгебраических уравнений будем называть систему вида
AX  Y ,
(1.21)
 
где A  aij , i, j  1,2,..., n, aij  R – четкая матрица, X T   x1 , x2 ,..., xn  – нечеткий
вектор неизвестных, Y T   y1 , y2 ,...., yn  – известный нечеткий вектор правых частей.
30
Нечеткий
вектор
X T   x1 , x2 ,..., xn  ,
заданный
нечеткими
числами
xi   xi  r  , xi  r   называется решением нечеткой системы линейных алгебраических
уравнений AX  Y , если
n
n
n
n
 aij x j   aij x j  yi ,  aij x j   aij x j  yi .
j 1
j 1
j 1
(1.22)
j 1
В частности, если все aij  0 , то получаются две обычные системы линейных
алгебраических уравнений
n
 aij x j  yi ,
j 1
n
 aij x j  yi
(1.23)
j 1
Так как в общем случае условие aij  0 не выполняется, то в уравнениях могут
присутствовать как xi , так и x j . Чтобы учесть разные знаки коэффициентов используем алгоритм решения изложенный в [2]. Для этого составим новую систему с расширенной матрицей коэффициентов S
SU  V ,
(1.24)
где
 B
S 
 A B
aij , aij  0,
A B
, B  bi, j , bij  
B 
 0, aij  0.
 


U T   x1 ,..., xn ,  x1,...,  xn  , V T  y1,..., yn ,  y1,...,  yn .
(1.25)
Для такой системы левые граничные функции формируются из функций x j с


положительными коэффициентами и функций  x j с отрицательными коэффициентами. Аналогично для правых граничным функций.
1.4 Работа в системе компьютерной алгебры Maxima.
Maxima – это свободно распространяемая программа компьютерной математики для символьных и численных вычислений. Отметим основные сведения о работе
31
с программой. Предшественницей Махimа была одна из первых систем компьютерной алгебры Масsуmа, появившаяся еще в 1960-х годах на больших ЭВМ. Работу над
ней по заданию Министерства энергетики США вел Массачусетский технологический институт. Система создавалась на языке искусственного интеллекта Lisр.
Университетская разработка, несмотря на ее фундаментальное значение, не
смогла выдержать конкуренцию с коммерческими системами компьютерной алгебры
для персональных компьютеров Маplе и Маthematiса, которые заняли первые места
на рынке таких систем, развиваемых крупными коллективами ученых, математиков
и программистов. И тогда один из главных разработчиков, профессор Техасского университета Уильям Шелтер получил от DОЕ разрешение на открытую публикацию
кода программы с лицензией СРLпод именем Махimа. Он же долгое время разрабатывал как саму Махimа, так и один из диалектов языка Lisр — GСL, на котором и
разрабатывалась эта система. После смерти Уильяма Шелтера в 2001 году развитие
Мах1та было продолжено его последователями во главе с Джеймсом Эмундсоном.
Как система компьютерной алгебры Maxima обладает следующими возможностями:
 операции с полиномами (манипуляция рациональными и степенными выражениями, вычисление корней и т. п.);
 вычисления с элементарными функциями;
 вычисления со специальными функциями, включая эллиптические функции
и интегралы;
 вычисление пределов и производных;
 аналитическое вычисление определенных и неопределенных интегралов;
 решение интегральных уравнений;
 решение алгебраических уравнений и их систем;
 операции со степенными рядами и рядами Фурье;
 операции с матрицами и списками;
 решение большого числа задач линейной алгебры;
 решение задач интерполяции и приближения различных видов зависимости;
32
 статистические вычисления и реализация метода наименьших квадратов;
 операции с тензорами;
 функции теории чисел, теории групп и абстрактной алгебры;
 2D и 3D графическая визуализация.
Ныне Махimа с графическим интерфейсом пользователя wxMaxima (рис. 10)
открыто распространяется под лицензией СРL и доступна пользователям компьютеров с различными операционными системами.
Рисунок 10 – Интерфейс программы wxMaxima
Достоинствами wxMaxima являются:
- возможность графического вывода формул;
- упрощенный ввод наиболее часто используемых функций (через диалоговые
окна);
- возможность включения графических иллюстраций непосредственно в текст
рабочей книги (при использовании формата wxMaxima).
Работа в wxMaxima осуществляется посредством ячеек ввода и ячеек вывода
(рисунок 11). Тип ячеек ввода выбирается согласно поставленной цели [16].
33
Рисунок 11 – Выбор типа ячейки
Ячейки Math предназначены для выполнения математических операций,
остальные ячейки используются для текстового оформления.
В ячейках математического стиля можно использовать текстовый комментарий
в виде выделенного фрагмента /* комментарий */.
Работа с ячейками Math
Для выполнения математических операций используются обычные знаки математических операций: + сложение; – вычитание; * умножение; / деление; ^ возведение в степень.
Каждая ячейка математического ввода и вывода нумеруется с помощью обозначений, например,%i7 – ячейка ввода с номером 7; %о7 – ячейка вывода с номером 7.
Данные ячеек вывода можно использовать в последующих вычислениях, указав их адрес.
Для того чтобы выполнить действия в ячейке ввода нужно нажать комбинацию
Shift+Enter. При этом в ячейке ввода можно записать сразу несколько действий, каждое из которых нужно завершить либо «;»– точкой с запятой, либо знаком $. При этом
знак $ блокирует вывод [17].
34
Работа с переменными
Переменные определяются своими именами. Имена переменных задаются
наборами букв и цифр. При этом различаются прописные и строчные буквы. В качестве переменной может выступать любой объект [18].
Присвоение значения переменным осуществляется с помощью знака двоеточие
a: 3. Удаление значения выполняется с помощью команды kill(a).
Чтобы удалить все присвоения используют команду kill(all).
Работа с функциями
Имеются функций различного вида:
˗ встроенные математические функции sin(x), abs(x) и т.д.;
˗ функции пользователя.
Для задания функции пользователя нужно задать имя функции, не совпадающей с резервированными именами, и записать выражение, определяющее эту функцию, например
 %i1 y  x  : x ^ 2  4  x  1; – задание функции;
 %o1 y  x  : x ^ 2  4  x  1 – ячейка вывода функции;
 %i2 y  2  y 1; – сумма значений функции;
 %o2  5 – вывод результата суммы значений.
Кроме перечисленных выше операций система Maxima имеет огромное количество средств решения самых различных математических задач [19]. С этими средствами можно ознакомиться в справочном разделе программы. Далее выделим те
средства, которые будут нужны для разработки программы решения нечеткой задачи
линейного программирования [20].
35
1.5 Инструменты системы компьютерной алгебры Maxima для решения
нечетких систем линейных уравнений
Выделим инструменты системы компьютерной алгебры Maxima необходимые
для решения нечетких систем линейных уравнений. Для выделения этих инструментов определим действия, которые должны выполняться при решении задач (табл. 2).
Таблица 2 — Функции Maxima для решения задачи
Необходимое действие
ИнструментарийMaxima
Задание матрицы системы
A:matrix([a11,a12],[a21,a22])
Формирование расширенной матрицы
добавлением строк и столбцов
Определение нечетких чисел в параметрическом виде
Транспонирование матрицы
addrow(A,B); addcol(A,B);
[u1(r),u2(r)]
transpose( A)
Решение системы линейных уравнений с
помощью обратной матрицы
Построение параметрических графиков
нечетких чисел
36
A^^(-1) . B
wxplot2d([x1(r),x2(r)],[r,0,1])
2 Специальная часть
2.1 Техническое задание
Разработать программное обеспечение для решения нечетких систем линейных
уравнений в Maxima.
2.1.1 Основание для разработки
Получение навыков в решении математических задач с помощью пакетов компьютерной математики. Получение программного обеспечения решения нечетких систем линейных уравнений в Maxima.
2.1.2 Назначение разработки
Разработка готового информационного продукта в сфере образования, прикладных математических задач и программного обеспечения.
2.1.3 Требования к информационному продукту
На этапе разработки были составлены следующие требования к разрабатываемому информационному продукту:
˗ наличие графического интерфейса;
˗ простота и удобство использования;
˗ возможность загрузки исходных данных;
˗ возможность сохранения результатов анализа;
˗ быстродействие и надёжность выполнения программ решения нечеткой системы линейных уравнений.
37
2.1.4 Стадии и этапы разработки
Таблица 3— Стадии и этапы разработки
Исполнитель этапа
Содержание работ
Срок
Изучение теоретической базы знаний
1-4 неделя
Найданов К.В.
Подбор методов для выполнения задания
5-6 неделя
Найданов К.В.
Выработка технического задания
7 неделя
Найданов К.В.
Выбор программных инструментов
8 неделя
Найданов К.В.
Разработка графического интерфейса
9-11 неделя
Найданов К.В.
Алгоритмизация программы
12-19 неделя
Найданов К.В.
Обработка исключительных ситуаций
20-21 неделя
Найданов К.В.
22 неделя
Найданов К.В.
Сдача и защита выпускной квалификационной работы
разработки
После составления технического плана необходимо по заданному порядку выполнить все описанные в нём этапы разработки, не допуская просрочки сроков.
2.2 Выбор и обоснование инструментов для выполнения проекта
Исходя из требований технического задания к разрабатываемому продукту,
были выделены следующие инструменты для выполнения проекта.
2.2.1 Среда разработки
В качестве среды разработки используется система компьютерной математики
Maxima.
2.2.2 Обоснование инструментов для выполнения проекта
38
Maxima представляет собой доступную некоммерческую систему компьютерной математики, которая представляет собой интегрированную среду со встроенными математическими функциями и подпрограммами решения стандартных математических задач и собственным языком программирования.
2.3 Постановка и алгоритм решения нечетких систем линейных уравнений методом расширения
Нечеткой системой линейных алгебраических уравнений будем называть систему вида
AX  Y ,
(2.1)
 
где A  aij , i, j  1,2,..., n, aij  R – четкая матрица, X T   x1 , x2 ,..., xn  – нечеткий
вектор неизвестных, Y T   y1 , y2 ,...., yn  – известный нечеткий вектор правых частей.
Определение 2.1. Нечеткий вектор X T   x1 , x2 ,..., xn  , заданный нечеткими
числами xi   xi  r  , xi  r   называется решением нечеткой системы линейных алгебраических уравнений AX  Y , если
n
n
n
n
 aij x j   aij x j  yi ,  aij x j   aij x j  yi .
j 1
j 1
j 1
(2.2)
j 1
В частности, если все aij  0 , то получаются две обычные системы линейных
алгебраических уравнений
n
n
 aij x j  yi ,  aij x j  yi
j 1
(2.3)
j 1
Так как в общем случае условие aij  0 не выполняется, то в уравнениях систем
(2.3) могут присутствовать как xi , так и x j . Чтобы учесть разные знаки коэффициентов используем алгоритм решения, изложенный в [2]. Для этого составим новую систему с расширенной матрицей коэффициентов S
SU  V ,
39
(2.4)
где
 B
S 
 A B
aij , aij  0,
A B
, B  bi, j , bij  
B 
 0, aij  0.
 


U T   x1 ,..., xn ,  x1,...,  xn  , V T  y1,..., yn ,  y1,...,  yn .
(2.5)
Для такой системы левые граничные функции формируются из функций x j с


положительными коэффициентами и функций  x j с отрицательными коэффициентами. Аналогично для правых граничным функций.
2.4 Реализация алгоритма решения нечетких систем линейных уравнений
для разработки программы в Maxima
В качестве примера применения пакета Maxima рассмотрим решение следующей нечеткой системы линейных алгебраических уравнений
 x1  2 x2  y1,

2 x1  x2  y2 ,
(2.6)
где y1   r , 2  r , y2   4  r ,7  2r , 0  r  1 – нечеткие правые части системы.
Через нечеткие числа эта система запишется так
  x1, x1   2   x2 , x2    r ,2  r ,





2   x , x    x , x   4  r ,7  2r .

  1 1  2 2  
(2.7)
Сформируем обычную систему относительно нечетких неизвестных и нечетких

 

правых частей x1, x2 ,  x1,  x2 , y1, yn ,  y1,  y2 в соответствии с системой (2.7)
x1  2 x2  r ,


 2 x1    x2   4  r ,

  x1   2   x2     2  r  ,
 2   x   x    7  2r  .
1
2

Реализуем теперь этот подход в пакете Maxima.
Зададим матрицу коэффициентов системы
40
(2.8)
A:matrix([1,2],[2,-1]);B:A-A$
1 2 
 2 1  .


Сформируем расширенную матрицу
fori:1thru2do (
for j:1 thru 2 do(
if A[i][j]>=0 then B[i][j] :A[i][j]))$
C:B-A$S1:addrow(B,C)$S2:addrow(C,B)$S:addcol(S1,S2);
1
2

0

0
2 0 0
0 0 1 
0 1 2

1 2 0
X:apply('matrix, [[x11,x21,-x12,-x22]]);
 x11
x21  x12  x22 
Зададим правые части в виде нечетких чисел
Y1: [[r,2-r], [4+r,7-2*r]];
[[r,2  r ],[r  4,7  2r ]]
Сформируем матрицу-столбец правых частей расширенной системы
Y:transpose( [Y1[1][1],Y1[2][1],-Y1[1][2],-Y1[2][2]]);
 r 
 r4 


 r2 


 2r  7 
Найдем решение в Maxima с помощью обратной матрицы
Z:ratsimp(S^^(-1) . Y);
41
 7 r  26 
 15 


 4r  13 
 15 


 13r  46 
 15 
 r 8 


 15 
Выделим решение в виде нечетких чисел
X1: [Z[1],-Z[3]]; X2: [Z[2],-Z[4]];
[[
7r  26
13r  46
4r  13
r 8
],[
]] , [[
],[ 
]]
15
15
15
15
Построим графики граничных функций для полученных нечетких чисел
wxplot2d([X1[1][1],X1[2][1],X2[1][1],X2[2][1]],[r,0,1]);
Рисунок 12 – Графики функций u  r  и u  r  решения системы
Определяем функции принадлежности решения системы
X12: [solve(x=X1[1][1],r),solve(x=X1[2][1],r)];
X22: [solve(x=X2[1][1],r),solve(x=X2[2][1],r)];
[[r 
15 x  26
15 x  46
],[r  
]]
7
13
[[r 
15 x  13
],[r  15 x  8]]
4
42
X13:[ rhs(X12[1][1]),rhs(X12[2][1])];
X23:[ rhs(X22[1][1]),rhs(X22[2][1])];
15 x  26 15 x  46
[
,
]
7
13
15 x  13
[
, 15 x  8]
4
X14: [max(min(X13[1],1),0),max(min(X13[2],1),0)];
X24: [max(min(X23[1],1),0),max(min(X23[2],1),0)];


 15 x  26  
 15 x  46  
[max  0, min 1,
  , max  0, min 1, 
 ]
7
13  






 15 x  13  
[max  0, min 1,
  , max  0, min 1, 15 x  8 ]
4



X14[1];X24[2];

 15 x  26  
max  0, min 1,

7



max  0, min 1, 15x  8 
Построим графики функций принадлежности решения системы
wxplot2d([X14[1],X14[2],X24[1],X24[2]],[x,-2,5]);
Рисунок 13 – Графики функций принадлежности решения
X10:solve(X13[1]=1,x);float(rhs(X10[1]));X20:solve(X23[1]=1,x);float(rhs(X20[1]));
43
11 
3
или
,
2.2
 5 
 5  или 0.6 .
Итак, решениями системы являются нечеткие числа
x1  [[
7r  26
13r  46
4r  13
r 8
],[
]] и x2  [[
],[
]].
15
15
15
15
Графическое представление нечетких чисел изображено на рисунках 1 и 2.
Дефаззификация нечетких чисел дает x1  2, 2; x2  0,6 .
2.5 Примеры решения нечетких систем линейных уравнений в Maxima
В качестве конкретныхпримеров решим следующие задачи, связанные с решение нечетких систем линейных уравнений.
2.5.1 Нечеткая задача для дифференциального уравнения второго
порядка
Пусть требуется решить линейное однородное дифференциальное уравнение
второго порядка с нечеткими начальными условиями
y  p  x  y  q  x  y  0, y  x0   y0 , y  x0   y0 ,



(2.9)

где y0  y0 , y0 и y0  y0 , y0 – заданные нечеткие числа.
Известно, что общее решение линейного однородного дифференциального
уравнения второго порядка записывается в виде
y  C1 y1  C2 y2 ,
(2.10)
где y1  x  и y2  x  – линейно независимые решения однородного уравнения, образующие фундаментальную систему решений. Подставляя нечеткие начальные условия в общее уравнение, получаем нечеткую систему линейных уравнений
44
C1 y1  x0   C2 y2  x0   y0 ,

C1 y1  x0   C2 y2  x0   y0 ,



(2.11)

где постоянные C1  C 1 , C 1 и C2  C 2 , C 2 являются нечеткими числами.
Аналогично получаем нечеткую систему линейных уравнений для неоднородного дифференциального уравнений второго порядка
 C1 y1  x0   C2 y2  x0   y0  y *  x0  ,

C1 y1  x0   C2 y2  x0   y0  y *  x0  .
(2.12)
В качестве примера решим в программе Maxima следующую нечеткую задачу
Коши для обыкновенного дифференциального уравнения второго порядка
y  2 y  3 y  0, y  0    2  2r , 2  2r  , y  0   1  r ,3  r  , 0  r  1 (2.13)
Решение. Сначала решаем дифференциальное уравнение. Используем программу Maxima.
Задаем дифференциальное уравнение
de2:'diff(y(x),x,2)+2·'diff(y(x),x)−3·y(x)=0;
d2
d

y(
x
)

2
y(
x
)

  3 y( x)  0 .
2
dx
dx


Решаем уравнение с помощью встроенной функции ode2( )
resh:ode2(de2,y(x),x);
y( x)  %k1%e x  %k 2%e3 x .
Переобозначим произвольные постоянные через x1, x 2 . В дальнейшем они
будут являться искомыми нечеткими числами в нечеткой системе линейных уравнений
resh1:subst([%k1=x1,%k2=x2],rhs(resh));
%e3 x x2  %e x x1 .
Дифференцируем полученное решения, чтобы задать начальное условие для
производной
45
resh2:diff(resh1,x);
%e x x1  3%e3 x x 2 .
Определяем левые части нечетких начальных условий
eq1:subst(x=0,resh1); eq2:subst(x=0,resh2);
x 2  x1 , x1  3x2 .
Применим составленную программу решения нечеткой системы линейных
уравнений для нахождения произвольных постоянных.
Зададим матрицу коэффициентов по найденным левым частям начальных
условий
A:matrix([1,1],[1,−3]);B:A−A$
1 1 
1 3 


Определим размерность матрицы коэффициентов
n:length(A);
2
Сформируем расширенную матрицу
fori:1thru2do (
for j:1 thru 2 do(
if A[i][j]>=0 then B[i][j] :A[i][j]))$
C:B−A$S1:addrow(B,C)$S2:addrow(C,B)$S:addcol(S1,S2);
1
1

0

0
1 0 0
0 0 3

0 1 1

3 1 0
Зададим список неизвестных нечеткой системы
X:apply('matrix, [[x11,x21,−x12,−x22]]);
 x11
x21  x12  x22 
Зададим в программе правые части в виде нечетких чисел, заданных в условии
Y1: [[−2+2·r,2−2·r], [1+r,3−r]];
46
[[2r  2, 2  2r ],[r  1,3  r ]]
Y:transpose( [Y1[1][1],Y1[2][1],−Y1[1][2],−Y1[2][2]]);
 2r  2 
 r 1 


 2r  2 


 r 3 
Определим решение нечеткой системы линейных уравнений с помощью обратной матрицы
Z:ratsimp(S^^(−1) . Y);
 5r  4 
 2 


r
 


2 
 5r  6 


 2 
 r 2



2 
Для определения вида решения подставим промежуточные значения для проверки
Z1:[subst(r=1,Z[1]),subst(r=1,Z[2]),subst(r=1,−Z[3]),subst(r=1,−Z[4])];
Z2:[subst(r=0.5,Z[1]),subst(r=0.5,Z[2]),subst(r=0.5,−Z[3]),subst(r=0.5,−Z[4])];
1
1 1
1
[[ ],[ ],[ ],[  ]] , [[0.75],[ 0.25],[1.75],[ 0.75]]
2
2 2
2
Проверка условий между частями полученных решений и формирование решений в виде нечетких чисел дает
if Z1[1][1]>=Z2[1][1] and Z1[1][1]<=Z2[3][1] then X1: [Z[1],−Z[3]];
if Z1[2][1]>=Z2[2][1] and Z1[2][1]<=Z2[4][1] then X2: [Z[2],−Z[4]];
[[
5r  4
5r  6
],[
]]
2
2
false
47
if Z1[1][1]>=Z2[3][1] and Z1[1][1]<=Z2[1][1] then X1: [−Z[3],Z[1]];
if Z1[2][1]>=Z2[4][1] and Z1[2][1]<=Z2[2][1] then X2: [−Z[4],Z[2]];
(%o17)
false
[[
r 2
r
],[ ]]
2
2
if Z1[1][1]<=Z2[1][1] and Z2[1][1]<=Z2[3][1] then X1: [Z1[1],−Z[3]];
if Z1[2][1]<=Z2[2][1] and Z2[2][1]<=Z2[4][1] then X2: [Z1[2],−Z[4]];
(%o19)
false
(%o20)
false
if Z1[1][1]<=Z2[3][1] and Z2[3][1]<=Z2[1][1] then X1: [Z1[1],Z[1]];
if Z1[2][1]<=Z2[4][1] and Z2[4][1]<=Z2[2][1] then X2: [Z1[2],Z[2]];
(%o21)
false
(%o22)
false
if Z2[1][1]<=Z2[3][1] and Z2[3][1]<=Z1[1][1] then X1: [Z[1],Z1[1]];
if Z2[2][1]<=Z2[4][1] and Z2[4][1]<=Z1[2][1] then X2: [Z1[2],Z1[2]];
(%o23)
false
(%o24)
false
if Z2[3][1]<=Z2[1][1] and Z2[1][1]<=Z1[1][1] then X1: [−Z[3],Z1[1]];
if Z2[4][1]<=Z2[2][1] and Z2[2][1]<=Z2[2][1] then X2: [Z[2],Z1[2]];
false
r
1
[[ ],[  ]]
2
2
Запишем вид решения по сформированному ответу
print("X1=",X1)$ if Z1[1][1]>Z2[1][1] and Z1[1][1]<Z2[3][1] the
print("Сильное решение по х1") elseprint("Слабое решение по х1")$
X 1  [[
5r  4
5r  6
],[ 
]]
2
2
Сильное решение по х1.
print("X2=",X2)$ ifZ1[2][1]>Z2[2][1] andZ1[2][1]<Z2[4][1] then
print("Сильное решение по х2") elseprint("Слабое решение по х2")$
48
r
1
X 2  [[ ],[  ]]
2
2
Слабое решение по х2.
Таким образом, решение нечеткой задачи Коши для заданного дифференциального уравнения имеет вид
 5r  4 6  5r  x  r 1  3 x
y( x)  
,
e   ,   e .

2
2


 2 2
Построим график решения в виде параметрического задания нечетких чисел
(рисунок 13)
wxplot2d([X1[1][1],X1[2][1],X2[1][1],X2[2][1]],[r,0,1]);
Рисунок 14 – График решения в параметрическом виде
Определим функции принадлежности полученных решений
ifX1[1][1] −X1[2][1] =0thenX12: [[x=X1[1][1]],[x=X1[2][1]]]
elseifdiff(X1[1][1],r)=0 and diff(X1[2][1],r)#0
then X12: [[x=X1[1][1]],solve(x=X1[2][1],r)]
elseifdiff(X1[1][1],r)#0 and diff(X1[2][1],r)=0
then X12: [solve(x=X1[1][1],r),[x=X1[2][1]]]
49
else X12: [solve(x=X1[1][1],r),solve(x=X1[2][1],r)];
[[r 
2x  4
2x  6
],[r  
]]
5
5
if X2[1][1] −X2[2][1] =0 then X22: [[x=X2[1][1]],[x=X2[2][1]]]
elseifdiff(X2[1][1],r)=0 and diff(X2[2][1],r)#0
then X22: [[y=y+x−X2[1][1]], solve(x=X2[2][1],r)]
elseifdiff(X2[1][1],r)#0 and diff(X2[2][1],r)=0
then X22: [solve(x=X2[1][1],r), [y=y+x−X2[2][1]]]
else X22: [solve(x=X2[1][1],r), solve(x=X2[2][1],r)];
1
[[r  2 x],[ y  y  x  ]]
2
X13:[ rhs(X12[1][1]),rhs(X12[2][1])];X23:[ rhs(X22[1][1]),rhs(X22[2][1])];
[
2x  4 2x  6
,
]
5
5
1
[2 x, y  x  ]
2
Сформируем данные для построение графиков функций принадлежности
X14: [max(min(X13[1],1),0),max(min(X13[2],1),0)];
X24: [max(min(X23[1],1),0),max(min(X23[2],1),0)];
2x  6  


 2x  4  

[max  0, min 1,
,
max
0,
min
1,



 ],

5  
5  




1 


[max  0, min 1, 2 x   , max  0, min 1, y  x   ]
2 


Определим промежутка построения графиков функций принадлежности
if diff(X13[1],x)=0 then a1:subst(y=0, [X13[1]−1])
else a1:solve(X13[1]=0,x)$a11:subst(y=0,rhs(a1[1])−1)$
if diff(X13[2],x)=0 then b1:subst(y=0,[X13[2]+1])
else b1:solve(X13[2]=0,x)$b11:subst(y=0,rhs(b1[1])+1)$
if diff(X23[1],x)=0 then a2:subst(y=0,[X23[1]−1])
50
else a2:solve(X23[1]=0,x)$a22:subst(y=0,rhs(a2[1])−1)$
if diff(X23[2],x)=0 then b2:subst(y=0,[X23[2]+1])
else b2:solve(X23[2]=0,x)$b22:subst(y=0,rhs(b2[1])+1)$
a:apply(min,[a11,a22]) b:apply(max,[b11,b22]);
Построим графики функций принадлежности (рисунок 14)
wxdraw2d([implicit(y−X13[1]=0,x,a,b,y,0,1),implicit(y−X13[2]=0,x,a,b,y,0,1),
implicit(y−X23[1]=0,x,a,b,y,0,1),implicit(y−X23[2]=0,x,a,b,y,0,1)] );
Рисунок 15 – Графики функций принадлежности решения
По графику 14 можно определить  - уровневые решения нечеткой задачи
Коши.
Проведем дефаззификацию полученных решений по методу максимума
if diff(X13[1],x)=0 then X10: [X13[1]]
else X10:solve(X13[1]=1,x)$x1:'x1=rhs(X10[1]);
if diff(X23[1],x)=0 then X20: [X23[1]]
else X20:solve(X23[1]=1,x)$x2:'x2=rhs(X20[1]);
1
1
x1  , x 2   .
2
2
51
Используя полученные значения дефаззификации, запишем четкое решение
1 x 1 3 x
 5r  4 6  5r  x  r 1  3 x
y( x)  
,
e


,

e

y(
x
)

e  e .



2 
2
2
 2
 2 2
Сравним теперь решение заданного дифференциального уравнения с нечеткими начальными условиями с решением соответствующего дифференциального
уравнения с четкими начальными условиями. Так как задание нечетких чисел в виде
y  0    2  2r , 2  2r  , y  0   1  r ,3  r  , 0  r  1
означает, что значение искомой функции в нуле равно «примерно 0», а значение первой производной искомой функции в нуле равно «примерно 2», то решим при этих
условиях заданное уравнение.
Применяя программу Maxima, получаем
de2:'diff(y(x),x,2)+2·'diff(y(x),x)−3·y(x)=0;
d2
d

y(
x
)

2
 y( x)   3 y( x)  0
2
dx
 dx

resh:ode2(de2,y(x),x);
y( x)  %k1%e x  %k 2%e3 x
ic2(resh,x=0,y(0)=0,'diff(y(x),x)=2);
%e x %e3 x
.
y( x) 

2
2
Как видим, это решение совпадает с решением, полученным при дефаззификации полученного нечеткого решения.
2.5.2Нечеткая задача вариационного исчисления
Требуется решить простейшую вариационную задачу с нечеткими граничными
условиями
b
V  y    F  x, y, y  dx  extr , y  a   ya , y  b   yb ,
a
52
(2.14)




где ya  ya , yb и yb  yb , yb – заданные нечеткие числа.
В случае, когда уравнение Эйлера является дифференциальным уравнением
второго порядка, то решение нечеткой простейшей задачи вариационного исчисления
приводится к решению нечеткой линейной системы уравнений.
Для примера рассмотрим следующую нечеткую простейшую задачу вариационного исчисления.
1


V [ y ]   y2  xy dx ,
(2.15)
0
y  0    2  2r , 2  2r  , y 1  [1  r ,1  r ], 0  r  1.
(2.16)
Выполним решение этой задачи в программе Maxima.
Сначала найдем решение в программе Maxima общее решение уравнения Эйлера для данной вариационной задачи.
Очистка предыдущих вычислений
kill(all)$
Ввод подынтегральной функции, где y=u, y'=v
f:v^2+x·u;
ux  v 2
Подпрограмма решения уравнения Эйлера
pvz(f):=block(
fu:diff(f,u),
Fu:subst([u=y(x),v='diff(y(x),x)],fu),
fv:diff(f,v),
fvx:diff(fv,x),
Fxx:subst([u=y(x),v='diff(y(x),x)],fvx),
fvu:diff(fv,u),
Fvu:subst([u=y(x),v='diff(y(x),x)],fvu),
Fux:Fvu·'diff(y(x),x),
fvv:diff(fv,v),
53
Fvv:subst([u=y(x),v='diff(y(x),x)],fvv),
Fvx:Fvv·'diff(y(x),x,2),
eq:Fu−Fux−Fxx−Fvx=0,
esh:ode2(eq,y(x),x),
[eq, resh] )$
ans:pvz(f)$
Уравнение Эйлера
ans[1];
 d2

x  2  2 y( x)   0
 dx

Решение уравнения Эйлера
ans[2];
x3
y( x)   %k 2 x  %k1
12
Далее используем граничные условия для составления нечеткой системы линейных уравнений аналогично решению нечеткой задачи Коши для дифференциального уравнения второго порядка.
resh:subst([%k1=x1,%k2=x2],rhs(ans[2]));
x3
x x 2  x1 
12
eq1:subst(x=0,resh);
x1
eq2:subst(x=1,resh);
x 2  x1 
1
12
Задание матрицы коэффициентов
A:matrix([1,0],[1,1]);B:A−A$
1 0 
1 1 


54
Определение размерности матрицы коэффициентов
n:length(A);
2
Формирование расширенной матрицы
for i:1 thru 2 do ( forj:1thru2do(
if A[i][j]>=0 then B[i][j] :A[i][j]))$
C:B−A$S1:addrow(B,C)$S2:addrow(C,B)$S:addcol(S1,S2);
1
1

0

0
0 0 0
1 0 0

0 1 0

0 1 1
Определение списка неизвестных нечеткой системы
X:apply('matrix, [[x11,x21,−x12,−x22]]);
 x11
x21  x12  x22 
Задание правых частей в виде нечетких чисел
Y1: [[−2+2·r,2−2·r], [−1+r−1/12,1−r−1/12]];
[[2r  2, 2  2r ],[r 
13 11
,  r ]]
12 12
Y:transpose( [Y1[1][1],Y1[2][1],−Y1[1][2],−Y1[2][2]]);
 2r  2 
 13 
r  
 12 
 2r  2 


11
r  


 12 
Определение решения НСЛУ с помощью обратной матрицы
Z:ratsimp(S^^(−1) . Y);
55
 2r  2 
 12r  11 


12


 2r  2 


12
r

13





12 
Подстановка значений для проверки вида решения
fpprintprec:4$
Z1:[subst(r=1,Z[1]),subst(r=1,Z[2]),subst(r=1,−Z[3]),subst(r=1,−Z[4])];
Z2:[subst(r=0.5,Z[1]),subst(r=0.5,Z[2]),subst(r=0.5,−Z[3]),subst(r=0.5,−Z[4])];
[[0],[
1
1
],[0],[  ]]
12
12
[[1.0],[0.4167],[1.0],[0.5833]]
Проверка условий между частями полученных решений и формирование решений в виде нечетких чисел
if Z1[1][1]>=Z2[1][1] and Z1[1][1]<=Z2[3][1] then X1: [Z[1],−Z[3]];
if Z1[2][1]>=Z2[2][1] and Z1[2][1]<=Z2[4][1] then X2: [Z[2],−Z[4]];
[[2r  2],[2  2r ]]
false
if Z1[1][1]>=Z2[3][1] and Z1[1][1]<=Z2[1][1] then X1: [−Z[3],Z[1]];
if Z1[2][1]>=Z2[4][1] and Z1[2][1]<=Z2[2][1] then X2: [−Z[4],Z[2]];
false
12r  13
12r  11
[[
],[
]]
12
12
if Z1[1][1]<=Z2[1][1] and Z2[1][1]<=Z2[3][1] then X1: [Z1[1],−Z[3]];
if Z1[2][1]<=Z2[2][1] and Z2[2][1]<=Z2[4][1] then X2: [Z1[2],−Z[4]];
false
false
if Z1[1][1]<=Z2[3][1] and Z2[3][1]<=Z2[1][1] then X1: [Z1[1],Z[1]];
56
if Z1[2][1]<=Z2[4][1] and Z2[4][1]<=Z2[2][1] then X2: [Z1[2],Z[2]];
false
false
if Z2[1][1]<=Z2[3][1] and Z2[3][1]<=Z1[1][1] then X1: [Z[1],Z1[1]];
if Z2[2][1]<=Z2[4][1] and Z2[4][1]<=Z1[2][1] then X2: [Z1[2],Z1[2]];
false
false
if Z2[3][1]<=Z2[1][1] and Z2[1][1]<=Z1[1][1] then X1: [−Z[3],Z1[1]];
if Z2[4][1]<=Z2[2][1] and Z2[2][1]<=Z2[2][1] then X2: [Z[2],Z1[2]];
false
[[
12r  11
1
],[  ]]
12
12
Определение вида решения по сформированному ответу
print("X1=",X1)$
ifZ1[1][1]>Z2[1][1] andZ1[1][1]<Z2[3][1] thenprint("Сильное решение по х1")
elseprint("Слабое решение по х1")$
X 1  [[2r  2],[2  2r ]]
Сильное решение по x1
print("X2=",X2)$
ifZ1[2][1]>Z2[2][1] andZ1[2][1]<Z2[4][1] thenprint("Сильное решение по х2")
elseprint("Слабое решение по х2")$
X 2  [[
12r  11
1
],[ ]]
12
12
Слабое решение по x 2
Построение графика решения в виде параметрического задания нечетких чисел (рисунок 15)
wxplot2d([X1[1][1],X1[2][1],X2[1][1],X2[2][1]],[r,0,1]);
57
Рисунок 16 - График решения в параметрическом виде
Определение функций принадлежности полученных решений
if X1[1][1] −X1[2][1] =0 then X12: [[x=X1[1][1]],[x=X1[2][1]]]
elseifdiff(X1[1][1],r)=0 and diff(X1[2][1],r)#0
then X12: [[x=X1[1][1]],solve(x=X1[2][1],r)]
elseifdiff(X1[1][1],r)#0 and diff(X1[2][1],r)=0
then X12: [solve(x=X1[1][1],r),[x=X1[2][1]]]
else X12: [solve(x=X1[1][1],r),solve(x=X1[2][1],r)];
[[r 
x2
x2
],[r  
]]
2
2
if X2[1][1] −X2[2][1] =0 then X22: [[x=X2[1][1]],[x=X2[2][1]]]
elseifdiff(X2[1][1],r)=0 and diff(X2[2][1],r)#0
then X22: [[y=y+x−X2[1][1]],solve(x=X2[2][1],r)]
elseifdiff(X2[1][1],r)#0 and diff(X2[2][1],r)=0
then X22: [solve(x=X2[1][1],r),[y=y+x−X2[2][1]]]
else X22: [solve(x=X2[1][1],r),solve(x=X2[2][1],r)];
58
[[r  
12 x  11
1
],[ y  y  x  ]]
12
12
X13:[ rhs(X12[1][1]),rhs(X12[2][1])];
X23:[ rhs(X22[1][1]),rhs(X22[2][1])];
[
[
x2 x2
,
]
2
2
12 x  11
1
,y x ]
12
12
Формирование данных для построение графиков функций принадлежности
(рисунок 16)
X14: [max(min(X13[1],1),0),max(min(X13[2],1),0)];
X24: [max(min(X23[1],1),0),max(min(X23[2],1),0)];
x  2 


 x  2 

[max  0, min 1,
  , max  0, min 1, 
 ]
2
2






1 


 12 x  11  

[max  0, min 1, 
  , max  0, min 1, y  x   ]
12  
12  




if diff(X13[1],x)=0 then a1:subst(y=0, [X13[1]−1])
else a1:solve(X13[1]=0,x)$a11:subst(y=0,rhs(a1[1])−1)$
if diff(X13[2],x)=0 then b1:subst(y=0,[X13[2]+1])
else b1:solve(X13[2]=0,x)$b11:subst(y=0,rhs(b1[1])+1)$
if diff(X23[1],x)=0 then a2:subst(y=0,[X23[1]−1])
else a2:solve(X23[1]=0,x)$a22:subst(y=0,rhs(a2[1])−1)$
if diff(X23[2],x)=0 then b2:subst(y=0,[X23[2]+1])
else b2:solve(X23[2]=0,x)$b22:subst(y=0,rhs(b2[1])+1)$
a:apply(min,[a11,a22])$b:apply(max,[b11,b22])$
wxdraw2d([implicit(y−X13[1]=0,x,a,b,y,0,1),implicit(y−X13[2]=0,x,a,b,y,0,1),
implicit(y−X23[1]=0,x,a,b,y,0,1),implicit(y−X23[2]=0,x,a,b,y,0,1)] );
59
Рисунок 17 - Графики функций принадлежности решения
Дефаззификация полученных решений по методу максимума
if diff(X13[1],x)=0 then X10: [X13[1]]
else X10:solve(X13[1]=1,x)$x1:'x1=rhs(X10[1]);
if diff(X23[1],x)=0 then X20: [X23[1]]
else X20:solve(X23[1]=1,x)$x2:'x2=rhs(X20[1]);
x1  0 , x 2  
1
12
2.5.3Нечеткая задача о выпуске продукции
Предприятие выпускает два вида продукции. Количество выпускаемой продук-
ции первого вида есть нечеткое число x   x, x  . Количество выпускаемой продук-


ции второго вида есть нечеткое число y  y, y . Прибыль от коммерческой деятельности формируется по формуле a11 x  a12 y , а издержки производства определяются
по формуле a21 x  a22 y , где a11 , a12 , a21 , a22 – заданные числа. Прибыль производ-
60


ства определяется как нечеткое число b1  b 1 , b 1 , а издержки производства как не-


четкое число b 2  b 2 , b 2 . Таким образом, производство продукции определяется
нечеткой системой линейных уравнений
 a11 x  a12 y  b1 ,

a21 x  a22 y  b2 .
(2.17)
Решение этой системы определяет план производства при заданных значениях
a11 , a12 , a21 , a22 и заданных значениях прибыли и издержек производства




b1  b 1 , b 1 и b 2  b 2 , b 2 .
В качестве примера рассмотрим следующую систему
10 x  5 y  b1 ,

 2 x  3 y  b2 .
(2.18)
где b1  [20r  180,220  20r ], b2  [20r  40,80  20r ] – нечеткие параметры,
определяющие значения прибыли и издержек производства.
Выполним решение этой задачи в программа Maxima.
1. Задание матрицы коэффициентов нечеткой системы линейных уравнений
kill(all)$
A:matrix([10,5],[2,3]);B:A−A$
 10 5 
 2 3


(%o1)
2. Определение размерности матрицы коэффициентов
n:length(A);
(%o3)
2
3. Формирование расширенной матрицы
fori:1thru2do (
for j:1 thru 2 do(
if A[i][j]>=0 then B[i][j] :A[i][j]))$
C:B−A$S1:addrow(B,C)$S2:addrow(C,B)$S:addcol(S1,S2);
61
10
2

0

0
(%o8)
0
3 0 0 
0 10 5 

0 2 3
5
0
4. Определение списка неизвестных нечеткой системы
X:apply('matrix, [[x11,x21,−x12,−x22]]);
 x11,
(%o9)
x21,  x12,  x 22 
5. Задание правых частей в виде нечетких чисел
Y1: [[180+20·r,220−20·r], [40+20·r,80−20·r]];
(%o10)
[[20r  180,220  20r ][20r  40,80  20r ]]
Y:transpose( [Y1[1][1],Y1[2][1],−Y1[1][2],−Y1[2][2]]);
(%o11)
 20r  180 
 20r  40 


 20r  220 


 20r  80 
6. Определение решения НСЛУ с помощью обратной матрицы
Z:ratsimp(S^^(−1) . Y);
(%o12)
 17  2r 
 8r  2 


 2r  13 


 8r  18 
7. Подстановка значений для проверки вида решения
Z1:[subst(r=1,Z[1]),subst(r=1,Z[2]),subst(r=1,−Z[3]),subst(r=1,−Z[4])];
Z2:[subst(r=0.5,Z[1]),subst(r=0.5,Z[2]),subst(r=0.5,−Z[3]),subst(r=0.5,−Z[4])];
(%o13)
[[15][10][15][10]]
(%o14)
[[16.0][6.0][14.0][14.0]]
8. Проверка условий между частями полученных решений и формирование решений в виде нечетких чисел
62
if Z1[1][1]>=Z2[1][1] and Z1[1][1]<=Z2[3][1] then X1: [Z[1],−Z[3]];
if Z1[2][1]>=Z2[2][1] and Z1[2][1]<=Z2[4][1] then X2: [Z[2],−Z[4]];
(%o15)
(%o16)
false
[[8r  2][18  8r ]]
if Z1[1][1]>=Z2[3][1] and Z1[1][1]<=Z2[1][1] then X1: [−Z[3],Z[1]];
if Z1[2][1]>=Z2[4][1] and Z1[2][1]<=Z2[2][1] then X2: [−Z[4],Z[2]];
(%o17)
[[2r  13][17  2r ]]
(%o18)
false
if Z1[1][1]<=Z2[1][1] and Z2[1][1]<=Z2[3][1] then X1: [Z1[1],−Z[3]];
if Z1[2][1]<=Z2[2][1] and Z2[2][1]<=Z2[4][1] then X2: [Z1[2],−Z[4]];
(%o19)
false
(%o20)
false
if Z1[1][1]<=Z2[3][1] and Z2[3][1]<=Z2[1][1] then X1: [Z1[1],Z[1]];
if Z1[2][1]<=Z2[4][1] and Z2[4][1]<=Z2[2][1] then X2: [Z1[2],Z[2]];
(%o21)
false
(%o22)
false
if Z2[1][1]<=Z2[3][1] and Z2[3][1]<=Z1[1][1] then X1: [Z[1],Z1[1]];
if Z2[2][1]<=Z2[4][1] and Z2[4][1]<=Z1[2][1] then X2: [Z1[2],Z1[2]];
(%o23)
false
(%o24)
false
if Z2[3][1]<=Z2[1][1] and Z2[1][1]<=Z1[1][1] then X1: [−Z[3],Z1[1]];
if Z2[4][1]<=Z2[2][1] and Z2[2][1]<=Z2[2][1] then X2: [Z[2],Z1[2]];
(%o25)
false
(%o26)
false
9. Определение вида решения по сформированному ответу
print("X1=",X1)$ifZ1[1][1]>Z2[1][1] andZ1[1][1]<Z2[3][1] then
print("Сильное решение по х1")
elseprint("Слабое решение по х1")$
X1  [[2r  13][17  2r ]]
63
Слабое решение по x1
print("X2=",X2)$
ifZ1[2][1]>Z2[2][1] andZ1[2][1]<Z2[4][1] thenprint("Сильное решение по х2")
elseprint("Слабое решение по х2")$
X2  [[8r  2][18  8r ]]
Сильное решение по x 2
10. Построение графика решения в виде параметрического задания нечетких
чисел (рисунок 18)
wxplot2d([X1[1][1],X1[2][1],X2[1][1],X2[2][1]],[r,0,1]);
(%t31)
Рисунок 18– Графики нечеткого решения в параметрическом виде
(%o31)
11. Определение функций принадлежности полученных решений
if X1[1][1] −X1[2][1] =0 then X12: [[x=X1[1][1]],[x=X1[2][1]]]
elseifdiff(X1[1][1],r)=0 and diff(X1[2][1],r)#0
then X12: [[x=X1[1][1]],solve(x=X1[2][1],r)]
elseifdiff(X1[1][1],r)#0 and diff(X1[2][1],r)=0
64
then X12: [solve(x=X1[1][1],r),[x=X1[2][1]]]
else X12: [solve(x=X1[1][1],r),solve(x=X1[2][1],r)];
(%o32)
[[r 
x  13
x  17
][r  
]]
2
2
if X2[1][1] −X2[2][1] =0 then X22: [[x=X2[1][1]],[x=X2[2][1]]]
elseifdiff(X2[1][1],r)=0 and diff(X2[2][1],r)#0
then X22: [[x=X2[1][1]],solve(x=X2[2][1],r)]
elseifdiff(X2[1][1],r)#0 and diff(X2[2][1],r)=0
then X22: [solve(x=X2[1][1],r),[x=X2[2][1]]]
else X22: [solve(x=X2[1][1],r),solve(x=X2[2][1],r)];
(%o33)
[[r 
x2
x  18
][r  
]]
8
8
X13:[ rhs(X12[1][1]),rhs(X12[2][1])];
X23:[ rhs(X22[1][1]),rhs(X22[2][1])];
(%o34)
[
x  13 x  17
]
2
2
(%o35)
[
x  2 x  18
]
8
8
12. Формирование данных для построение графиков функций принадлежности
X14: [max(min(X13[1],1),0),max(min(X13[2],1),0)];
X24: [max(min(X23[1],1),0),max(min(X23[2],1),0)];
(%o36)


x  17  
 x  13  

[max  0, min 1,
,
max
0,
min
1,



 ]

2
2







(%o37)


x  18  
 x  2 

[max  0, min 1,
  , max  0, min 1, 
 ]
8
8






13. Определение границ интервала построения графиков
if diff(X13[1],x)=0 then a1: [X13[1]−1]
else a1:solve(X13[1]=0,x);a11:rhs(a1[1])−1;
if diff(X13[2],x)=0 then b1: [X13[2]+1]
65
else b1:solve(X13[2]=0,x);b11:rhs(b1[1])+1;
if diff(X23[1],x)=0 then a2: [X23[1]−1]
else a2:solve(X23[1]=0,x);a22:rhs(a2[1])−1;
if diff(X23[2],x)=0 then b2: [X23[2]+1]
else b2:solve(X23[2]=0,x);b22:rhs(b2[1])+1;
(%o58)
[ x  13]
(%o59)
12
(%o60)
[ x  17]
(%o61)
18
(%o62)
[ x  2]
(%o63)
1
(%o64)
[ x  18]
(%o65)
19
a:apply(min,[a11,a22]);b:apply(max,[b11,b22]);
(%o67)
1
(%o68)
19
14. Построение графиков функций принадлежности (рисунок 19)
wxplot2d([X14[1],X14[2],X24[1],X24[2]],[x,a,b],[y,0,1]);
(%t69)
66
Рисунок 19 – Графики функций принадлежности решения
(%o69)
15. Дефаззификация полученных решений по методу максимума
fpprintprec:4;
(%o39)
4
if diff(X13[1],x)=0 then X10: [X13[1]]
else X10:solve(X13[1]=1,x);float(X10[1]);
if diff(X23[1],x)=0 then X20: [X23[1]]
else X20:solve(X23[1]=1,x);float(X20[1]);
(%o40)
[ x  15]
(%o41)
15.0
(%o42)
[ x  10]
(%o43)
10.0
2.6 Анализ полученных результатов решения нечетких систем линейных
уравнений в Maxima и их практического использования
В результате решения нечеткой системы линейных уравнений получается нечеткое множество для оценки искомых переменных задачи. Методами дефаззификации эти нечеткие множества можно преобразовать в четкие числа, которые и принимаются в качестве точного решения. Кроме того, нечеткие множества решений характеризуют вариативность значений, которые может принимать решение и, соответственно, оценивать предполагаемое принятие того или иного поведения с точки зрения получения практического результата.
Практический смысл представленной программы решения нечеткой системы
линейных уравнений заключается в следующем. При расчете практических значений
параметров задачи в условиях неопределенности среди всех параметров можно,
например, выделить два определяющих параметра для которых выполнить расчет с
помощью представленной программы. При этом можно взять и другую пару параметров.
67
Быстрый расчет с помощью программы позволяет оперативно определить преимущество тех или иных значений этих параметров. В конечном итоге, применение
программы поможет сэкономить время для нахождения оптимального решения.
Кроме того, возможность быстро менять нечеткие коэффициенты условий задачи
тоже является важным элементом моделирования ситуации и принятия решения.
68
Заключение
Результатом выполненной работы является разработка программы решения нечеткой системы линейных уравнений в пакете компьютерной математики Maxima. В
работе рассматривается программа решения нечеткой системы линейных уравнений
для двух переменных с четкими коэффициентами системы и нечеткими правыми частями. Эта разработка может послужить основой для дальнейшего обобщения на
большее число переменных с нечеткими значениями коэффициентов системы. Maxima позволяет автоматически выполнять все преобразования, приводящие заданную
нечеткую систему к четкой расширенной системе линейных уравнений.
Встроенные инструменты решения систем линейных уравнений дает возможность быстрого решения полученных систем с расширенной матрицей коэффициентов. Созданная программа может быть использована для планирования поведения в
условиях нечетких условий задачи, приводящей к нечеткой системе линейных уравнений. При этом изменение нечетких значений параметров задачи можно быстро внести в программу и получить соответствующее решение при новых значениях этих параметров. Это позволяет в определенной мере анализировать поведение решения нечетких систем линейных уравнений в зависимости от значений нечетких параметров
и моделировать необходимое состояние исследуемой задачи.
69
Список использованной литературы
1
Friedman M., Ming M., Kandel A. Fuzzy linear systems // Fuzzy Sets and Sys-
tems 49 (1992) С. 201-209.
2
Maxima
Manual
[Электронный
ресурс].
–
Режим
доступа:
https://maxima.sourceforge.io/docs/manual/maxima.pdf
3
Peeva К., Fuzzy linear systems // Fuzzy Sets and Systems 49 (1992) С. 339-355.
4
Roy Goetschel Jr. and William Voxman. Elementary fuzzy calculs. Fuzzy sets
and systems, 18 (1986), 31—43.
5
Zadeh L. A. Fuzzy Sets, Fuzzy Logic, and Fuzzy Systems. - 1-ое изд. - Berkeley:
WSPC, 1996. - 842 с.
6
Алиев Р.А., Алиев Р.Р. Нечеткие множества и системы. - 1-е изд. - Баку:
AGNA, 1996. - 181 с.
7
Берков Н.А. Математический практикум с применением пакета Maxima:
учебно-методическое пособие. - 1-е изд. - М.: МГИУ, 2008. - 89 с.
8
Григорьева Д.Р., Гареева Г.А., Басыров Р.Р. Основы нечеткой логики. - 1-ое
изд. - Набережные Челны: Астэрия, 2018. - 43 с.;
9
Деменков Н.П., Микрин Е.А., Мочалов И.А Методы решения нечетких си-
стем линейных уравнений. ч. 2. неполные системы // Проблемы управления. 2019. №
5. С. 19-28.
10 Деменков Н.П., Микрин Е.А., Мочалов И.А. Методы решения нечетких систем линейных уравнений. ч. 1. полные системы // Проблемы управления. 2019. № 4.
С. 3-14.
11 Деменков Н.П., Микрин Е.А., Мочалов И.А. Нечеткие двухточечные краевые задачи в математическом моделировании и управлении. ч. 1. нечеткое математическое моделирование // Проблемы управления. 2018. № 1. С. 30-36.
12 Деменков Н.П., Микрин Е.А., Мочалов И.А. Нечеткие двухточечные краевые задачи в математическом моделировании и управлении. ч. 2. нечеткое управление
// Проблемы управления. 2018. № 2. С. 31-3
70
13 Деткова Ю.В. Система компьютерной алгебры Maxima. - 1-е изд. - Орел:
ФГБОУ ВПО «ОГУ», 2013. - 63 с.
14 Дьяконов В.П. Энциклопедия компьютерной алгебры в двух томах. - 1-ое
изд. - М.: ДМК-Пресс, 2009. - 1264 с.;
15 Заде Л.А. Понятие лингвистической переменной и его применение к принятию приближенных решений. - 3-е изд. - М.: Новое в зарубежной науке, 1976. - 165 с.
16 Ильина В.А. Система аналитических вычислений MAXIMA для физиковтеоретиков: учебно-методическое пособие - 1-е изд. - М.: МГУ, 2007. - 112 с.
17 Коротеев М.В., Терелянский П.В., Иванюк В.А. Арифметика нечетких чисел в обобщённо трапециевидной форме // Современная математика и её приложения.
- 2015. - №95. - С. 94-99.
18 Кофман А. Введение в теорию нечетких множеств. - 1-ое изд. - М.: Радио и
связь, 1982. - 432 с.
19 Малакаев М.С. Основы работы с системой компьютерной алгебры Maxima
- 1-е изд. - Казань: Казанский университет, 2012. - 57 с.
20 Мочалов И.А., Хрисат М.С, Шихаб Еддин М.Я. Нечеткие дифференциальные уравнения в задачах управления. часть 1 // Информационные технологии. 2015.
Т. 21. № 3. С. 171-178.
21 Мочалов И.А., Хрисат М.С, Шихаб Еддин М.Я. Нечеткие дифференциальные уравнения в задачах управления. часть 2 // Информационные технологии. 2015.
Т. 21. № 4. С. 243-250.
22 Найданов К. В., Лактионов С А. Решение нечетких систем линейных уравнений в программе Maxima // В сборнике: Мировые научные парадигмы в цифровую
эпоху: взгляд в будущее. Материалы VIII Международной научно-практической конференции. Ростов-на-Дону, 2022. С. 34-40.
23 Найданов К. В., Лактионов С А. Решение нечеткой задачи Коши для линейного дифференциального уравнения второго порядка в программе Maxima // В сборнике: Мировые тенденции и перспективы развития науки в эпоху перемен: от теории
к практике. Материалы I Международной научно-практической конференции. Ростов-на-Дону, 2023. С. 65-68.
71
24 Полосков И. Е. Система аналитических вычислений Maxima. Описание и
примеры использования. - 1-е изд. - Пермь: Пермский государственный национальный исследовательский университет, 2020. - 346 с.
25 Стахин Н.А. Основы работы с системой аналитических (символьных) вычислений Maxima (ПО для решения задач аналитических (символьных) вычислений).
- 1-е изд. - М.: ALT Linux, 2008. - 86 с.
26 Чичкарёв Е.А. Компьютерная математика с Maxima Руководство для школьников и студентов. - 1-ое изд. - М.: Библиотека ALT Linux, 2009. - 384 с.
72
ПРИЛОЖЕНИЕ
Программа решения нечеткой системы линейных уравнений
Очистка предыдущих вычислений
kill(all)$
Задание матрицы коэффициентов
A : matrix([1,2],[2,-1]); B: A-A$
1 2 
 2 1  .


Формирование расширенной матрицы
for i : 1 thru 2 do (
for j : 1 thru 2 do(
if A[i][j]>=0 then B[i][j] : A[i][j]))$
C : B-A$ S1: addrow(B,C)$ S2: addrow(C,B)$ S: addcol(S1,S2);
1 2 0 0
2 0 0 1


0 0 1 2


0 1 2 0
Формирование матрицы-строки искомых переменных
X :apply('matrix, [[x11,x21,-x12,-x22]]);
 x11 x21  x12  x22
Задание правых частей в виде нечетких чисел
Y1 : [[r,2-r], [4+r,7-2*r]];
[[r,2  r ],[r  4,7  2r ]]
Формирование матрицы-столбца правых частей расширенной системы
Y :transpose( [Y1[1][1],Y1[2][1],-Y1[1][2],-Y1[2][2]]);
 r 
 r4 


 r2 


 2r  7 
Решение нечеткой системы линейных уравнений в Maxima с помощью обратной
матрицы
Z : ratsimp(S^^(-1) . Y);
73
 7 r  26 
 15 


 4r  13 
 15 


13
r

46


 15 
 r 8 


 15 
Представление решения в виде нечетких чисел
X1 : [Z[1],-Z[3]]; X2 : [Z[2],-Z[4]];
7r  26
13r  46
4r  13
r 8
[[
],[
]] , [[
],[ 
]]
15
15
15
15
Построение графиков граничных функций для полученных нечетких чисел
wxplot2d([X1[1][1],X1[2][1],X2[1][1],X2[2][1]],[r,0,1]);
Определение функций принадлежности решения системы
X12 : [solve(x=X1[1][1],r),solve(x=X1[2][1],r)];
X22 : [solve(x=X2[1][1],r),solve(x=X2[2][1],r)];
15 x  26
15 x  46
[[r 
],[r  
]]
7
13
15 x  13
[[r 
],[r  15 x  8]]
4
X13 :[ rhs(X12[1][1]),rhs(X12[2][1])];
X23 :[ rhs(X22[1][1]),rhs(X22[2][1])];
15 x  26 15 x  46
[
,
]
7
13
15 x  13
[
, 15 x  8]
4
X14 : [max(min(X13[1],1),0),max(min(X13[2],1),0)];
74
X24 : [max(min(X23[1],1),0),max(min(X23[2],1),0)];


 15 x  26  
 15 x  46  
[max  0, min 1,
,
max
0,
min

1, 
 ]

7
13  






 15 x  13  
[max  0, min 1,
  , max  0, min 1, 15 x  8 ]
4



X14[1]; X24[2];

 15 x  26  
max  0, min 1,

7



max  0, min 1, 15x  8 
Построение графиков функций принадлежности решения системы
wxplot2d([X14[1],X14[2],X24[1],X24[2]],[x,-2,5]);
75
Скачать