RE: Integrate vs. NIntegrate

*To*: mathgroup at smc.vnet.net*Subject*: [mg12795] RE: [mg12767] Integrate vs. NIntegrate*From*: Ersek_Ted%PAX1A at mr.nawcad.navy.mil*Date*: Fri, 12 Jun 1998 04:05:28 -0400*Sender*: owner-wri-mathgroup at wolfram.com

Andreas wrote: | |who knows how I can get ride of the following type of problem with |undefined limits in NIntegrate? | |In[1]:=FindRoot[NIntegrate[y,{y,0,x}]==1,{x,0.25}] NIntegrate::"nlim": |"\!\(y\) = \!\(x\) is not a valid limit of integration." |NIntegrate::"nlim": "\!\(y\) = \!\(x\) is not a valid limit of |integration." |NIntegrate::"nlim": "\!\(y\) = \!\(x\) is not a valid limit of |integration." |General::"stop": "Further output of \!\(NIntegrate :: \"nlim\"\) will be |suppressed during this calculation." Out[1]:={x->1.41421} | | You gave FindRoot one starting value, so it will use Newton's method. To use Newton's method FindRoot needs to compute D[NIntegrate[y,{y,0,x}]-1,x] In the line below we see Mathematica can do this, but it produces a message each time it tries to. In[1]:= D[NIntegrate[y,{y,0,x}]-1,x] NIntegrate::"nlim": "\!\(y\) = \!\(x\) is not a valid limit of integration." Out[1]= x _______________________________ To prevent this problem you can: 1- Tell the FindRoot algorithm that the derivative is (x) using the Jacobian option. 2- Give FindRoot two starting values. This way it will use either Brent's method or Secant method. They will not have this problem because they don't need to compute the derivative. 3- Evaluate Off[NIntegrate::nlim], and display of the message will be suppressed. Then you can use you initial attempt, and it will work just fine. - See the lines below - _____________________________ In[2]:= FindRoot[NIntegrate[y,{y,0,x}]==1,{x,0.25},Jacobian->x] Out[2]= {x\[Rule]1.41421} In[3]:= FindRoot[NIntegrate[y,{y,0,x}]==1,{x,0.25,0.3}] Out[3]= {x\[Rule]1.41421} In[4]:= Off[NIntegrate::nlim] In[5]:= FindRoot[NIntegrate[y,{y,0,x}]==1,{x,0.25}] Out[5]= {x\[Rule]1.41421} ___________________________ Ted Ersek