Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2005
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

NIntegrate-FindRoot acting up in version 5.1

  • To: mathgroup at smc.vnet.net
  • Subject: [mg56943] NIntegrate-FindRoot acting up in version 5.1
  • From: "John Roberts" <jlr-d at jlr-d.cnc.net>
  • Date: Wed, 11 May 2005 05:23:58 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

 I originally made the input shown below in Mathematica 4.1.1. Version 
4.1.1 ran it flawlessly and always produced the correct result from 
NIntegrate with no warnings or error messages. Now, when I run the same 
notebook with version 5.1.0 it crashes and gives the "FindRoot: :nlnum" 
message shown below:

In1:   len = Sqrt[ (z^2 + (x Cos[ang] + r Sin[b] )^2  + (-r Cos[b] - x 
Sin[ang])^2 ] ;

In2:  speed = NIntegrate[ (eqn = FindRoot[ len == c b r / v, {b, 
0}, WorkingPrecision->100,
        AccuracyGoal->80 ] ; beta = b  /.  eqn;  fnax) , {ang,  0,  
3Pi/2,  2Pi},  WorkingPrecision->80,  AccuracyGoal->9 ]

Out2: FindRoot: :nlnum : The function value {0. + Sqrt[0.0172266 + (0. + 
0.05 <<1>>)^2 + (-0.125 - 0.05 Sin[<<1>>])^2]
         is not a list of numbers with dimensions {1} at {b} = {0.}.

As can be seen from the input shown above, NIntegrate integrates the 
expression fnax with respect to the angle ang. But fnax is also a 
function of the initial angle beta or b (beta = b), so each time 
NIntegrate calculates the value of fnax it must first use FindRoot to 
find the value of beta that corresponds to the value of ang that it is 
using. I did not include the expression for fnax here because it is 
rather large, but there is nothing exotic about fnax, it is just a lot 
of terms with Sin and Cos functions.

All of the values z, x, r, c v are input with 120 decimal places of 
precision or with infinite precision (no decimal point).

It should also be noted that I checked the FindRoot part alone (without 
NIntegrate) at various points along the range of integration from ang 
= 0 to ang = 2 Pi, and FindRoot got the correct value of beta at 
every point with no warnings or error messages; so the problem appears 
to be associated with how NIntegrate uses FindRoot in Mathematica 5.1 
rather than with FindRoot itself.


Thanks in advance for any help you can give me,

John R.



  • Prev by Date: Re: Re: NSum: badly missed Option
  • Next by Date: Re: Re: Problem with substitutions in SparseArray?
  • Previous by thread: Re: Adding two numbers of high precision results in a number of low precision??David Bailey,http://www.dbaileyconsultancy.co.uk
  • Next by thread: Re: NIntegrate-FindRoot acting up in version 5.1