MathGroup Archive 2014

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

Search the Archive

Re: question

  • To: mathgroup at smc.vnet.net
  • Subject: [mg132528] Re: question
  • From: Murray Eisenberg <murray at math.umass.edu>
  • Date: Tue, 8 Apr 2014 03:37:25 -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>

First, please do not hurl unfounded -- and unjustified -- insults at 
Mathematica just because you're having trouble applying it to a 
particular problem.

(I say "unjustified" because one could argue quite the opposite: With 
all the added functionality in recent versions for image processing, 
stochastic processes, exploiting curated databases, etc., it seems to me 
that Mathematica is in fact being oriented more towards doing "applied 
work" of great variety more than towards satisfying the needs of 
"university types".)

Second, as to your problem itself, I've simplified and modified the code 
somewhat so as to:

 - use Set (=) rather than SetDelayed (:=) in the definitions that 
involve derivatives, so that the same derivatives are not calculated 
repeatedly;

 - use NumericQ rather than NumberQ;

 - let Mathematica do more of the work by using built-in Normalize in 
the definitions of q1 and q2;

 - eliminate the superfluous assumptions about the reality of the 
derivative of the vector-valued function beta2' (including that 
assumption in the original definition of beta1', where it's irrelevant).

The resulting code is:

    beta2[t_] := {Cos[2Pi t], Sin[2Pi t]}
    beta1[t_] := beta2[t + (48/10)t^2 (t - 1)^2]

    q1[s_] = Normalize[beta1'[s]];
    q2[t_] = Normalize[beta2'[t]];

    a[t_, z_] = 2 q1[t].q2'[z];
    b[t_, z_] =   q1[t].q2[z];
    c[t_, z_] = 2 q1'[t].q2[z];

    F1[t_, z_] = FunctionExpand[
                    c[t, z]/b[t, z], {t \[Element] Reals, z \[Element] Reals}];
    F2[t_, z_] = FunctionExpand[
                    a[t, z]/b[t, z], {t \[Element] Reals, z \[Element] Reals}];

    factor1[s_, z_?NumericQ] := Exp[-NIntegrate[F2[s, u], {u, 0, z}]]
    factor2[s_, z_?NumericQ] := Exp[NIntegrate[F2[s, u], {u, 0, z}]]

    g[s_?NumericQ, z_?NumericQ] := NIntegrate[factor2[s, tau] F1[s, tau],{tau, 0, z}]

    y[s_?NumericQ, z_?NumericQ] := factor1[s, z] g[s, z]

And now:

        y[0.2, 0.3]

    NIntegrate::ncvb: NIntegrate failed to converge to prescribed accuracy after 9 recursive bisections in u near
      {u} = {0.0732375}. NIntegrate obtained -9.98518 and 13.51073580442933` for the integral and error estimates. >>

    NIntegrate::errprec: Catastrophic loss of precision in the global error estimate due to insufficient WorkingPrecision or
        divergent integral. >>

    21702.4 NIntegrate[factor2[0.2, tau] F1[0.2, tau], {tau, 0, 0.3}]

The syntactical problems seem to be gone and now you might look at the underlying _mathematical_ difficulties here.

Look at the two factors we're trying to evaluate for y[0.2, 0.3]:

         factor1[0.2, 0.3]
    NIntegrate::ncvb: NIntegrate failed to converge to prescribed accuracy after 9 recursive bisections in u near
       {u} = {0.0732375}. NIntegrate obtained -9.98518 and 13.51073580442933` for the integral and error estimates. >>

    21702.4

          g[0.2, 0.3]
    NIntegrate::errprec: Catastrophic loss of precision in the global error estimate due to insufficient WorkingPrecision or
    divergent integral. >>

    NIntegrate[factor2[0.2, tau] F1[0.2, tau], {tau, 0, 0.3}]

So _both_ factors so far elude numeric integration, at least with default WorkingPrecision.

Hope this can help a bit.

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
>
>

Murray Eisenberg                                murray at math.umass.edu
Mathematics & Statistics Dept.      
Lederle Graduate Research Tower      phone 240 246-7240 (H)
University of Massachusetts               
710 North Pleasant Street                
Amherst, MA 01003-9305









  • References:
    • question
      • From: "Hagwood, Charles R" <charles.hagwood@nist.gov>
  • Prev by Date: Re: question
  • Next by Date: Re: variable tube radius and variable surface thickness
  • Previous by thread: Re: question
  • Next by thread: Re: question