This looks like a bug.

Aaron Meurer

On Thu, Dec 19, 2013 at 5:16 PM, eTna <[email protected]> wrote:
> Hi,
>
> Trying to write something with sympy for the first time... I'm stuck with
> some error and not to sure which way to look. The code is fairly short: I
> define a profit function, a cdf, and would like to compute the expected
> profit for a range of prices, depending on some parameter's value:
>
> s_theta, s_p, s_p_bar, s_eta, s_gamma = symbols('s_theta s_p s_p_bar s_eta
> s_gamma')
>
> class function_profit(Function):
>   nargs = 4
>
>   @classmethod
>   def eval(cls, s_theta, s_p, s_p_bar, s_eta):
>     return Piecewise((0, s_p > s_p_bar), ((s_p - 0.1)*(s_theta +
> s_p**(-s_eta)), True))
>
> class function_cdf_theta(Function):
>   nargs = 2
>
>   @classmethod
>   def eval(cls, s_theta, s_gamma):
>     return Piecewise((0, s_theta < 0), (1, s_theta > 1), (s_theta**s_gamma,
> True))
>
> class function_expected_profit(Function):
>   nargs = 4
>
>   @classmethod
>   def eval(cls, s_p, s_p_bar, s_eta, s_gamma):
>     return integrate(function_profit(s_theta, s_p, s_p_bar, s_eta)*\
>                      diff(function_cdf_theta(s_theta, s_gamma), s_theta),
> (s_theta, 0, 1))
>
> for gamma in [0.5, 0.7, 1.0]:
>   x_axis = np.linspace(0.1, 2.0, int(round(((2.0-0.1)/0.1)))+1)
>   ls_profits = [function_expected_profit(x, 2.0, 2.0, gamma) for x in
> x_axis]
>   plt.plot(x_axis, ls_profits, label = 'gamma = %s' %gamma)
> legend = plt.legend(loc='upper right')
> plt.show()
>
> The profit and cdf functions seem to work fine, the differentiation of the
> cdf as well... but I can compute the expected profit only for gamma = 1.
> Trying to compute the expected profit with gamma = 0.5, I get "ValueError:
> Non-suitable parameters.".
>
> Many thanks for your time and sorry about the noobish question,
>
> Etienne
>
> --
> You received this message because you are subscribed to the Google Groups
> "sympy" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at http://groups.google.com/group/sympy.
> For more options, visit https://groups.google.com/groups/opt_out.

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sympy.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to