Thanks Chris, for pointing me to that PR, I did had a look at that.
That PR, exposed me to the mess of solving linear systems in solvers.

AMiT Kumar

On Tuesday, March 17, 2015 at 8:07:00 PM UTC+5:30, Chris Smith wrote:
>
> See also https://github.com/sympy/sympy/pull/2580 which started some work 
> related to solving systems of equations.
>
> On Monday, March 16, 2015 at 8:50:48 PM UTC-5, AMiT Kumar wrote:
>>
>> The primary hints doesn't have much significance, the sub hints
>> are the main hints which would contain various methods, used 
>> to solve different equations.
>>
>> The primary hint is just the primary information we would like to extract 
>> from input, (I should rather rename it)
>> to classify equation on the basis of univariate", 
>> "multivariate_or_parametric", "single_eq", "multiple_eq.
>>
>> For example:
>>
>> def classify_primaryhint(f):
>>     """Clasifies expression(s) `f` based on the primaryhints. 
>> Primaryhints are
>>        "univariate", "multivariate_or_parametric", "single_eq", "
>> multiple_eq".
>>
>>
>>     Examples
>>     ========
>>
>>
>>     >>> from sympy import *
>>     >>> from sympy.solvers.solveset import *
>>     >>> from sympy.abc import x
>>     >>> classify_primaryhint(x**2 + 2*x + 1)
>>     >>> ['single_eq', 'univariate']
>>
>>
>>     """
>>
>>
>>     phints = []
>>
>>
>>     # classify by number of Equations, i.e single_eq or multiple_eq
>>     if not iterable(f):
>>         phints.append('single_eq')
>>         f = sympify(f)
>>         free_symbols = set(f.free_symbols)
>>
>>
>>     else:
>>         free_symbols = []
>>         for fi in f:
>>             fi = sympify(fi)
>>             free_symbols.append(fi.free_symbols)
>>         if len(f) > 1:
>>             phints.append('multiple_eq')
>>
>>
>>     # classify by univariate and multivariate
>>     if len(free_symbols) == 1:
>>         phints.append('univariate')
>>     elif len(free_symbols) > 1:
>>         phints.append('multivariate')
>>     return phints
>>
>>
>>
>> Thanks,
>>
>> AMiT Kumar
>>
>> On Tuesday, March 17, 2015 at 1:44:38 AM UTC+5:30, Aaron Meurer wrote:
>>>
>>> Sorry if you already answered this in the application and I didn't see 
>>> it, but what is the difference between primary hints and subhints? 
>>>
>>> Also, I should point out that you're going to have to remove most (or 
>>> maybe all) of your formatting when you submit your proposal in 
>>> Melange. I would just try to make it look as good as possible in 
>>> Melange, and provide a link to the wiki so people can read it there. 
>>>
>>> Aaron Meurer 
>>>
>>> On Mon, Mar 16, 2015 at 1:39 PM, AMiT Kumar <[email protected]> wrote: 
>>> > Hi, 
>>> > 
>>> > Sorry for late reply, (I was busy with Mid terms & Assignments). 
>>> > 
>>> > Based on the above Ideas, I have made the draft of my Proposal on 
>>> SymPy 
>>> > wiki, Please have a look: 
>>> > 
>>> https://github.com/sympy/sympy/wiki/GSoC-2015-Application-AMiT-Kumar--Solvers-:-Extending-Solveset
>>>  
>>> > 
>>> > 
>>> > Thanks, 
>>> > 
>>> > 
>>> > AMiT Kumar 
>>> > 3rd Year Undergrad 
>>> > Delhi Technological University 
>>> > www.iamit.in 
>>> > 
>>> > On Tuesday, March 10, 2015 at 12:15:15 AM UTC+5:30, Aaron Meurer 
>>> wrote: 
>>> >> 
>>> >> That sounds good, except as I noted at 
>>> >> https://groups.google.com/forum/#!msg/sympy/42GdMJ9ssyM/swC6bHVunP8J, 
>>>
>>> >> it's very important to build this around a framework of rewriting and 
>>> >> decomposition. You want to be able solve, f(g(x)) = 0, where f is a 
>>> >> polynomial and g is a lambertW (for example).  You want the hints to 
>>> >> be as simple as possible, and any complicated equations to be 
>>> solvable 
>>> >> by an application of possibly many hints. This is more complicated 
>>> >> than what the ODE solver does. 
>>> >> 
>>> >> Rewriting basically boils down to simplifying the matching portion of 
>>> >> the hints. This is something that is not done very well in the ODE 
>>> >> system, so I would only look there to see how it is lacking. 
>>> >> 
>>> >> You want each hint to match a simple pattern, and then have some set 
>>> >> of rules on how to rewrite different expressions to that pattern 
>>> >> mathematically, even if they don't match it structurally. I would 
>>> take 
>>> >> a look at the rules system used in the fu algorithm, and in the unify 
>>> >> submodule. Also take a look at Francesco's pattern matching 
>>> >> suggestions (search the mailing list and the wiki). 
>>> >> 
>>> >> Aaron Meurer 
>>> >> 
>>> >> On Sun, Mar 8, 2015 at 12:18 AM, AMiT Kumar <[email protected]> 
>>> wrote: 
>>> >> > Hi, 
>>> >> > I was thinking, How about designing the  solveset similiar 
>>> >> > to the ODE Module . Something like hints system to classify 
>>> solvers? 
>>> >> > 
>>> >> > Example: 
>>> >> > 
>>> >> > primaryhint = [ 
>>> >> >     "univariate", 
>>> >> >     "multivariate", 
>>> >> >     "single_eq", 
>>> >> >     "multiple_eq" 
>>> >> >     ] 
>>> >> > 
>>> >> > 
>>> >> > subhints = [ 
>>> >> >     'solve_linear_system' 
>>> >> >     'linear_trig', 
>>> >> >     'polynomial', 
>>> >> >     'transcendental', 
>>> >> >     'piecewise', 
>>> >> >     'relational' 
>>> >> >     'solve_lambertw' 
>>> >> >     'miscellaneous' 
>>> >> >     ] 
>>> >> > 
>>> >> > 
>>> >> > def classify_solver(f, symbols=None): 
>>> >> >     """ 
>>> >> >     Clasifies the input equation(s)/function(s) to solve for, into 
>>> >> > possible 
>>> >> >     hints such as linear, univariate, multivariate, etc. 
>>> >> >     """ 
>>> >> >     hints = [] 
>>> >> > 
>>> >> >    # Methods to classify Equations 
>>> >> > 
>>> >> > def solveset(f, symbol=None): 
>>> >> > 
>>> >> >     if eq_type == 'linear': 
>>> >> >         solve_linear(f, symbol) 
>>> >> > 
>>> >> >     if eq_type == 'linear_system': 
>>> >> >         solve_linear_system(f, symbol) 
>>> >> > 
>>> >> >     . 
>>> >> >     . 
>>> >> >     . and so on 
>>> >> > 
>>> >> > 
>>> >> > 
>>> >> > In that case we will be able to add new solvers, without messing 
>>> with 
>>> >> > the others, and we will have a more robust and flexible framework 
>>> >> > which will be easy to extend. 
>>> >> > 
>>> >> > I think, building a robust framework, which felicitates further 
>>> >> > development, worth much more than adding new solvers. 
>>> >> > 
>>> >> > Thoughts from the community are invited. 
>>> >> > 
>>> >> > AMiT Kumar 
>>> >> > 
>>> >> > -- 
>>> >> > 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. 
>>> >> > To view this discussion on the web visit 
>>> >> > 
>>> >> > 
>>> https://groups.google.com/d/msgid/sympy/5b7393ef-7d4d-46f9-bfcd-dbbeb38639c4%40googlegroups.com.
>>>  
>>>
>>> >> > 
>>> >> > For more options, visit https://groups.google.com/d/optout. 
>>> > 
>>> > -- 
>>> > 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. 
>>> > To view this discussion on the web visit 
>>> > 
>>> https://groups.google.com/d/msgid/sympy/6247761d-1673-4f10-bfcd-c0b92a555e7b%40googlegroups.com.
>>>  
>>>
>>> > 
>>> > For more options, visit https://groups.google.com/d/optout. 
>>>
>>

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sympy/cfd40599-000f-41d8-995c-3ef918723dcc%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to