## Where communities thrive

• Join over 1.5M+ people
• Join over 100K+ communities
• Free without limits
##### Activity
• Jul 02 17:52

anutosh491 on hyperbolic_functions

Restructured tests for nseries … (compare)

• Jul 02 13:59

anutosh491 on hyperbolic_functions

Improved Code for Bi-directiona… (compare)

• Jul 02 11:26

anutosh491 on hyperbolic_functions

Fixed Bi-directional limit cases (compare)

• Jul 02 06:50

anutosh491 on hyperbolic_functions

Fixed bi-directional limit case… (compare)

• Jul 02 04:43

anutosh491 on hyperbolic_functions

• Jul 02 02:48

anutosh491 on hyperbolic_functions

Implemented series for function… (compare)

• Jul 02 01:33

anutosh491 on hyperbolic_functions

Implemented taylor_term method … (compare)

• Jul 01 16:11

• Jul 01 12:47

Refactored Leading Term method … Fixed leading term methods for … Fixed leading term for trigonom… and 1 more (compare)

• Jul 01 10:33

• Jun 29 10:28

Added expand to log rewrites (compare)

• Jun 29 09:23

updated test for asin,atan,acot… (compare)

• Jun 27 12:01

removed wrong test (compare)

• Jun 27 11:21

Modified test (compare)

• Jun 26 00:22

Fixed leading term for acos/ase… (compare)

• Jun 25 09:43

anutosh491 on series_for_arg

Updated code (compare)

• Jun 24 13:33

Improved code quality (compare)

• Jun 22 14:25

Fixed code quality (compare)

• Jun 22 14:17

• Jun 22 10:02

Fixed Failing tests (compare)

Actually,

solution = np.array(*[e for e in r_tmp]).astype(float)

should flatten it as well

wow. :-( Given the matrix PI

array([[ -0.917,   0.042,   0.   ,   0.   ,  -1.   ],
[  0.708,  -1.125,   0.042,   0.   ,   5.   ],
[  0.375,   1.125,  -1.125,   0.042, -10.   ],
[ -0.208,  -0.042,   1.125,  -1.125,  10.   ],
[  0.042,   0.   ,  -0.042,   1.125,  -5.   ],
[  0.   ,   0.   ,   0.   ,  -0.042,   1.   ]])

and the vector c

array([-1.   ,  0.   ,  0.   , -0.042,  1.083, -0.042])

the solution given by

linsolve(Matrix(np.c_[PI,c]))

returns an EmptySet()

while the same operation in Maple 16 returns non empty, and exactly

np.array([649/576, 143/192, 75/64, 551/576, -25/13824])

that in float is around

array([ 1.127,  0.745,  1.172,  0.957, -0.002])

Any ideas?

the example in maple is shown above
just to make clear, the float points in my PI matrix are not exactly 3 digits precision, I'm just showing the first 3 most significant digits using: np.set_printoptions(precision=3)
for sake of this test it was created using the ratios, as in
PI = np.array([
[-11/12, 1/24, 0, 0, -1],
[ 17/24, -9/8, 1/24, 0 ,5],
[3/8, 9/8, -9/8, 1/24, -10],
[-5/24, -1/24, 9/8, -9/8, 10],
[1/24, 0, -1/24, 9/8, -5],
[0, 0, 0, -1/24, 1]
])
Ideas, are very likely welcome.
Using np.linalg.lstsq(PI, c, rcond=-1)[0] returned the expected answer as: array([ 1.127, 0.745, 1.172, 0.957, -0.002])
but still, I would like to know what I'm doing wrong on Sympy side.
Kalevi Suominen
@jksuom

It seems that your system is over-determined. It has 6 equations in 5 variables. It can have solutions only if the determinant of the extended system is 0.

>>> P = Matrix([[ -0.917,   0.042,   0.   ,   0.   ,  -1.   ],
...        [  0.708,  -1.125,   0.042,   0.   ,   5.   ],
...        [  0.375,   1.125,  -1.125,   0.042, -10.   ],
...        [ -0.208,  -0.042,   1.125,  -1.125,  10.   ],
...        [  0.042,   0.   ,  -0.042,   1.125,  -5.   ],
...        [  0.   ,   0.   ,   0.   ,  -0.042,   1.   ]])
>>> c = Matrix([-1.   ,  0.   ,  0.   , -0.042,  1.083, -0.042])
>>> Pc = P.row_join(c)
>>> Pc.det()
0.000998125750125132

In this example, the determinant not 0 because of the inaccuracy of floating point numbers. Hence there is no solution.

Kalevi Suominen
@jksuom
You can probably find a solution if you remove one of the equations.
Het
@hetp111
is NumPy related to sympy?
i am learning python megacourse on udemy and it is also teaching numpy, so i was wondering if it might be useful
@hetp111 not related but can work together.
The lack of solutions is definitely a precision issue - if you input all entries as Rational (e.g. Rational(1,2) instead of 1/2), then linsolve returns the same as Maple (though obviously that's awkward)

A potential solution could be to define

rationalize = lambda x: [nsimplify(e) for e in x]

(this will turn numbers from a list into rationals). And then do

PI = Matrix(map(rationalize, [
[-11/12, 1/24, 0, 0, -1],
[ 17/24, -9/8, 1/24, 0 ,5],
[3/8, 9/8, -9/8, 1/24, -10],
[-5/24, -1/24, 9/8, -9/8, 10],
[1/24, 0, -1/24, 9/8, -5],
[0, 0, 0, -1/24, 1]
]))

and similarly for c. I've just checked and this returns the right solutions

@jksuom I cant remove any variable unfortunately.
Kalevi Suominen
@jksuom
Do not remove any variables. There are too few already. Remove one of the equations.
There are 6 rows and only 5 columns. One row could be omitted.
@jksuom I can't either, they are strict contraints in my solution space.
Kalevi Suominen
@jksuom
If there is a solution, then the same solution is obtained after one equation is omitted.
Kalevi Suominen
@jksuom
In [7]: linsolve(Pc[:5, :])
Out[7]:
{(1.12549831271091, 0.749071392102014, 1.16564957508439, 0.96140585029474, -0.
000620954287620833)}
@valglad Thanks. rationalize function worked (in fact I was using Fractions.from_float() before, this work better). But I could not apply your lambda function to a 2-d matrix, just 1-d.
I have created mrationalize = lambda x: [nsimplify(e) for e in [r for r in x]] that I do not like much the fell.
Doing map(rationalize, list_of_lists) inside the Matrix call (like I did above when creating PI) would probably be easiest

I have a problem with calculating eigenvectors for a simple 3x3 matrix in sympy. Trying to execute

q = symbols("q", positive=True)
m = Matrix([[-2, exp(-q), 1], [exp(q), -2, 1], [1, 1, -2]])
#m.eigenvects(simplify=True)
m.eigenvals()

results in very complicated expressions for the eigenvalues, trying to get the eigenvectors fails with a NotImplementedError. I expect the latter to be due to the former. However, when trying to do the same thing in Mathematica, I get much simpler expressions for everything. Is there some option / flag that I can set to have sympy compute these eigenvalues and eigenvectors? Is there currently some form of limitation within sympy that prevents me from doing this?

Het
@hetp111
what are all the prerequisite i need to have before contributing to opensource (sympy) ? I have a pretty good hold of python now. Github is very confusing for me.
Aaron Meurer
@asmeurer
It helps to understand git/github, but generally the best way to learn them is to use them
@adoa does Mathematica give a simpler expression for the eigenvalues?
Oh apparently they can be simplified if you call simplify
Het
@hetp111
@asmeurer Ty, do i need to learn git or github? is learning github enough? i have never done opensource before, should i start with sympy?
Aaron Meurer
@asmeurer
You need to learn the basics of git, to download the code and push it up to GitHub
@adoa it seems there is a simplify flag, but it doesn't work
Het
@hetp111
@asmeurer can't i do it manually through github website?
Kalevi Suominen
@jksuom
I suspect that there is not enough support for simplifying hyperbolic functions.
Malkhan Singh
@Malkhan52
Aaron Meurer
@asmeurer
Het
@hetp111
@Malkhan52 Thank ypu,
Aaron Meurer
@asmeurer
Het
@hetp111
@asmeurer I am using windows, will i have any problems? or do i need linux?
Aaron Meurer
@asmeurer
You can use windows.
You should use whichever you feel more comfortable with
Het
@hetp111
I am aiming for GSoC 2019, what is the procedure?
(sorry for these silly questions... I am trying my best ,i just need some guidance )
Malkhan Singh
@Malkhan52

I'm getting this error '''>>> expr = cos(x)

expr.subs(x-1,y)
cos(x)
expr = cos(x+1)
expr.subs(x-1,y)
cos(y + 2)
'''

where will it be in code?

Aaron Meurer
@asmeurer
Somewhere in the core
I guess it's because Add does the smart substitution but Symbol does not