Re: question
- To: mathgroup at smc.vnet.net
- Subject: [mg132527] Re: question
- From: Sseziwa Mukasa <mukasa at gmail.com>
- Date: Tue, 8 Apr 2014 03:37:05 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
- References: <20140405054854.566716A57@smc.vnet.net>
NIntegrate evaluates its arguments symbolically before it does numerical evaluation. So the problem is F1 and factor2 are being evaluated symbolically when g is evaluated and it's that you want to suppress not the evaluation of g with non-numeric arguments. That said there are other issues with evaluating your expressions numerically: (Debug) In[1]:= r1=1; r2=2; beta2[t_]:={r1*Cos[2*Pi*t],r2*Sin[2*Pi*t]} beta1[t_]:=beta2[t+4.8*t^2*(t-1)^2] = q2[t_]:=FunctionExpand[beta2'[t]/Sqrt[Norm[beta2'[t]]],Assumptions->t\[Element]Reals&&beta2'\[Element]Vectors[2,Reals]] = q1[s_]:=FunctionExpand[beta1'[s]/Sqrt[Norm[beta1'[s]]],Assumptions->s\[Element]Reals&&beta2'\[Element]Vectors[2,Reals]] a[t_,z_]:=2*q1[t].q2'[z]//FunctionExpand b[t_,z_]:=q1[t].q2[z]//FunctionExpand c[t_,z_]:=2*q1'[t].q2[z]//FunctionExpand F1[t_,z_?NumericQ]:=c[t,z]/b[t,z] F2[t_,z_]:=a[t,z]/b[t,z] factor1[s_,z_]:=Exp[-NIntegrate[F2[s,u],{u,0,z}]] factor2[s_,z_?NumericQ]:=Exp[NIntegrate[F2[s,u],{u,0,z}]] g[s_,z_]:=NIntegrate[factor2[s,tau]*F1[s,tau],{tau,0,z}] y[s_,z_]:=factor1[s,z]*g[s,z] y[.2,.3] (Debug) During evaluation of In[1]:= NIntegrate::slwcon: Numerical integration converging too slowly; suspect one of the following: singularity, value of the integration is 0, highly oscillatory integrand, or WorkingPrecision too small. >> (Debug) During evaluation of In[1]:= NIntegrate::ncvb: NIntegrate failed to converge to prescribed accuracy after 9 recursive bisections in u near {u} = {0.175777}. NIntegrate obtained -2.75436 and 6.834469819790337` for the integral and error estimates. >> (Debug) During evaluation of In[1]:= NIntegrate::errprec: Catastrophic loss of precision in the global error estimate due to insufficient WorkingPrecision or divergent integral. >> (Debug) Out[16]= 15.7109 NIntegrate[factor2[0.2,tau] F1[0.2,tau],{tau,0,0.3}] You may want to plot your function and choose different regions of integration. On Apr 5, 2014, at 1:48 AM, Hagwood, Charles R <charles.hagwood at nist.gov> wrote: > > I am so sick of Mathematica. It no longer seems to be a package to do applied work, but more for the university types. I have spent several hours using several combinations > of ?NumberQ in the following code, but still I get an error. Last weekend I spend several hours using FunctionExpand to get results I can read. > > Any help appreciated. > > > > r1=1; > r2=2; > beta2[t_]:={r1*Cos[2*Pi*t],r2*Sin[2*Pi*t]} > > beta1[t_]:=beta2[t+4.8*t^2*(t-1)^2] > > q2[t_]:= > = FunctionExpand[beta2'[t]/Sqrt[Norm[beta2'[t]]],Assumptions->t\[Element] Reals && beta2'\[Element]Vectors[2,Reals]] > > q1[s_]:=FunctionExpand[ > beta1'[s]/Sqrt[Norm[beta1'[s]]],Assumptions->s\[Element] Reals&& beta2'\[Element]Vectors[2,Reals]] > > > a[t_, z_] := 2*q1[t].q2'[z] // FunctionExpand > b[t_, z_] := q1[t].q2[z] // FunctionExpand > c[t_, z_] := 2*q1'[t].q2[z] // FunctionExpand > > > F1[t_, z_] := c[t, z]/b[t, z] > F2[t_, z_] := a[t, z]/b[t, z] > > > > factor1[s_, z_] := Exp[-NIntegrate[F2[s, u], {u, 0, z}]] > > factor2[s_, z_] := Exp[NIntegrate[F2[s, u], {u, 0, z}]] > > g[s_, z_?NumberQ] := NIntegrate[factor2[s, tau]*F1[s, tau], {tau, 0, z}] > > y[s_, z_] := factor1[s, z]*g[s, z] > > y[.2, .3] > > > I get the error > > NIntegrate::nlim: _u_ = _tau_ is not a valid limit of integration > >
- References:
- question
- From: "Hagwood, Charles R" <charles.hagwood@nist.gov>
- question