Well, I've included an algorithm for hyperbolic iteration (the more general "complement" of parabolic iteration, where \( f(0) = 0 \) and \( f'(0) \ne 1 \)). However, I was hoping to make it general enough to include an implementation of matrix_exp and matrix_log at the same time, but I do not have working alorithms for these yet (but thanks to Gottfried we do, just in a different language). The matrix power code for hyperbolic iteration is very specific to triangular matrices, so I'm not sure how well it could be generalized to arbitrary matrices.
I found that the Sage built-in exp will only work on numeric matrices, and that the .left_eigenvectors() and .right_eigenvectors() methods are only defined on numeric matrices as well. The .eigenvalues() method, however, IS defined on symbolic matrices, but we don't need the eigenvalues (which are \( (1, f_1, f_1^2, f_1^3, \cdots) \)) so this is of no help. One of the purposes of this library is to investigate the symbolic case, which means I had to implement my own eigensystem decomposition algorithm. I checked that it produces the same result as it should in Mathematica, so at least we are being consistent.
Here are some examples of some new functions:
which is what is to be expected.
I would very much like to work together! It would also help the project be more robust with more eyes making sure the code is right
I have a crappy server with a dynamic IP, but I think we would need one with a static IP to be more reliable. "HyperOp" is a good name for a library, but I was thinking "HyperSage". What do you think?
Now that both basic parabolic and hyperbolic methods are fleshed out, I'm not going to work much more on them. There is also a regular iteration sub-module, but the only stuff that would go here is Daniel Geisler's summation method, which I don't understand very well. Since most of regular iteration is working (parabolic/hyperbolic), I'm going to start working on the natural iteration sub-module.
Andrew Robbins
I found that the Sage built-in exp will only work on numeric matrices, and that the .left_eigenvectors() and .right_eigenvectors() methods are only defined on numeric matrices as well. The .eigenvalues() method, however, IS defined on symbolic matrices, but we don't need the eigenvalues (which are \( (1, f_1, f_1^2, f_1^3, \cdots) \)) so this is of no help. One of the purposes of this library is to investigate the symbolic case, which means I had to implement my own eigensystem decomposition algorithm. I checked that it produces the same result as it should in Mathematica, so at least we are being consistent.
Here are some examples of some new functions:
Code:
sage: from hyper.all import *
sage: t = var('t')
sage: hyperbolic_flow(h_poly(x), t, x, 0, 2)
x^2*C1^(t - 1)*(C1^t - 1)*C2/(C1 - 1) + x*C1^t
sage: hyperbolic_flow_coeffs(h_poly(x), t, x, 0, 2)
[0,
C1^t,
C1^(t - 1)*(C1^t - 1)*C2/(C1 - 1)]
sage: c = var('c')
sage: hyperbolic_flow_coeffs(e^(c*x) - 1, t, x, 0, 3)
[0,
c^t,
c^(t + 1)*(c^t - 1)/(2*(c - 1)),
c^(t + 2)*(c^t - 1)*(c^(t + 1) + 2*c^t - 2*c - 1)/(6*(c - 1)^2*(c + 1))]I would very much like to work together! It would also help the project be more robust with more eyes making sure the code is right

I have a crappy server with a dynamic IP, but I think we would need one with a static IP to be more reliable. "HyperOp" is a good name for a library, but I was thinking "HyperSage". What do you think?
Now that both basic parabolic and hyperbolic methods are fleshed out, I'm not going to work much more on them. There is also a regular iteration sub-module, but the only stuff that would go here is Daniel Geisler's summation method, which I don't understand very well. Since most of regular iteration is working (parabolic/hyperbolic), I'm going to start working on the natural iteration sub-module.
Andrew Robbins

