468,296 Members | 1,252 Online
Bytes | Developer Community
New Post

Home Posts Topics Members FAQ

Post your question to a community of 468,296 developers. It's quick & easy.

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 5543
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[0] . '-(' . $terms[1] . ')';

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)
in the subject line, or your mail will be ruthlessly discarded.
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[0] . '-(' . $terms[1] . ')';

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)
in the subject line, or your mail will be ruthlessly discarded.

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

instead of

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

instead of

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
6 posts views Thread by Trev17 | last post: by
6 posts views Thread by trashman.horlicks | last post: by
reply views Thread by NPC403 | last post: by
reply views Thread by Teichintx | last post: by
By using this site, you agree to our Privacy Policy and Terms of Use.