Форум программистов, компьютерный форум, киберфорум
Scilab
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 19
1

полиномиальные кривые

07.11.2013, 23:00. Показов 1876. Ответов 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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.11.2013, 23:00
Ответы с готовыми решениями:

Полиномиальные сравнения по составному модулю равному степени простого числа
Есть такая теорема: Пусть f(x)\in Z, {x}_{1} - целое число, удовл. условиям: f({x}_{1})\equiv...

Кривые на С++
Добрый день. Есть такая задача: имеются 4 точки на плоскости, их координаты известны. При условии,...

Кривые в OpenGL SE 1.0
Помогите, пожалуйста, мне очень нужна ваша помощь. Как в Android с помощью OpenGL ES 1.0 сделать...

Кривые настройки
Коллеги, прошу помощи. Итак ситуация: 0. я ни разу не админ, куда копать не знаю, но копать могу,...

4
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
Эксперт С++
2324 / 1624 / 262
Регистрация: 29.05.2011
Сообщений: 3,325
08.11.2013, 22:04 3
Matlab M
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
clear()
function y = smf(x, AB)
    a = AB(1);
    b = AB(2);
    if (a < b) then
        ab2 = (a+b)/2;
        y1 = (x >= a & x <= ab2) .* (2.*((x-a)/(b-a)).^2);
        y2 = (x <= b & x > ab2) .* (1-2.*((x-b)/(b-a)).^2);
        y = y1 + y2 + (x > b) .* ones(size(x, 1), size(x, 2));
    else
        y = zeros(size(x, 1), size(x, 2));
    end
endfunction
 
function y = zmf(x, AB)
    a = AB(1);
    b = AB(2);
    if (a < b) then
        ab2 = (a+b)/2;
        y1 = (x >= a & x <= ab2) .* (1-2.*((x-a)/(b-a)).^2);
        y2 = (x <= b & x > ab2) .* (2.*((x-b)/(b-a)).^2);
        y = y1 + y2 + (x < a) .* ones(size(x, 1), size(x, 2));
    else
        y = zeros(size(x, 1), size(x, 2));
    end
endfunction
 
function y = pimf(x, ABCD)
    a = ABCD(1);
    b = ABCD(2);
    c = ABCD(3);
    d = ABCD(4);
    y = smf(x, [a b]) .* zmf(x, [c d]);
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");
2
0 / 0 / 0
Регистрация: 07.11.2013
Сообщений: 19
09.11.2013, 08:06  [ТС] 4
Спасибо, большое, чтоб без Вас делали!
0
iifat
09.11.2013, 14:09     полиномиальные кривые
  #5

Не по теме:

Цитата Сообщение от van35rus Посмотреть сообщение
чтоб без Вас делали!
Напоминаем скорее еврейское проклятие... Мне уже страшно за grizlik78

0
09.11.2013, 14:09
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2013, 14:09
Привет! Вот еще темы с ответами:

Кривые анимации
Cтолкнулся с проблемой: при загрузке левых анимации(не с ассет стора) и добавлении ее в дерево...

Кривые Безье
Скажите, почему может появиться вот такая лишняя прямая, которая уходит за пределы рисунка? Вроде...

Кривые Безье
Добрый вечер! Помогите, пожалуйста! Никак не могу разобраться с кривыми Безье :cry: Мне нужно...

ROC-кривые
Здравствуйте! Не могу понять как провести оценку модели, и вывести ROC-кривые. Подскажите...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.