【问题标题】:(scilab) x = [-6,6] y = 1/(1+%e^-x) why it doesn't work?(scilab) x = [-6,6] y = 1/(1+%e^-x) 为什么它不起作用?
【发布时间】:2010-09-18 09:16:57
【问题描述】:

我正在尝试在 scilab 上使用此代码绘制 sigmoid 函数,但我得到的结果不是来自等式。我的代码有什么问题?

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

非常感谢

【问题讨论】:

    标签: scilab


    【解决方案1】:

    试试:

    -->function [y] = f(x)
    -->  y = 1/(1+%e^-x)
    -->endfunction
    
    -->x = -6:1:6;
    
    -->fplot2d(x,f)
    

    产生:

    【讨论】:

      【解决方案2】:

      您的方法计算 (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)
      

      两种方法都会产生相同的结果。

      【讨论】:

        【解决方案3】:

        使用 Scilab ≥ 6.1.1,只需

        x = (-6:1:6)';
        plot(x, 1./(1+exp(-x)))
        

        【讨论】:

          猜你喜欢
          • 2016-01-16
          • 1970-01-01
          • 1970-01-01
          • 2019-08-02
          • 1970-01-01
          • 2011-03-28
          • 2021-10-14
          • 1970-01-01
          • 2011-04-20
          相关资源
          最近更新 更多