Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.math.mathematica

Topic: Increasing precision in FindRoot
Replies: 2   Last Post: Jun 20, 2013 4:01 AM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
Samuel Mark Young

Posts: 6
Registered: 6/3/13
Increasing precision in FindRoot
Posted: Jun 19, 2013 1:23 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply


I'm trying to use FindRoot to solve an integral equation. The code I'm using is below.

Defining some variables:


Wvalues = Range[0.1, 1, 0.1];

xCritical = zSol/. {z -> 1, W -> Wvalues[[n]]};
yCritical =xCritical/=F3;


Essentially, xCritical gives the solutions to some equation (don't worry too much about the actual equation - it just returns one positive and one negative number, say 3 and -5). Then I make the change to a variable y, which is a Gaussian variable with variance 1. I want to solve this for a number of different values for W - which is why I have defined a set containing different values of W, in the full code, a loop repeats this calculation for different values of n.


I then want to use FindRoot to solve the equation below to find sigma


=F3 /. FindRoot[(1/(Sqrt[2 Pi])) (Integrate[
Exp[-(y^2)/2], {y, yCritical[[2]], infinity}] +
Integrate[Exp[-(y^2)/2], {y, -infinity, yCritical[[1]]}]) == (10^-5), {=F3, 0.0001,
10}]


This works fine, and gives the correct results - I only include it to give context to the problem, and so that you can say which bits of code I need to change to increase precision. Where I run into problems is when I want to solve for 10^-20 instead:


=F3 /. FindRoot[(1/(Sqrt[2 Pi])) (Integrate[
Exp[-(y^2)/2], {y, yCritical[[2]], infinity}] +
Integrate[Exp[-(y^2)/2], {y, -infinity, yCritical[[1]]}]) == (10^-20), {=F3, 0.0001,
10}]


Underflow occurs a lot here. Mathematica seems to be having problems with the small numbers. What changes do I need to make in order to be able to solve for 10^-20? I need something that will work automatically with zero input from me - people have recommended plotting graphs first to find approx solutions etc, which I don't have time to do as I want to run this for a lot of cases. Note that I only need sigma to be found to 5 signficant figures.


I've tried fiddling around with WorkingPrecision, PrecisionGoal, and AccuracyGoal - but could be missing something simple, or another way of asking Mathematica to solve the equation. I had a similar problem when I was working with anther system - and that was cleared up just by telling it to work to 40 digits of precision with one line at the start of the code, but doesn't seem to work with Mathematica.


Thank you for any help, please contact me sy81@sussex.ac.uk with any questions.


Regards,

Sam Young



Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.