470,591 Members | 2,190 Online

# Equation

Hello people =)

Has somebody a nice script, which can solve equations ?
It would be super, if someone has an idea where I can get such a script /
code in php.

Thanks.

Gretting!
Jul 17 '05 #1
4 5687 Sven Dzepina wrote:
Hello people =)

Has somebody a nice script, which can solve equations ?
yes, I do now :-)
It would be super, if someone has an idea where I can get such a script /
code in php.
Use mine
Thanks.

you're welcome :-)))

<?php // solve equation
function solve(\$eq) {
\$eq = str_replace(' ', '', \$eq);

// validate expression
\$terms = explode('=', \$eq);
if (count(\$terms) != 2) {
return('syntax error: you must have one (and only one) "=" in ['
. \$eq . '].');
}

// put rhs in lhs
\$eq = \$terms . '-(' . \$terms . ')';

if (substr_count(\$eq, '(') != substr_count(\$eq, ')')) {
return('syntax error: parenthesis mismatch in [' . \$eq . '].');
}
if (preg_match('/\([^)]*\(/', \$eq)) {
return('syntax error: only one level of parenthesis allowed in ['
. \$eq . '].');
}
if (preg_match('/[^x0-9+*\/().=-]/', \$eq)) {
return('syntax error: the only valid characters are x, 0-9, +, '
. '*, /, (, ), ., and - in [' . \$eq . ']');
}
if (preg_match('/[^x0-9\)][-+\/*]/', \$eq)) {
return('syntax error: you can only operate on numbers in ['
. \$eq . ']');
}
if (preg_match('/[-+\/*][^x0-9\(]/', \$eq)) {
return('syntax error: you can only operate on numbers in ['
. \$eq . ']');
}

\$eq = str_replace('x', '\$x', \$eq);
\$y0 = \$y1 = 0;
\$x = 0; eval('\$y0 = ' . \$eq . ';');
\$x = 1; eval('\$y1 = ' . \$eq . ';');
\$slope = \$y1 - \$y0;
\$intersect = \$y0;
return (- (\$intersect / \$slope));
}

\$eq = '2 * (x + 4) = 10';
echo \$eq, ' ==> x = ', solve(\$eq), '<br />';

\$eq = '(2 * x) + 4 = 10';
echo \$eq, ' ==> x = ', solve(\$eq), '<br />';

\$eq = '2 * x + 4 = 10';
echo \$eq, ' ==> x = ', solve(\$eq), '<br />';

\$eq = '4 + x / 10 = 2';
echo \$eq, ' ==> x = ', solve(\$eq), '<br />';
?>
--
I have a spam filter working.
To mail me include "urkxvq" (with or without the quotes)
Jul 17 '05 #2
Big Thanks Pedro!
It's a great script =)

An Equation Script which can handle more variables would be better ;)
"Pedro" <he****@hotpop.com> schrieb im Newsbeitrag
news:d2********************************@4ax.com...
Sven Dzepina wrote:
Hello people =)

Has somebody a nice script, which can solve equations ?

yes, I do now :-)
It would be super, if someone has an idea where I can get such a script /
code in php.

Use mine
Thanks.

you're welcome :-)))

<?php // solve equation
function solve(\$eq) {
\$eq = str_replace(' ', '', \$eq);

// validate expression
\$terms = explode('=', \$eq);
if (count(\$terms) != 2) {
return('syntax error: you must have one (and only one) "=" in ['
. \$eq . '].');
}

// put rhs in lhs
\$eq = \$terms . '-(' . \$terms . ')';

if (substr_count(\$eq, '(') != substr_count(\$eq, ')')) {
return('syntax error: parenthesis mismatch in [' . \$eq . '].');
}
if (preg_match('/\([^)]*\(/', \$eq)) {
return('syntax error: only one level of parenthesis allowed in ['
. \$eq . '].');
}
if (preg_match('/[^x0-9+*\/().=-]/', \$eq)) {
return('syntax error: the only valid characters are x, 0-9, +, '
. '*, /, (, ), ., and - in [' . \$eq . ']');
}
if (preg_match('/[^x0-9\)][-+\/*]/', \$eq)) {
return('syntax error: you can only operate on numbers in ['
. \$eq . ']');
}
if (preg_match('/[-+\/*][^x0-9\(]/', \$eq)) {
return('syntax error: you can only operate on numbers in ['
. \$eq . ']');
}

\$eq = str_replace('x', '\$x', \$eq);
\$y0 = \$y1 = 0;
\$x = 0; eval('\$y0 = ' . \$eq . ';');
\$x = 1; eval('\$y1 = ' . \$eq . ';');
\$slope = \$y1 - \$y0;
\$intersect = \$y0;
return (- (\$intersect / \$slope));
}

\$eq = '2 * (x + 4) = 10';
echo \$eq, ' ==> x = ', solve(\$eq), '<br />';

\$eq = '(2 * x) + 4 = 10';
echo \$eq, ' ==> x = ', solve(\$eq), '<br />';

\$eq = '2 * x + 4 = 10';
echo \$eq, ' ==> x = ', solve(\$eq), '<br />';

\$eq = '4 + x / 10 = 2';
echo \$eq, ' ==> x = ', solve(\$eq), '<br />';
?>
--
I have a spam filter working.
To mail me include "urkxvq" (with or without the quotes)

Jul 17 '05 #3
Sven Dzepina wrote:
Big Thanks Pedro!
It's a great script =)
LOL, thanks

An Equation Script which can handle more variables would be better ;)

Yes, I'm pretty sure it would.
If you can guarantee the equations are normalized

3x - 6 = 0

4(x-1) = x+2

that makes making the solver script terribly easy for

a) ax+b=0
b) ax^2+bx+c=0
c) ax+by+c=0 (and) dx+ey+f=0
d) ...

Input only the constants ... not the whole equation;
for the equation above you'd input only: a=3, and b=-6

and then solve (after checking for division by zero only):
return -(\$b/\$a);
or, for equation in type 2:
return array((-\$b+sqrt(\$a*\$a-4*\$a*\$c))/(2*\$a),
(-\$b-sqrt(\$a*\$a-4*\$a*\$c))/(2*\$a));

etc. ... ...

Happy Coding :-)

Jul 17 '05 #4
Hi Pedro,

you must be a very intelligent human =)

Gretting.

"Pedro" <he****@hotpop.com> schrieb im Newsbeitrag
news:bm************@ID-203069.news.uni-berlin.de...
Sven Dzepina wrote:
Big Thanks Pedro!
It's a great script =)

LOL, thanks

An Equation Script which can handle more variables would be better ;)

Yes, I'm pretty sure it would.
If you can guarantee the equations are normalized

3x - 6 = 0

4(x-1) = x+2

that makes making the solver script terribly easy for

a) ax+b=0
b) ax^2+bx+c=0
c) ax+by+c=0 (and) dx+ey+f=0
d) ...

Input only the constants ... not the whole equation;
for the equation above you'd input only: a=3, and b=-6

and then solve (after checking for division by zero only):
return -(\$b/\$a);
or, for equation in type 2:
return array((-\$b+sqrt(\$a*\$a-4*\$a*\$c))/(2*\$a),
(-\$b-sqrt(\$a*\$a-4*\$a*\$c))/(2*\$a));

etc. ... ...

Happy Coding :-)

Jul 17 '05 #5

### This discussion thread is closed

Replies have been disabled for this discussion.

### Similar topics

 1 post views Thread by Russell Blau | last post: by 20 posts views Thread by Brian Kazian | last post: by 9 posts views Thread by Stud Muffin | last post: by 5 posts views Thread by w33nie | last post: by 6 posts views Thread by Trev17 | last post: by 6 posts views Thread by trashman.horlicks | last post: by 2 posts views Thread by Chuck | last post: by 10 posts views Thread by Constantine AI | last post: by 2 posts views Thread by phoenix1990 | last post: by reply views Thread by Trystan | last post: by 2 posts views Thread by AlexandraMT | last post: by reply views Thread by ryjfgjl | last post: by reply views Thread by AlexandraMT | last post: by 3 posts views Thread by kjhyder | last post: by reply views Thread by Domgrar | last post: by reply views Thread by drunkenHiker | last post: by 1 post views Thread by markleo | last post: by 1 post views Thread by EverettMiller | last post: by