2010-09-18 3 views
2

Я пытаюсь использовать сигмовидную функцию, используя этот код на scilab, но результат, который я получил, не из уравнения. что случилось с моим кодом?(scilab) x = [-6,6] y = 1/(1 +% e^​​-x) Почему это не работает?

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

у =

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

Try:

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

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

-->fplot2d(x,f) 

который дает: alt text

0

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

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

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) 

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