From: Gunter K. <gu...@pe...> - 2018-05-30 09:00:56
|
Common types of equation I normally need to optimize by hand (asking maxima lateron if ratsimp(expand(new_equation - old_equation) = 0) are: y^2-2*y+x^2+2*x+2 which is (y-1)^2+(x+1)^2 factor() wouldn't find that because it can either factor out x, or y - and even if it could do both at the same time it would need to get the idea that it can do better if it splits the "+2" in "+1" "+1"... ...but better is relative: Perhaps I just wanted to add two parables (one in x and one in y direction) and wanted to move the result upwards by 2 units. It might sound logical to teach factor() to do this. And this would simplify x^2/(x-1)+(2*x)/(x-1) to ((x+1)^2-1)/(x-1) But that would mean simplifying x^2+2x to (x+1)^2-1. Which is arguably mind-boggingly wrong. Normally the advantage of maths is that you can express a problem in a way that doesn't require the computer to understand the purpose of the calculation. For simplification it normally needs to, though. --- Artificial intelligence might or might not having to do with natural intelligence as it normally means: - We give a computer loads of pairs of input and correct output - then we tell a computer to try more or less random algorithms until one with some probability predicts the right output - and then we tell the computer to play around with the algorithm's coefficients and to look if that makes the results better. Unfortunately - the resulting algorithm will most probably not be very efficient (and maxima already now often faces the problem that it has to decide if to use an algorithm that makes the user run out of time / the computer run out of memory or if it is more reasonable to just use a noun form or an algorithm that solves a smaller class of problems but does do so with limited resources. - the algorithm is bound to take obviously wrong turns. For example an algorithm that is trained to discern Stop signs from all other street signs might in the end only look at the angle of the lower left edge and will interpret any sign that is dented at the lower left edge as "Stop" - and there is a probability that there are cases in which the result from the AI will be completely erroneous. For an CAS one could try to limit the AI to only do things that are guaranteed to not change the result and to provide the AI with hundreds of variants of factor() that factor x^2+2*x to (x^2-1)^2-1, that do so only for x but not for y, that factor x^2 to (x-1)^2+2x-1 (sometimes that is useful, too) or with a more generalized form of playing with the equation. But that would mean we need to train the AI on millions on equations that each have a known "best" form. And if we generated the input for training the AI automatically the AI will be optimized on exactly these types of equations and maybe neglecting equations that don't occur too often in the training data. Normally the advantage of mathematics is that it doesn't require us to explain the computer what it is for - just to explain what needs to be calculated. For the purpose of simplification the computer would need to know what we need the result for. => I wouldn't be astonished if we had 20 full-time programmers available the AI still would need > 10 Years in order to get better than an average student that leaves the grunt work to a traditional CAS. And it would need considerably more time to match a traditional CAS in the hands of a well-trained and creative student. Which on the other hand is good news: If you study mathematics now the computer won't make you obsolete not will it do so with your grandchildren. And even basic mathematics is still fun: The computer helps you but working with the computer still is more teamwork than being a computer that just needs you to explain the problems. Kind regards, Gunter. |