• 10
• 10
• 12
• 12
• 14

# making a computer algebra program

This topic is 4983 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

I have been making a computer algebra program, but the problem is I don't know where I should stop! (It does draw the equations in the correct format but here I will just illustrate them with a text version:) For example, it has the time-saving ability for people to expand equations: (e.g) (a+b)*(a-b) = a^2 - b^2 Differentiate equations: (e.g) diff( sin(x^2) , x ) = 2*x*cos(x^2) etc. Take out simple factors: (e.g) 12*a*b+15*a*c = 3*a*(4*a+5*c) Make function substititions: (e.g) f(f(x)+3) | f(n) --> sin(n+a) = sin(sin(x+a)+a+3) Summations: (e.g) sum( x*tan(x),x,1,3) = tan(1)+2*tan(2)+3*tan(3) Iterations: (e.g) iterate( f(x+1/n),x,a,n,3) = f(f(f(a+1/3)+1/2)+1) Multiply matrices & take a part of a matrix (e.g) (a,b ; c,d)_1,2 = c Simplify expressions involving square roots and trig functions: (e.g) sin(x)^2+cos(x)^2 = 1 , sqrt(x)^2 = x Solve quadratic,cubic and quartic equations symbolically and numerically (e.g) x = ( -b +/- sqrt(b^2-4*a*c)) / (2*a) Simplify fractions: (e.g) a/b + c/d = (a*d +b*c)/(b*d) It can also multiply Grassman variables (written with colons) like this: (e.g) a: * b: = - b: * a: and quarternions: (e.g) i * j = k it can also draw graphs and rotateable 3D parametric graphs of knots and such-like with OpenGL. So it can do loads of things including help you find solutions to the Maxwell's equations for example you type in:
(
div(E)=J;
div(H)=0;
curl(H)=diff(E,t);
curl(E)=-diff(H,t)
)

|div(S) --> diff(  (S_1),x)+diff((S_2),y)+diff((S_3),z)

|curl(P) -->
(diff((P_3),y)-diff((P_2),x);
diff((P_1),x)-diff((P_3),z);
diff((P_2),z)-diff((P_1),y))

|E -->(cos(x-t); 0; 0)
|H -->(0; cos(x-t); 0)
|J -->-sin(x-t)

then you press simplify to see if this substitution works. It does this in a second or two. (I have tried making it try solutions for General Relativity but so far it can only do this fast enough in 2 dimensions since in 4 dimensions there are over 100,000 terms but I'm trying to make it faster so that it can cope). So it is a very useful tool but - is it useful enough? For example, must a computer algebra program necessarily be able to: 1) The inverse of differentiation: Integrate any expression involving trig functions, polynomials and square roots (or say that it can't be done). 2) The inverse of expanding: Factorise any multi-variable polynomial The problem being that these two things are exceedingly difficult things to do and I haven't found anywhere on the internet that tells you how to do them. So the question is either: Is the program useful enough already or if not does anyone have any clues or know of any websites that tell you how to do (1) and (2)? Or is there anything ELSE that you think a computer algebra program should do or would be useful for you? (When it is finished I will either give it away as freeware on my website or if it is too big for that give it away for 5 pounds on a CD-ROM). Thanks.