Matlab строит смещенную логистическую функцию - PullRequest
1 голос
/ 24 ноября 2011

Я хотел бы построить смещенную логистическую функцию, как показано от Wolfram Alpha .

В частности, я хотел бы, чтобы функция имела вид

y = exp(x - t) / (1 + exp(x - t))

, где t> 0. В ссылке, например, t равно 6. Изначально я пробовал следующее:

x = 0:.1:12;
y = exp(x - 6) ./ (1 + exp(x - 6));
plot(x, y);
axis([0 6 0 1])

Однако это не то же самое, что результат Wolfram Alpha. Вот экспорт моего сюжета .

Я не понимаю, в чем разница между тем, что я пытаюсь сделать здесь, и построением графиков смещенных функций греха и косинуса (которые работают с использованием той же техники).

Я не совсем новичок в Matlab, но обычно я не использую его таким образом.

Редактировать: Мои значения х в коде должны были быть от 0 до 12.

Ответы [ 2 ]

2 голосов
/ 24 ноября 2011

fplot принимает в качестве входных данных дескриптор функции и диапазон для построения графика:

>> fplot(@(x) exp(x-6) / (1 + exp(x-6)), [0 12])

Function of interest

Прелесть fplot в этом случае в том, что вам не нужно тратить время на предварительное вычисление значений y; Вы также можете извлечь значения из графика по факту, если хотите (получив свойства line handle XData и YData).

0 голосов
/ 24 ноября 2011

Ваш ввод в Wolfram Alpha неверен. Это интерпретируется как e*(x-6)/(1-e*(x-6)). Используйте plot y = exp(x - 6) / (1 + exp(x - 6)) for x from 0 to 12 в Wolfram Alpha (см. здесь ) для тех же результатов, что и в MATLAB. Также используйте axis([0 12 0 1]) (или вообще не указывать оси на новом графике), чтобы увидеть полные результаты в MATLAB.

В ответ на ваш комментарий: используйте y = exp(1)*(x - 6) ./ (1 + exp(1)*(x - 6));, чтобы сделать в MATLAB то, что вы делали в Wolfram Alpha.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...