.\" Automatically generated by Pod::Man 2.16 (Pod::Simple 3.05) .\" .\" Standard preamble: .\" ======================================================================== .de Sh \" Subsection heading .br .if t .Sp .ne 5 .PP \fB\\$1\fR .PP .. .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is turned on, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.Sh), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .ie \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . nr % 0 . rr F .\} .el \{\ . de IX .. .\} .\" .\" Accent mark definitions (@(#)ms.acc 1.5 88/02/08 SMI; from UCB 4.2). .\" Fear. Run. Save yourself. No user-serviceable parts. . \" fudge factors for nroff and troff .if n \{\ . ds #H 0 . ds #V .8m . ds #F .3m . ds #[ \f1 . ds #] \fP .\} .if t \{\ . ds #H ((1u-(\\\\n(.fu%2u))*.13m) . ds #V .6m . ds #F 0 . ds #[ \& . ds #] \& .\} . \" simple accents for nroff and troff .if n \{\ . ds ' \& . ds ` \& . ds ^ \& . ds , \& . ds ~ ~ . ds / .\} .if t \{\ . ds ' \\k:\h'-(\\n(.wu*8/10-\*(#H)'\'\h"|\\n:u" . ds ` \\k:\h'-(\\n(.wu*8/10-\*(#H)'\`\h'|\\n:u' . ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'^\h'|\\n:u' . ds , \\k:\h'-(\\n(.wu*8/10)',\h'|\\n:u' . ds ~ \\k:\h'-(\\n(.wu-\*(#H-.1m)'~\h'|\\n:u' . ds / \\k:\h'-(\\n(.wu*8/10-\*(#H)'\z\(sl\h'|\\n:u' .\} . \" troff and (daisy-wheel) nroff accents .ds : \\k:\h'-(\\n(.wu*8/10-\*(#H+.1m+\*(#F)'\v'-\*(#V'\z.\h'.2m+\*(#F'.\h'|\\n:u'\v'\*(#V' .ds 8 \h'\*(#H'\(*b\h'-\*(#H' .ds o \\k:\h'-(\\n(.wu+\w'\(de'u-\*(#H)/2u'\v'-.3n'\*(#[\z\(de\v'.3n'\h'|\\n:u'\*(#] .ds d- \h'\*(#H'\(pd\h'-\w'~'u'\v'-.25m'\f2\(hy\fP\v'.25m'\h'-\*(#H' .ds D- D\\k:\h'-\w'D'u'\v'-.11m'\z\(hy\v'.11m'\h'|\\n:u' .ds th \*(#[\v'.3m'\s+1I\s-1\v'-.3m'\h'-(\w'I'u*2/3)'\s-1o\s+1\*(#] .ds Th \*(#[\s+2I\s-2\h'-\w'I'u*3/5'\v'-.3m'o\v'.3m'\*(#] .ds ae a\h'-(\w'a'u*4/10)'e .ds Ae A\h'-(\w'A'u*4/10)'E . \" corrections for vroff .if v .ds ~ \\k:\h'-(\\n(.wu*9/10-\*(#H)'\s-2\u~\d\s+2\h'|\\n:u' .if v .ds ^ \\k:\h'-(\\n(.wu*10/11-\*(#H)'\v'-.4m'^\v'.4m'\h'|\\n:u' . \" for low resolution devices (crt and lpr) .if \n(.H>23 .if \n(.V>19 \ \{\ . ds : e . ds 8 ss . ds o a . ds d- d\h'-1'\(ga . ds D- D\h'-1'\(hy . ds th \o'bp' . ds Th \o'LP' . ds ae ae . ds Ae AE .\} .rm #[ #] #H #V #F C .\" ======================================================================== .\" .IX Title "NewtonRaphson 3pm" .TH NewtonRaphson 3pm "2008-06-13" "perl v5.10.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Math::Calculus::NewtonRaphson \- Algebraic Newton Raphson Implementation .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& use Math::Calculus::NewtonRaphson; \& \& # Create an object. \& my $exp = Math::Calculus::NewtonRaphson\->new; \& \& # Set a variable and expression. \& $exp\->addVariable(\*(Aqx\*(Aq); \& $exp\->setExpression(\*(Aqx^2 \- 5\*(Aq) or die $exp\->getError; \& \& # Apply Newton Raphson. \& my $result = $exp\->newtonRaphson(2) or die $exp\->getError; \& print $result; # Prints 1.4142... .Ve .SH "DESCRIPTION" .IX Header "DESCRIPTION" This module can take an algebraic expression, parses it and then uses the Newton Raphson method to solve the it. The Newton Raphson method relies on the fact that the expression you pass in evaluates to zero where there is a solution. That is, to solve:\- .PP x^2 = 5 .PP You would need to pass in:\- .PP x^2 \- 5 .PP It understands expressions containing any of the operators +, \-, *, / and ^ (raise to power), bracketed expressions to enable correct precedence and the functions ln, exp, sin, cos, tan, sec, cosec, cot, sinh, cosh, tanh, sech, cosech, coth, asin, acos, atan, asinh, acosh and atanh. .SH "EXPORT" .IX Header "EXPORT" None by default. .SH "METHODS" .IX Header "METHODS" .IP "new" 4 .IX Item "new" .Vb 1 \& $exp = Math::Calculus::NewtonRaphson\->new; .Ve .Sp Creates a new instance of the Newton Raphson object, which can hold an individual expression. .IP "addVariable" 4 .IX Item "addVariable" .Vb 1 \& $exp\->addVariable(\*(Aqx\*(Aq); .Ve .Sp Sets a certain named value in the expression as being a variable. A named value must be an alphabetic chracter. .IP "setExpression" 4 .IX Item "setExpression" .Vb 1 \& $exp\->setExpression(\*(Aqx^2 + 5*x); .Ve .Sp Takes an expression in human-readable form and stores it internally as a tree structure, checking it is a valid expression that the module can understand in the process. Note that the engine is strict about syntax. For example, note above that you must write 5*x and not just 5x. Whitespace is allowed in the expression, but does not have any effect on precedence. If you require control of precedence, use brackets; bracketed expressions will always be evaluated first, as you would normally expect. The module follows the \s-1BODMAS\s0 precedence convention. Returns undef on failure and a true value on success. .IP "getExpression" 4 .IX Item "getExpression" .Vb 1 \& $expr = $exp\->getExpression; .Ve .Sp Returns a textaul, human readable representation of the expression that is being stored. .IP "newtonRaphson" 4 .IX Item "newtonRaphson" .Vb 1 \& $result = $exp\->newtonRaphson($variable, $guess, %mappings); .Ve .Sp Attempts to solve the expression for the given variable using the Newton Raphson method, using the passed value as the first guess. The mappings hash allows any other non-numeric constants to be mapped to numeric values \- a pre-requisite for solving such equations. .IP "getTraceback" 4 .IX Item "getTraceback" .Vb 1 \& $exp\->getTraceback; .Ve .Sp When setExpression and newtonRaphson are called, a traceback is generated to describe what these functions did. If an error occurs, this traceback can be extremely useful in helping track down the source of the error. .IP "getError" 4 .IX Item "getError" .Vb 1 \& $exp\->getError; .Ve .Sp When any method other than getTraceback is called, the error message stored is cleared, and then any errors that occur during the execution of the method are stored. If failure occurs, call this method to get a textual representation of the error. .SH "SEE ALSO" .IX Header "SEE ALSO" The author of this module has a website at , which has the latest news about the module and a web-based frontend to allow you to test the module out for yourself. .SH "AUTHOR" .IX Header "AUTHOR" Jonathan Worthington, .SH "COPYRIGHT AND LICENSE" .IX Header "COPYRIGHT AND LICENSE" Copyright (C) 2004 by Jonathan Worthington .PP This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.1 or, at your option, any later version of Perl 5 you may have available. .SH "POD ERRORS" .IX Header "POD ERRORS" Hey! \fBThe above document had some coding errors, which are explained below:\fR .IP "Around line 65:" 4 .IX Item "Around line 65:" \&'=item' outside of any '=over' .IP "Around line 186:" 4 .IX Item "Around line 186:" You forgot a '=back' before '=head1'