0 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 19
|
|
1 | |
полиномиальные кривые07.11.2013, 23:00. Показов 2943. Ответов 4
Метки нет (Все метки)
Здравствуйте!
Задание: Z-функции (zmf), PI-функции (pimf) и S-функции (smf). Функция zmf представляет собой асимметричную полиномиальную кривую, открытую слева, функция smf – зеркальное отображение функции zmf. Функция pimf равна нулю в правом и левом пределах и принимает значение, равное единице в середине некоторого отрезка x=linspace(0,1,100)'; pi=pimf(x,[0.1 0.5 0.7 1.0]); z=zmf(x,[0.2 0.4]); s=smf(x,[0.6 0.8]); Вот что должно быть в итоге Вот что у меня получилось: function y = smf(x, AB) a = AB(1); b = AB(2); if ((a+b)/2) >= a then y1 = 2*((x-a) / (b-a)).^2; else y1 = 1*(x <= a); end if b >= ((a+b)/2) then y2 = 1-2*((x-b) / (b-a)).^2; else y2 = 1*(x >= b); end y = max(min(y1, y2, 1), 0); endfunction function y = zmf(x, AB) a = AB(1); b = AB(2); if ((a+b)/2) >= a then y1 = 1-2*((x-b) / (b-a)).^2; else y1 = 1*(x <= a); end if b >= ((a+b)/2) then y2 = 2*((x-a) / (b-a)).^2; else y2 = 1*(x >= b); end y = max(min(y1, y2, 1), 0); endfunction function y = pimf(x, ABCD) a = ABCD(1); b = ABCD(2); c = ABCD(3); d = ABCD(4); if ((a+b)/2) >= a then y1 = 2*((x-a) / (b-a)).^2; else y1 = 1*(x <= a); end if b >= ((a+b)/2) then y2 = 1-2*((x-b) / (b-a)).^2; else y2 = 1*(b <= c); end if ((c+d)/2) >= c then y3 = 1-2*((x-c) / (d-c)).^2; else y3 = 1*(b <= c); end if d >= ((c+d)/2) then y4 = 2*((x-d) / (d-c)).^2; else y4 = 1*(x >= d); end y = max(min(y1, y2, 1), 0); endfunction x=linspace(0,1,100)'; pi=pimf(x,[0.1 0.5 0.7 1.0]); z=zmf(x,[0.2 0.4]); s=smf(x,[0.6 0.8]); plot2d(x,[pi z s],leg="pi@z@s"); Вот что из этого получилось Посмотрите, пожалуйста, наверно не правильно условия заданы, подскажите как правильно
0
|
07.11.2013, 23:00 | |
Ответы с готовыми решениями:
4
Полиномиальные сравнения по составному модулю равному степени простого числа Кривые на С++ Кривые в OpenGL SE 1.0 Кривые настройки |
0 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 19
|
|
08.11.2013, 08:28 [ТС] | 2 |
Немного поменяла, все равно не то:
function y = smf(x, AB) a = AB(1); b = AB(2); if ((a+b)./2) >= a then y = 2.*((x-a)./(b-a)).^2; else y = 0; end if b >= ((a+b)./2) then y = 1-2.*((x-b)/(b-a)).^2; else y = 1; end endfunction function y = zmf(x, AB) a = AB(1); b = AB(2); if ((a+b)./2) >= a then y = 1-2.*((x-b)./(b-a)).^2; else y = 0; end if b >= ((a+b)./2) then y = 2.*((x-a)./(b-a)).^2; else y = 1; end endfunction function y = pimf(x, ABCD) a = ABCD(1); b = ABCD(2); c = ABCD(3); d = ABCD(4); if ((a+b)./2) >= a then y1 = 2.*((x-a)./(b-a)).^2; else y1 = 1.*(x <= a); end if b >= ((a+b)./2) then y2 = 1-2*((x-b)./(b-a)).^2; else y2 = 1.*(b <= c); end if ((c+d)./2) >= c then y3 = 1-2.*((x-c)./(d-c)).^2; else y3 = 1.*(b <= c); end if d >= ((c+d)./2) then y4 = 2.*((x-d)./(d-c)).^2; else y4 = 1.*(x >= d); end endfunction x=linspace(0,1,100)'; pi=pimf(x,[0.1 0.5 0.7 1.0]); z=zmf(x,[0.2 0.4]); s=smf(x,[0.6 0.8]); plot2d(x,[pi z s],leg="pi@z@s");
0
|
2382 / 1666 / 279
Регистрация: 29.05.2011
Сообщений: 3,402
|
||||||
08.11.2013, 22:04 | 3 | |||||
2
|
0 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 19
|
|
09.11.2013, 08:06 [ТС] | 4 |
Спасибо, большое, чтоб без Вас делали!
0
|
iifat
|
09.11.2013, 14:09
полиномиальные кривые
#5
|
0
|
09.11.2013, 14:09 | |
09.11.2013, 14:09 | |
Помогаю со студенческими работами здесь
5
Кривые анимации Кривые Безье Кривые Безье ROC-кривые Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |