NAME
Math::Symbolic - Symbolic calculations
SYNOPSIS
use Math::Symbolic;
DESCRIPTION
Math::Symbolic is intended to offer symbolic calculation capabilities to the Perl programmer without using external (and commercial) libraries and/or applications.
Unless, however, some interested and knowledgable developers turn up to participate in the development, the library will be severely limited by my experience in the area. Symbolic calculations are an active field of research in CS.
EXPORT
None by default, but you may choose to have the following constants exported to your namespace using the standard Exporter semantics (including the :all tag).
Constants representing operator types: (First letter indicates arity)
B_SUM
B_DIFFERENCE
B_PRODUCT
B_DIVISION
U_MINUS
U_P_DERIVATIVE
U_T_DERIVATIVE
Constants representing Math::Symbolic term types:
T_OPERATOR
T_CONSTANT
T_VARIABLE
EXAMPLES
This example demonstrates variable and operator creation using object prototypes as well as partial derivatives and the various ways of applying derivatives and simplifying terms.
use Math::Symbolic qw/:all/;
my $var = Math::Symbolic::Variable->new();
my $a = $var->new('a' => 2);
my $b = $var->new('b' => 3);
my $c = $var->new('c' => 4);
print "Vars: a=" . $a->value() .
" b=" . $b->value() .
" c=" . $c->value() .
" (Values are optional)\n\n";
my $op = Math::Symbolic::Operator->new();
my $add1 = $op->new('+', $a, $c);
my $mult1 = $op->new('*', $a, $b);
my $div1 = $op->new('/', $add1, $mult1);
print "Expression: (a+c)/(a*b)\n\n";
print "prefix notation and evaluation:\n";
print $div1->to_string('prefix') . " = " . $div1->value() . "\n\n";
print "Now, we derive this partially to a: (prefix again)\n";
my $n_tree = $op->new( {
type => U_P_DERIVATIVE,
operands => [$div1, $a],
} );
print $n_tree->to_string('prefix') . " = " . $n_tree->value() . "\n\n";
print "Now, we apply the derivative to the term: (infix)\n";
my $derived = $n_tree->apply_derivatives();
print "$derived = " . $derived->value() . "\n\n";
print "Finally, we simplify the derived term as much as possible:\n";
my $simplified = $derived->simplify();
print "$simplified = " . $derived->value() . "\n\n";
AUTHOR
Steffen Mueller, <symbolic-module at steffen-mueller dot net>
SEE ALSO
perl. Math::Symbolic::Base Math::Symbolic::Operator Math::Symbolic::Derivative Math::Symbolic::Constant Math::Symbolic::Variable