(scilab) x = [-6,6] y = 1 / (1 +% e ^ ​​-x), почему это не работает? - PullRequest
2 голосов
/ 18 сентября 2010

Я пытаюсь нарисовать сигмовидную функцию, используя этот код на scilab, но результат, который я получил, не из уравнения. что не так с моим кодом?

х = -6: 1: 6; у = 1 / (1 +% е ^ -х)

y =

0.0021340  
0.0007884  
0.0002934  
0.0001113  
0.0000443  
0.0000196  
0.0000106  
0.0000072  
0.0000060  
0.0000055  
0.0000054  
0.0000053  
0.0000053  

http://en.wikipedia.org/wiki/Sigmoid_function

большое спасибо

Ответы [ 2 ]

2 голосов
/ 18 сентября 2010

Попробуйте:

-->function [y] = f(x)
-->  y = 1/(1+%e^-x)
-->endfunction

-->x = -6:1:6;

-->fplot2d(x,f)

, что дает: alt text

0 голосов
/ 22 сентября 2010

Ваш подход вычисляет псевдообратный вектор (1 +% e. ^ X).Вы можете проверить, выполнив: (1 +% e ^ ​​-x) * y

Вот две вещи, которые вы можете сделать:

x = -6:1:6; y = ones(x)./(1+%e.^-x)

Это дает нужный вам результат.Это выполняет поэлементное деление, как и ожидалось.

Другой подход:

x = -6:1:6    
deff("z = f(x)", "z = 1/(1+%e^-x)") 
// The above line is the same as defining a function- 
// just as a one liner on the interpreter.
y = feval(x, f)

Оба подхода дадут один и тот же результат.

...