Математический форум Math Help Planet
http://mathhelpplanet.com/

Определить степень принадлежности функции.
http://mathhelpplanet.com/viewtopic.php?f=23&t=52803
Страница 1 из 1

Автор:  sunbeam [ 27 янв 2017, 15:28 ]
Заголовок сообщения:  Определить степень принадлежности функции.

1. Дано 3 нечетких множества A, B, C (заданы их функции принадлежности). Построить функцию принадлежности нечеткого множества D = A ∪ B ∩ C и определить степень принадлежности одного элемента множеству D, используя максиминный способ
Получившиеся графики принадлежности:
Изображение
Результаты выполнения работы:

Строим графики функций принадлежности в Matlab.

t = 0:0.01:20; % определяем число значений по оси абсцисс

a=3; b=5; %Параметры функции принадлежности М_А

a1=0; b1=3;c1=5; %Параметры функции принадлежности М_В

a2=0; b2=5; %Параметры функции принадлежности М_С

% Рассчитываем значения оси ординат функций принадлежности М_А, М_B, М_C

j=1;

for i = 0:0.01:20;

if i<=a M_A=0;
elseif (i>a)&(i<=b) M_A(j) = (i-a)/(b-a);
elseif (i>b) M_A(j)=1;end;


if i<=a1 M_B=0;

elseif (i>a1)&(i<=3) M_B(j)=1*(i-a1)/(b1-a1);
elseif (i>b1)&(i<=5) M_B(j)=1*(c1-i)/(c1-b1);
elseif (i>c1) M_B(j)=0; end;

if i<=a2 M_C=1;
elseif (i>a2)&(i<=5) M_C(j)=1*(b2-i)/(b2-a2);
elseif (i>b2) M_C(j)=0; end

j=j+1;

end

subplot(2, 3, 1)
plot(t, M_A, 'LineWidth', 4); grid on; xlabel('X'); ylabel('M_A(x)');

subplot(2, 3, 2)
plot(t, M_B, 'LineWidth', 4); grid on; xlabel('X'); ylabel('M_B(x)');

subplot(2, 3, 3)
plot(t, M_C, 'LineWidth', 4); grid on; xlabel('X'); ylabel(‘M_C(x)');

Начала решение дальше не получается...
Решение.
Множество D = A ∪ B ∩ C
% Решение
j=1;
for i = 0:0.01:20
if (M_A(j)+M_B(j))<1 M_A_B(j)=M_A(j)+M_C(j); else M_A_B(j)=1;end %Объединение А и В (M_A_B)



j=j+1;


end
subplot(2, 3, 4)

Автор:  User_MatLab [ 22 дек 2021, 22:59 ]
Заголовок сообщения:  Re: Определить степень принадлежности функции.

Тоже столкнулся с таким заданием. Ответ конечно совсем не скорый, но может кому-то поможет.

Изображение
Решение:
j=1;
for i=0:0.01:20
M_n_C(j)=1-M_C(j);
if (M_n_C(j)-1+M_B(j))>0 M_B_C(j)=M_n_C(j)-1+M_B(j);
else M_B_C(j)=0; end;
if(M_B_C(j)+M_A(j))<1 M_A_B_C(j)=M_B_C(j)+M_A(j);else
M_A_B_C(j)=1; end;
j=j+1;
end
subplot (2,3,4)
plot(t,M_n_C,'LineWidth',4); grid on; xlabel ('X'); ylabel('M_nC (x)');
subplot (2,3,5)
plot(t, M_B_C,'LineWidth',4); grid on; xlabel ('X'); ylabel('M_BC(x)');
subplot (2,3,6)
plot(t, M_A_B_C,'LineWidth',4); grid on; xlabel ('X'); ylabel(' M_ABC(x)');

Носитель множества ABC состоит из элементов интервала [2, 20]. Выберем элемент 10.
ΜA(10)=1;
ΜB(10)=1;
ΜC(10)=1;
Μ ̶̶C̶ (10)=1-ΜC(10)=0;
Μ̶C̶⋂B(10)=max{0, Μ ̶̶C̶ (10)+ ΜB(10)-1}=max{0,(-1)+1-1}=0
ΜA∪B⋂̶C̶ (10)=min{1,ΜA(10)+ Μ̶C̶⋂B(10)}=min{1,1+(-1)}=1
ΜA∪B⋂̶C̶ (10)=1.

Страница 1 из 1 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/