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