I'm looking for resources that will get me into the basics of mathematics.
I'm coding a small utility library for manipulating n-dimensional vectors because I need a simple way of looking at data from different angles.
I want to be able to rotate the underlying euclidian space to efficiently change the direction of traversal of multidimensional arrays.
Given the vector [0, 1] I want to acces [y, x] instead of [x, y] or [0,1,2,3,4,5] - [z,x,y,a,b,c]. This is simple for <4 dimensions, but after the third dimension I fail to generalize the concept of rotation matrix generation to higher dimensions.
I mainly need this to access data with no mathematical properties, but it would be intriguing if I could use this to project n-dimensional implicit surface equations onto a 3d space and have it rotate around axes of different dimensions to visualize tesseracts, 4-simplex, 5-cubes, or cartesian products of either.
The problem is I don't know even beginners algebra, no trigonometry nothing really. I started playing around with desmos.com today. I thought a good exercise would be to find a way to compute the square root of x.
I started working backward from $x^{2}$. After an embarrassingly long time working my way through different naive approaches I found $2^{\left(0.5\frac{\log\left(x2\right)}{\log\left(2\right)}\right)}$ works. In retrospect that's pretty obvious, but well.
I also tried to find a formula for calculating the sum of exponential series like $n^{1} + n^{2} + n^{k}$. I had the lucky intuition that it's gotta be < $n^(n-1)$ and $\frac{1}{n-1}\left(n^{\left(n+1\right)}-1\right)-1$ works, but that took about half a day to get there.
The thing is I could have avoided most of the naive steps in the wrong direction If I had at least a basic idea of mathematical concepts. I want to be able to read an expression and get a mental image of the parts it's composed of and their mathematical meaning. I want to be able to write my own n-dimensional rotation matrix generation algorithm, rather than having to read pseudocode implementations and deduce the mathematical meaning of it.
I think Math is an intriguing world and I'd love to come up with my own formulas for existing problems because you learn a whole lot on the way. I also think that having a deeper understanding of mathematics would allow me to write cleaner code and algorithms.
The thing is I don't know where to start. - I know there's the Pérez-Aguila algorithm, but I'd rather come up with my own in order to actually understand why it's working.
Can you recommend a few good books/resources name the topics that I would need to learn about in order to construct such an algorithm? I don't even know what I need to know to start.
there are many ways to start learning this.
https://encyclopediaofmath.org/wiki/Higher-dimensional_geometry.
higher dimensional rotations preserve information. from an information theory perspective they are all equivalent ways to present the same information. projections from n dimensional space to lower dimensional spaces guarantee that there will be information loss.
since your data is finite and discrete you can think of all the operations on your data as actions on a finite group. you can learn group theory. you can learn graph theory. you can learn abstract algebra which includes some group theory and linear algebra. you can learn linear algebra more. you can approach this as a geometry problem where your focus is on projections in n dimensional continuous space. then when you apply that to writing software there will be some hard lessons about continuous vs discrete and pure vs applied mathematics. if you want the applied analytic geometry books then that is one more book to get.
now think about if you are not rotating 90 degrees then you have a lot more math. you need to interpolate. you need a lot of algorithms to solve all the various problems.
a good read about gimble lock and euler angles should get you started before you move on to quarternions. There may be other algorithms for the rotations but I haven't found exactly what I am looking for yet. I may need to attempt to invent something like this. one of the solutions to gimble lock that I found was some javascript coder that was constantly making copies of the 3d object to destroy the old one after the rotation. this way it would never have gimble lock because the new copy has a rotation vector (0,0,0,0) at the start of every transformation (rotation).