# Coding Period Week 8

Organization : SymPy
Solvers: Completing Solveset

10 July 2016 - 16 July 2016

by Shekhar Prasad Rajak — Posted on July 18, 2016

Continue - Diophantine in Solveset :

PR 11234

• For general Pythagorean diop_type (Diophantine eq type), it seems diophantine always returns parameterized solution so I did some changes in the PR. commit

• You can refer this comment.

Continue Simplified Trig soln

PR #11188

• After some changes, the PR is ready for review.

Continue nonlinsolve :

PR #11111

• Added some XFAIL test-cases of system of Trigonometric equations. `solveset` trig solver (`solve_trig`) is not smart enough(`solveset` returns `ConditionSet`, where soln can be simply inverse trig functions using `_invert` or inverse Trigonometric functions). So `solveset` returns `ConditionSet` that means `substitution` is not getting soln.

• It is better to replace trigonometric functions or other `Function` with symbols

(e.g. `sin(x)` –> `u`, `sin(y)`–> `v`, `f(x)`–> `f_x`, `g(x)` –> `g_x`)

and then solve for the symbols. After getting solution from `nonlinsolve` user can invert or do `solveset`

(e.g. solveset(Eq(sin(x), soln_u), x, domain) to get value of `x`).

Meanwhile :

• We already know that solveset need improved `invert_real` , `invert_complex` and `Imageset` Intersections.

• previous work is in this PR 10971. Trying to improve them.

Some cases is here :

``````# In 2, 4, 5 intersection is not needed.

In [1]: img = ImageSet(Lambda(n, x/n), S.Complexes)

In [2]: Intersection(img, S.Complexes)
Out[2]:
⎧x        ⎫
ℂ ∩ ⎨─ | n ∊ ℂ⎬
⎩n        ⎭

In [3]: img = ImageSet(Lambda(n, x/n), S.Integers)

In [4]: Intersection(img, S.Complexes)
Out[4]:
⎧x        ⎫
⎨─ | n ∊ ℤ⎬ ∩ ℂ
⎩n        ⎭

In [5]: Intersection(ImageSet(Lambda(n, 2*n*I*pi), S.Integers), S.Complexes)
Out[5]: {2⋅ⅈ⋅π⋅n | n ∊ ℤ} ∩ ℂ

# ImageSet Intersection is not implemented when inverter returns multiple values.
# here ans should be {0, 1}
In [6]: img1 = ImageSet(Lambda(n, n**2), S.Integers)

In [7]: Intersection(img1, Interval(0,2))
Out[7]:
⎧ 2        ⎫
[0, 2] ∩ ⎨n  | n ∊ ℤ⎬
⎩          ⎭

``````

continue..