2010-09-18 11 views
2

J'essaye de dessiner la fonction sigmoïde en utilisant ce code sur scilab, mais le résultat que j'ai obtenu ne provient pas de l'équation. Qu'est ce qui ne va pas avec mon code?(scilab) x = [-6,6] y = 1/(1 +% e^​​-x) pourquoi cela ne fonctionne pas?

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

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

merci beaucoup

Répondre

2

Essayez:

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

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

-->fplot2d(x,f) 

qui rendements: alt text

0

Votre approche calcule le pseudo-inverse du vecteur (1 +% e.^X). Vous pouvez vérifier en exécutant: (1 +%^e -x) * y

Voici deux choses que vous pouvez faire:

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

Cela donne le résultat que vous avez besoin. Ceci effectue la division par éléments comme prévu.

Une autre approche est:

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) 

Les deux approches donnent le même résultat.