General question about mathematical thinking
Solution 1:
Mistakes in calculations plague mathematicians at all levels. Here's what Vladimir Arnol'd had to say about it:
"Every working mathematician knows that if one does not control oneself (best of all by examples), then after some ten pages half of all the signs in formulae will be wrong and twos will find their way from denominators into numerators."
The best way to catch mistakes in calculations is using 'sanity checks'. The most basic versions of these go back to elementary school (did you get a negative number for the volume?) and at the more advanced level you might plug in different values of x in your formula, let x go to infinity, etc. If you proved something about a group or a manifold, see what it gives you in a specific example. If you can think of another way to do the same calculation, that's best of all.
When you say "I just give up after making the same mistakes and reaching dead ends for two hours, look at the solution and don't understand how I could have come up with it on my own", it makes me think you're working on something too difficult. Find easier problems to work on first, build up your skills, and then come back to the harder problems later.
Also, keep poking around different subjects until you find where your strengths are. I've found in my own life that abstract algebra has always been and remains confusing and difficult. Calculus, differential equations, asymptotic analysis came much more easily. Complex analysis used to be torture, but now I've gotten pretty good at it and consider it one of my strengths. If something is really making you suffer, drop it for a while (maybe months or even years!) and then if necessary come back to it later when hopefully your increased mathematical maturity will make it easier.
Solution 2:
Mathematics uses one thing: This is simply sticking to the definitions what already has been proved. The basic point is that you don't have to be a quick calculator in order to be good at math.
I can only agree with math postdoc: When I started learning differential geometry, I was more han confused. I wasn't able to perform the most simple calculations. But actually, that will become better and better as time passes.
If you rejoice in repetitive actions (as I do for instance) then it is a good way to keep repeting what you've learned so far, or what you're interested in all over again. I think I have read one book on differential geometry more than 10 times. After you have once read an entire book, deal with somehing different first, something that seems more difficult to you, then read the book you read initially again. Since you've already understood what it is about, your brain will start focussing on the things that are important for it, i.e., how to work with that stuff practically.
When I started with math (I was still at school - but due to external studies, I was able to work through a flexible mathematical curriculum.) and once had to calculate some volume integral, I had to spend one month on this exercise until, the day before a final chemistry exam, I came across the solution. I was so happy that I couldn't sleep anymore and was really tired during the exam so that I didn't score as a high as I regularly did.
Solution 3:
I have a method that helps me avoid errors. Of course it isn't perfect.
I bring up a text editor and enter the equation in some sort of ASCII form. Then I copy-paste the equation onto the next line and make a simple change. Then I copy-paste the result and make another simple change, etc.
Many of the changes one would make can be done with mindless operations on the text itself. For example, when you want to perform a distribution in the case of $a(b+c)$, highlight $a$, cut it to the clipboard, then paste it in front of all of the terms inside the parentheses. This simple example makes it look silly, but the method makes easy work of the most complicated expansions.
To factor something like $ax + bx$ or $a/x + b/x$, do these steps:
$ax + bx$
$ax + b)x$
$a + b)x$
$(a + b)x$
Another example is with expressions of the form $\mathrm e^a \mathrm e^b$. I represent them with "exp a exp b". Replace the second "exp" with " + " and put parentheses around the sum.
When you want to distribute a negative sign in the case of $-(a - b - c\space ...)$, add a negative sign in front of the quantity and in front of each term inside the quantity, like this: $--(-a--b--c\space ...)$ Then you can take away the parentheses. The triple minus becomes a single minus, and any double minuses become pluses.
Copy-paste makes it painless to do very simple steps, and eliminates the possibility of copy errors. Stupid mechanical rules reduce the chance of arithmetic errors.
I dunno. Hope this helps.