Math-Calculus-NewtonRaphson

 view release on metacpan or  search on metacpan

NewtonRaphson.pm  view on Meta::CPAN

	# Build up an expression for us to plug values into.
	my $fiter = {
		operation	=> '/',
		operand1	=> $self->{'expression'},
		operand2	=> $diffExp->getExpressionTree
	};
	
	# Now iterate.
	my $curGuess = $guess;
	my $lastGuess = !$guess;
	my $iterations = 0;
	while ($iterations < $MAXITERATIONS && $curGuess != $lastGuess) {
		# Write traceback.
		$self->{'traceback'} .= "$iterations\t$curGuess\n";
		
		# Sub value in.
		$lastGuess = $curGuess;
		eval {
			$curGuess = $lastGuess - $self->evaluateTree($fiter, $variable => $lastGuess, %mappings);
		} || ($self->{'error'} ||= "Fatal error! $@");
		
		# Increment iterations counter.
		$iterations++;
	}
	
	# Return an appropriate value (or lack thereof...).
	if ($self->{'error'}) {
		return undef;
	} else {
		return $curGuess;
	}
}



( run in 1.505 second using v1.01-cache-2.11-cpan-71847e10f99 )