As a workaround, if you can expression your function in terms of
Heaviside, SymPy *may* be able to compute the integral.

Aaron Meurer

On Mon, Nov 11, 2013 at 11:48 AM, Aaron Meurer <[email protected]> wrote:
> I think integrating piecewise where the variable appears in the
> conditions in a non-trivial way may require implementing some new
> algorithm. See https://code.google.com/p/sympy/issues/detail?id=2128
> and https://code.google.com/p/sympy/issues/detail?id=3801.
>
> Aaron Meurer
>
> On Mon, Nov 11, 2013 at 11:17 AM, George Gerber <[email protected]> 
> wrote:
>> Good day,
>> My ultimate goal is to solve for the coefficient of a piecewise function
>> that is integrated.
>> Example:
>>
>> from sympy import solve, symbols, Piecewise
>> x, C1 = symbols('x C1')
>> strain = C1*x
>> # Linear strain distribution assumption
>> stress = Piecewise((strain**2,strain>0),(strain**3,strain>1))    #
>> Stress-stain relationship of material
>> Force = stress.integrate((x,-1,1))
>> # Force = integral of stress over an area
>> sol = solve([Force-1],[C1])
>> # Find the strain distribution which will balance the specified force
>>
>> Is this possible or is this too advanced for sympy (even in near future)?
>>
>> Best regards,
>> George
>>
>>
>> On Monday, 11 November 2013 06:58:04 UTC+2, George Gerber wrote:
>>>
>>> Good day,
>>>
>>> The integration of a piecewise function below results in a single numeric
>>> number, instead of producing a piecewise equation containing the symbols
>>> 'C1', 'C2' and 'C3'.
>>> Is this a bug?
>>>
>>> Best regards,
>>> George
>>>
>>> ~~~~~~~~~~~~~~~~~~~~~~~~
>>>
>>> from sympy import symbols, Piecewise
>>> x,y,C1,C2,C3 = symbols('x y C1 C2 C3')
>>>
>>> W = 1.0
>>> L = 1.0
>>> A1 = 1.0
>>> A2 = 1.0
>>> sigma_max = 1.0
>>> strain0 = 1.0
>>>
>>> strain = C1*x+C2*y+C3
>>>
>>> sigma =
>>> 1e6*Piecewise((0,strain>0),(A1*strain**2+A2*strain,strain>strain0),(sigma_max,True))
>>> F_c =  sigma.integrate((x,-W/2,W/2),(y,-L/2,L/2))
>>>
>>>
>>> print 'F_c',F_c
>>> ~~~~~~~~~Result is:~~~~~~~~~~~~~
>>> F_c 500000.000000000
>>>
>> --
>> 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