MathGroup Archive 1999

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

Search the Archive

how decrease computation time?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg18487] how decrease computation time?
  • From: "Arnold.Blaisonneau" <Arnold.Blaisonneau at ensg.u-nancy.fr>
  • Date: Wed, 7 Jul 1999 23:08:45 -0400
  • Organization: LAEGO
  • References: <37610ED6.C47372B7@diamant.ensg.u-nancy.fr>
  • Sender: owner-wri-mathgroup at wolfram.com


> Hi, I' m a new user of Mathematica and I try to translate C program in
> Mathematica language;
> When I do a calculation with Mathematica it takes too many time
> compared with C program (6.4 second versus 0.1second);
> Please excuse me for the lentgh of my message but I really don't know
> what to do for increase the speed;
> (Note that separately each function doesn't take many)
> If any one could help me....
> Thanks
> \!\(\(BessIn[z1_, z2_, n_] :=
>       Module[{i},
>         i = n; \n\t\tz2[0] =
>           Re[BesselI[i, z1[0]\ Exp[I\ z1[1]]]]; \n\t\tz2[1] =
>           Im[BesselI[i, z1[0]\ Exp[I\ z1[1]]]];];\)\n\t\t\n
>   \(BessKn[z1_, z2_, n_] :=
>       Module[{i},
>         i = n; \n\t\tz2[0] =
>           Re[BesselK[i, z1[0]\ Exp[I\ z1[1]]]]; \n\t\tz2[1] =
>           Im[BesselK[i, z1[0]\ Exp[I\ z1[1]]]];];\)\[IndentingNewLine]
>
>   \(calculcoef[aa_, bb_] := \n\t
>       Module[{z1, z2, spol}, \n\t\tspol = aa + I\ bb; \n\t\tz1[0] =
>           Abs[spol]; z1[1] = Arg[spol]; \n\t\txx0 = \ at \(z1[0]/DT\);
>         yy0 = z1[1]/2; \n\t\tz1[0] = xx0*ri;
>         z1[1] = yy0; \n\t\tBessKn[z1, z2, 0]; xx1 = z2[0];
>         yy1 = z2[1]; \n\t\tBessIn[z1, z2, 0]; xx2 = z2[0];
>         yy2 = z2[1]; \n\t\tz1[0] = xx0*re;
>         z1[1] = yy0; \n\t\tBessKn[z1, z2, 0]; xx3 = z2[0];
>         yy3 = z2[1]; \n\t\tBessIn[z1, z2, 0]; xx4 = z2[0];
>         yy4 = z2[
>             1]; \n\t\tRA = \((aa\ \((Te\ xx2\^2\ xx3 - Te\ xx1\ xx2\
> xx4 -
>                       Ti\ xx2\ xx3\ xx4 + Ti\ xx1\ xx4\^2 -
>                       Te\ xx4\ yy1\ yy2 + Te\ xx3\ yy2\^2 +
>                       Ti\ xx4\ yy2\ yy3 + \((Te\ xx2\ yy1 - Te\ xx1\
> yy2 -
>                             Ti\ xx3\ yy2 - Ti\ xx2\ yy3)\)\ yy4 +
>                       Ti\ xx1\ yy4\^2 +
>                       T0\ \((\(-xx2\^2\)\ xx3 + xx1\ xx2\ xx4 +
>                             xx2\ xx3\ xx4 - xx1\ xx4\^2 + xx4\ yy1\
> yy2 -
>                             xx3\ yy2\^2 - xx4\ yy2\ yy3 - xx2\ yy1\
> yy4 +
>                             xx1\ yy2\ yy4 + xx3\ yy2\ yy4 + xx2\ yy3\
> yy4 -
>                             xx1\ yy4\^2)\))\) +
>                 bb\ \((Te\ xx2\ xx4\ yy1 - Ti\ xx4\^2\ yy1 -
>                       Te\ xx1\ xx4\ yy2 + Ti\ xx3\ xx4\ yy2 -
>                       Te\ xx2\^2\ yy3 + Ti\ xx2\ xx4\ yy3 -
>                       Te\ yy2\^2\ yy3 + \((Te\ xx1\ xx2 - Ti\ xx2\ xx3
> +
>                             Te\ yy1\ yy2 + Ti\ yy2\ yy3)\)\ yy4 -
>                       Ti\ yy1\ yy4\^2 +
>                       T0\ \((\(-xx2\)\ xx4\ yy1 + xx4\^2\ yy1 +
>                             xx1\ xx4\ yy2 - xx3\ xx4\ yy2 + xx2\^2\
> yy3 -
>                             xx2\ xx4\ yy3 +
>                             yy2\^2\ yy3 - \((xx2\ \((xx1 - xx3)\) +
>                                   yy2\ \((yy1 + yy3)\))\)\ yy4 +
>                             yy1\ yy4\^2)\))\))\)/\((\((aa\^2 +
>                     bb\^2)\)\ \((xx1\^2\ xx4\^2 + xx4\^2\ yy1\^2 -
>                     2\ xx3\ xx4\ yy1\ yy2 + xx3\^2\ yy2\^2 +
>                     2\ xx1\ xx4\ yy2\ yy3 + yy2\^2\ yy3\^2 +
>                     xx2\^2\ \((xx3\^2 + yy3\^2)\) -
>                     2\ yy2\ \((xx1\ xx3 + yy1\ yy3)\)\ yy4 + \((xx1\^2
> +
>                           yy1\^2)\)\ yy4\^2 -
>                     2\ xx2\ \((xx1\ xx3\ xx4 + xx4\ yy1\ yy3 -
>                           xx3\ yy1\ yy4 +
>                           xx1\ yy3\ yy4)\))\))\); \n\t\tIA = \((bb\ \
> \((\(-Te\)\ xx2\^2\ xx3 + Te\ xx1\ xx2\ xx4 + Ti\ xx2\ xx3\ xx4 -
>                       Ti\ xx1\ xx4\^2 + Te\ xx4\ yy1\ yy2 - Te\ xx3\
> yy2\^2 -
>                       Ti\ xx4\ yy2\ yy3 - Te\ xx2\ yy1\ yy4 +
>                       Te\ xx1\ yy2\ yy4 + Ti\ xx3\ yy2\ yy4 +
>                       Ti\ xx2\ yy3\ yy4 - Ti\ xx1\ yy4\^2 +
>                       T0\ \((xx2\^2\ xx3 - xx1\ xx2\ xx4 - xx2\ xx3\
> xx4 +
>                             xx1\ xx4\^2 - xx4\ yy1\ yy2 + xx3\ yy2\^2
> +
>                             xx4\ yy2\ yy3 + \((\(-\((xx1 + xx3)\)\)\
> yy2 +
>                                   xx2\ \((yy1 - yy3)\))\)\ yy4 +
>                             xx1\ yy4\^2)\))\) +
>                 aa\ \((Te\ xx2\ xx4\ yy1 - Ti\ xx4\^2\ yy1 -
>                       Te\ xx1\ xx4\ yy2 + Ti\ xx3\ xx4\ yy2 -
>                       Te\ xx2\^2\ yy3 + Ti\ xx2\ xx4\ yy3 -
>                       Te\ yy2\^2\ yy3 + \((Te\ xx1\ xx2 - Ti\ xx2\ xx3
> +
>                             Te\ yy1\ yy2 + Ti\ yy2\ yy3)\)\ yy4 -
>                       Ti\ yy1\ yy4\^2 +
>                       T0\ \((\(-xx2\)\ xx4\ yy1 + xx4\^2\ yy1 +
>                             xx1\ xx4\ yy2 - xx3\ xx4\ yy2 + xx2\^2\
> yy3 -
>                             xx2\ xx4\ yy3 +
>                             yy2\^2\ yy3 - \((xx2\ \((xx1 - xx3)\) +
>                                   yy2\ \((yy1 + yy3)\))\)\ yy4 +
>                             yy1\ yy4\^2)\))\))\)/\((\((aa\^2 +
>                     bb\^2)\)\ \((xx1\^2\ xx4\^2 + xx4\^2\ yy1\^2 -
>                     2\ xx3\ xx4\ yy1\ yy2 + xx3\^2\ yy2\^2 +
>                     2\ xx1\ xx4\ yy2\ yy3 + yy2\^2\ yy3\^2 +
>                     xx2\^2\ \((xx3\^2 + yy3\^2)\) -
>                     2\ yy2\ \((xx1\ xx3 + yy1\ yy3)\)\ yy4 + \((xx1\^2
> +
>                           yy1\^2)\)\ yy4\^2 -
>                     2\ xx2\ \((xx1\ xx3\ xx4 + xx4\ yy1\ yy3 -
>                           xx3\ yy1\ yy4 +
>                           xx1\ yy3\ yy4)\))\))\); \n\t\tRB = \((aa\ \
> \((\(-Te\)\ xx1\ xx2\ xx3 + Ti\ xx2\ xx3\^2 + Te\ xx1\^2\ xx4 -
>                       Ti\ xx1\ xx3\ xx4 + Te\ xx4\ yy1\^2 -
>                       Te\ xx3\ yy1\ yy2 - Te\ xx2\ yy1\ yy3 -
>                       Ti\ xx4\ yy1\ yy3 + Te\ xx1\ yy2\ yy3 +
>                       Ti\ xx2\ yy3\^2 + Ti\ xx3\ yy1\ yy4 -
>                       Ti\ xx1\ yy3\ yy4 +
>                       T0\ \((xx1\ xx2\ xx3 - xx2\ xx3\^2 - xx1\^2\ xx4
> +
>                             xx1\ xx3\ xx4 - xx4\ yy1\^2 + xx3\ yy1\
> yy2 +
>                             xx2\ yy1\ yy3 + xx4\ yy1\ yy3 - xx1\ yy2\
> yy3 -
>                             xx2\ yy3\^2 - xx3\ yy1\ yy4 +
>                             xx1\ yy3\ yy4)\))\) +
>                 bb\ \((\(-Te\)\ xx2\ xx3\ yy1 + Ti\ xx3\ xx4\ yy1 +
>                       Te\ xx1\ xx3\ yy2 - Ti\ xx3\^2\ yy2 +
>                       Te\ xx1\ xx2\ yy3 - Ti\ xx1\ xx4\ yy3 +
>                       Te\ yy1\ yy2\ yy3 - Ti\ yy2\ yy3\^2 - Te\
> xx1\^2\ yy4 +
>                       Ti\ xx1\ xx3\ yy4 - Te\ yy1\^2\ yy4 +
>                       Ti\ yy1\ yy3\ yy4 +
>                       T0\ \((xx2\ xx3\ yy1 - xx3\ xx4\ yy1 - xx1\ xx3\
> yy2 +
>                             xx3\^2\ yy2 - xx1\ xx2\ yy3 + xx1\ xx4\
> yy3 -
>                             yy1\ yy2\ yy3 +
>                             yy2\ yy3\^2 + \((xx1\^2 - xx1\ xx3 +
> yy1\^2 -
>                                   yy1\ yy3)\)\
> yy4)\))\))\)/\((\((aa\^2 +
>                     bb\^2)\)\ \((xx1\^2\ xx4\^2 + xx4\^2\ yy1\^2 -
>                     2\ xx3\ xx4\ yy1\ yy2 + xx3\^2\ yy2\^2 +
>                     2\ xx1\ xx4\ yy2\ yy3 + yy2\^2\ yy3\^2 +
>                     xx2\^2\ \((xx3\^2 + yy3\^2)\) -
>                     2\ yy2\ \((xx1\ xx3 + yy1\ yy3)\)\ yy4 + \((xx1\^2
> +
>                           yy1\^2)\)\ yy4\^2 -
>                     2\ xx2\ \((xx1\ xx3\ xx4 + xx4\ yy1\ yy3 -
>                           xx3\ yy1\ yy4 +
>                           xx1\ yy3\ yy4)\))\))\); \n\t\tIB = \((bb\
> \((Te\ \
> xx1\ xx2\ xx3 - Ti\ xx2\ xx3\^2 - Te\ xx1\^2\ xx4 + Ti\ xx1\ xx3\ xx4
> -
>                       Te\ xx4\ yy1\^2 + Te\ xx3\ yy1\ yy2 +
>                       Te\ xx2\ yy1\ yy3 + Ti\ xx4\ yy1\ yy3 -
>                       Te\ xx1\ yy2\ yy3 - Ti\ xx2\ yy3\^2 -
>                       Ti\ xx3\ yy1\ yy4 + Ti\ xx1\ yy3\ yy4 +
>                       T0\ \((\(-xx1\)\ xx2\ xx3 + xx2\ xx3\^2 +
> xx1\^2\ xx4 -
>                             xx1\ xx3\ xx4 + xx4\ yy1\^2 - xx3\ yy1\
> yy2 -
>                             xx2\ yy1\ yy3 - xx4\ yy1\ yy3 + xx1\ yy2\
> yy3 +
>                             xx2\ yy3\^2 + xx3\ yy1\ yy4 -
>                             xx1\ yy3\ yy4)\))\) +
>                 aa\ \((\(-Te\)\ xx2\ xx3\ yy1 + Ti\ xx3\ xx4\ yy1 +
>                       Te\ xx1\ xx3\ yy2 - Ti\ xx3\^2\ yy2 +
>                       Te\ xx1\ xx2\ yy3 - Ti\ xx1\ xx4\ yy3 +
>                       Te\ yy1\ yy2\ yy3 - Ti\ yy2\ yy3\^2 - Te\
> xx1\^2\ yy4 +
>                       Ti\ xx1\ xx3\ yy4 - Te\ yy1\^2\ yy4 +
>                       Ti\ yy1\ yy3\ yy4 +
>                       T0\ \((xx2\ xx3\ yy1 - xx3\ xx4\ yy1 - xx1\ xx3\
> yy2 +
>                             xx3\^2\ yy2 - xx1\ xx2\ yy3 + xx1\ xx4\
> yy3 -
>                             yy1\ yy2\ yy3 +
>                             yy2\ yy3\^2 + \((xx1\^2 - xx1\ xx3 +
> yy1\^2 -
>                                   yy1\ yy3)\)\
> yy4)\))\))\)/\((\((aa\^2 +
>                     bb\^2)\)\ \((xx1\^2\ xx4\^2 + xx4\^2\ yy1\^2 -
>                     2\ xx3\ xx4\ yy1\ yy2 + xx3\^2\ yy2\^2 +
>                     2\ xx1\ xx4\ yy2\ yy3 + yy2\^2\ yy3\^2 +
>                     xx2\^2\ \((xx3\^2 + yy3\^2)\) -
>                     2\ yy2\ \((xx1\ xx3 + yy1\ yy3)\)\ yy4 + \((xx1\^2
> +
>                           yy1\^2)\)\ yy4\^2 -
>                     2\ xx2\ \((xx1\ xx3\ xx4 + xx4\ yy1\ yy3 -
>                           xx3\ yy1\ yy4 +
>                           xx1\ yy3\
> yy4)\))\))\);];\)\[IndentingNewLine]
>   \(RefT[aa_, bb_] :=
>       Module[{z1, z2}, \n\t\tcalculcoef[aa, bb]; \n\t\tz1[0] = xx0*r;
>         z1[1] = yy0; \n\t\tBessKn[z1, z2, 0]; xx5 = z2[0];
>         yy5 = z2[1]; \n\t\tBessIn[z1, z2, 0]; xx6 = z2[0];
>         yy6 = z2[1]; \n\t\t\(aa\ T0\)\/\(aa\^2 + bb\^2\) + RA\ xx5 +
>           RB\ xx6 - IA\ yy5 - IB\ yy6];\)\[IndentingNewLine]
>   \(ImfT[aa_, bb_] :=
>       Module[{z1, z2}, \n\t\tcalculcoef[aa, bb]; \n\t\tz1[0] = xx0*r;
>         z1[1] = yy0; \n\t\tBessKn[z1, z2, 0]; xx5 = z2[0];
>         yy5 = z2[1]; \n\t\tBessIn[z1, z2, 0]; xx6 = z2[0];
>         yy6 = z2[1]; \n\t\(-\(\(bb\ T0\)\/\(aa\^2 + bb\^2\)\)\) + IA\
> xx5 +
>           IB\ xx6 + RA\ yy5 + RB\ yy6];\)\[IndentingNewLine]
>   \(I1T[y_] := RefT[alpha, y]*Cos[t*y];\)\[IndentingNewLine]
>   \(I2T[y_] := ImfT[alpha, y]*Sin[t*y];\)\[IndentingNewLine]
>   \(I3T[y_] := \t
>       Module[{u}, \n\t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ u =
>           alpha*t - \((1 - y)\)/y; \n\t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \
> If[
>           TrueQ[u < \(-50\)],
>           0, \n\t\t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ Exp[
>               u]*\((RefT[u/t, beta]*Sin[beta*t] +
>                   ImfT[u/t, beta]*Cos[beta*t])\)/
>               y^2\n\t\t\t\ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ \ ]];\)\
> \[IndentingNewLine]
>   \(temp[rr_, tt_] :=
>       Module[{I1, I2, I3}, \[IndentingNewLine]r = rr; t = tt; ri =
> 22.5;
>         re = 23.4; alpha = 2/t; beta = 2/t; \nTi = 308; Te = 288; T0 =
> 288;
>         DT = 10\^\(-6\); \nI1 = NIntegrate[I1T[y], {y, 0, beta}]; \n
>         I2 = NIntegrate[I2T[y], {y, 0, beta}]; \n
>         I3 = NIntegrate[I3T[y], {y, 10\^\(-3\), 0.26, 0.5, 1},
>             Method -> GaussKronrod, WorkingPrecision -> 10]; \n
>         1/\[Pi]*\((Exp[alpha*t]\ \((I1 - I2)\) - I3/t)\)];\)\)
> temp[22.8, 10000]
> 288.673



  • Prev by Date: Re: real valued expressions in Mathematica 4.0
  • Next by Date: RE: Kronecker product of matrices
  • Previous by thread: Re: send notebook expression by Email
  • Next by thread: Re: how decrease computation time?