Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2011

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

Search the Archive

Re: Exit a loop

  • To: mathgroup at smc.vnet.net
  • Subject: [mg122648] Re: Exit a loop
  • From: "Oleksandr Rasputinov" <oleksandr_rasputinov at hmamail.com>
  • Date: Fri, 4 Nov 2011 06:02:14 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <j8tk7n$eoa$1@smc.vnet.net>

On Thu, 03 Nov 2011 08:43:35 -0000, Mary R <mathematica023 at gmail.com>  
wrote:

> Hi to everyone,
> i try to exit a loop when this criterion is satisfied:
> If[( (matriceP[[i - 1, 1]] - matriceP[[i - 1, -1]])/matriceP[[i - 1,  
> 1]])^2
> < ( (matriceP[[i, 1]] - matriceP[[i, -1]])/matriceP[[i, 1]])^2
> i try with Goto[thispoint]-Label[thispoint], and it works, but have this
> error:
> Goto::nolabel: Label thispoint not found.
> I try again with Catch and Throw (as you can see in comment), but the
> calculations goes on without stopping.
> Have any idea?
> The part of algoritm interesting is signed by (*THIS PART*) near the end  
> of
> the notebook.
> Thanks in advance
> M.
> ----------------------------------------------
> Timing[indicek = 1;
>  matriceP = {};
>  valorek = {};
>  differencep = {};
>  mfugv1 = {{}};
>  mfugl1 = {{}};
>  mfugv2 = {{}};
>  mfugl2 = {{}};
>  my1 = {{}};
>  my2 = {{}};
>  vettore = {};
>  Do[\[Omega] = {0.1521, 0.32684};
>    x = {0.0991, 1 - 0.0991};
>    Tc = {369.89, 374.21};
>    Subscript[P, c] = {42.512, 40.593};
>    R = 83.14;
>    T = 273.15;
>    tollerancep = 10^-8;
>    tollerancey = 10^-8;
>    incrP = 0.8;
>    decremento = 0;
>    incremento = 0;
>    ris = {};
>    passo = 1;
>    label = {"step", "P", "\!\(\*SubscriptBox[\(y\), \(1  n\)]\)",
>      "\!\(\*SubscriptBox[\(y\), \(2  n\)]\)",
>      "\!\(\*SubscriptBox[\(f\), \(1  l\)]\)",
>      "\!\(\*SubscriptBox[\(f\), \(2  l\)]\)",
>      "\!\(\*SubscriptBox[\(f\), \(1  v\)]\)",
>      "\!\(\*SubscriptBox[\(f\), \(2  v\)]\)", "\[CapitalDelta]"};
>    Subscript[T, r] = Table[T/Tc[[i]], {i, 2}];
>    alfa =
>     Table[(1 + (0.37464 + 1.54226 \[Omega][[i]] -
>           0.26993 (\[Omega][[i]])^2 ) (1 - Sqrt[
>           Subscript[T, r][[i]]]))^2, {i, 2}];
>    a = Table[(0.45723553 alfa[[i]]  R^2 (Tc^2)[[i]])/
>       Subscript[P, c][[i]] , {i, 2}];
>    b = Table[(0.07779607 R Tc[[i]] )/Subscript[P, c][[i]], {i, 2}];
>    P = {2.8};
>    Subscript[y, 1] = {0.3596};
>    Subscript[y, 1 n] = {0.3596};
>    Subscript[y, 2] = {1 - 0.3596};
>    Subscript[y, 2 n] = {1 - 0.3596};
>    numy = 1;
>    nump = 1;
>    Subscript[f, 1 l] = {};
>    Subscript[f, 2 l] = {};
>    Subscript[f, 1 v] = {};
>    Subscript[f, 2 v] = {};
>    A = Table[(a[[i]] P[[nump]])/(R^2 T^2), {i, 2}];
>    B = Table[(b[[i]] P[[nump]])/(R T), {i, 2}];
>    Subscript[A, 12] = Sqrt[A[[1]]*A[[2]]]*(1 - k);
>
>    Subscript[A, liq] =
>     x[[1]]^2 A[[1]] + 2*(x[[1]]*x[[2]])* Subscript[A, 12] +
>      x[[2]]^2 A[[2]];
>    Subscript[B, liq] = x[[1]]*B[[1]] + x[[2]]*B[[2]];
>    solzl =
>     NSolve[Z - 1/(1 - Subscript[B, liq]/Z) +
>        Subscript[A, liq]/Subscript[B, liq]*Subscript[B, liq]/Z/(
>         1 + 2 *Subscript[B, liq]/Z - (Subscript[B, liq]/Z)^2) == 0, Z];
>    soll = Z /. {solzl[[1]], solzl[[3]]};
>    Subscript[ln\[Phi], 1 l] =
>     B[[1]]/Subscript[B, liq] (soll[[2]] - 1) -
>      Log[soll[[2]] - Subscript[B, liq]] -
>      Subscript[A, liq]/(Subscript[B, liq] Sqrt[8])
>        Log[(soll[[2]] + (1 + Sqrt[2]) Subscript[B, liq])/(
>        soll[[2]] + (1 - Sqrt[2]) Subscript[B, liq])] (1/Subscript[A,
>          liq] 2 (x[[1]] A[[1]] + x[[2]] Subscript[A, 12]) - B[[1]]/
>         Subscript[B, liq]);
>    Subscript[ln\[Phi], 2 l] =
>     B[[2]]/Subscript[B, liq] (soll[[2]] - 1) -
>      Log[soll[[2]] - Subscript[B, liq]] -
>      Subscript[A, liq]/(Subscript[B, liq] Sqrt[8])
>        Log[(soll[[2]] + (1 + Sqrt[2]) Subscript[B, liq])/(
>        soll[[2]] + (1 - Sqrt[2]) Subscript[B, liq])] (1/Subscript[A,
>          liq] 2 (x[[1]] Subscript[A, 12] + x[[2]] A[[2]]) - B[[2]]/
>         Subscript[B, liq]);
>    Subscript[\[Phi], 1 l] = Exp[Subscript[ln\[Phi], 1 l]];
>    Subscript[\[Phi], 2 l] = Exp[Subscript[ln\[Phi], 2 l]];
>    Subscript[f, 1 l] =
>     Append[Subscript[f, 1 l], Subscript[\[Phi], 1 l]*x[[1]]];
>    Subscript[f, 2 l] =
>     Append[Subscript[f, 2 l], Subscript[\[Phi], 2 l]*x[[2]]];
>    Subscript[B, vap] =
>     Subscript[y, 1][[numy]]*B[[1]] + Subscript[y, 2][[numy]]*B[[2]];
>    Subscript[A, vap] =
>     Subscript[y, 1][[numy]]^2 A[[1]] +
>      2 Subscript[y, 1][[numy]] Subscript[y, 2][[numy]] Subscript[A,
>       12] + Subscript[y, 2][[numy]]^2 A[[2]];
>    solzv =
>     NSolve[Z - 1/(1 - Subscript[B, vap]/Z) +
>        Subscript[A, vap]/Subscript[B, vap]*Subscript[B, vap]/Z/(
>         1 + 2 *Subscript[B, vap]/Z - (Subscript[B, vap]/Z)^2) == 0, Z];
>    solv = Z /. {solzv[[1]], solzv[[3]]};
>    Subscript[ln\[Phi], 1 v] =
>     B[[1]]/Subscript[B, vap] (solv[[1]] - 1) -
>      Log[solv[[1]] - Subscript[B, vap]] -
>      Subscript[A, vap]/(Subscript[B, vap] Sqrt[8])
>        Log[(solv[[1]] + (1 + Sqrt[2]) Subscript[B, vap])/(
>        solv[[1]] + (1 - Sqrt[2]) Subscript[B, vap])] (1/Subscript[A,
>          vap] 2 (Subscript[y, 1][[numy]] A[[1]] +
>            Subscript[y, 2][[numy]] Subscript[A, 12]) - B[[1]]/
>         Subscript[B, vap]);
>    Subscript[ln\[Phi], 2 v] =
>     B[[2]]/Subscript[B, vap] (solv[[1]] - 1) -
>      Log[solv[[1]] - Subscript[B, vap]] -
>      Subscript[A, vap]/(Subscript[B, vap] Sqrt[8])
>        Log[(solv[[1]] + (1 + Sqrt[2]) Subscript[B, vap])/(
>        solv[[1]] + (1 - Sqrt[2]) Subscript[B, vap])] (1/Subscript[A,
>          vap] 2 (Subscript[y, 1][[numy]] Subscript[A, 12] +
>            Subscript[y, 2][[numy]] A[[2]]) - B[[2]]/Subscript[B, vap]);
>    Subscript[\[Phi], 1 v] = Exp[Subscript[ln\[Phi], 1 v]];
>    Subscript[\[Phi], 2 v] = Exp[Subscript[ln\[Phi], 2 v]];
>    Subscript[f, 1 v] =
>     Append[Subscript[f, 1 v],
>      Subscript[\[Phi], 1 v]*Subscript[y, 1][[numy]]];
>    Subscript[f, 2 v] =
>     Append[Subscript[f, 2 v],
>      Subscript[\[Phi], 2 v]*Subscript[y, 2][[numy]]];
>
>    While[Abs[Subscript[f, 1 l][[nump]] - Subscript[f, 1 v][[numy]]] +
>       Abs[Subscript[f, 2 l][[nump]] - Subscript[f, 2 v][[numy]]] >
>      tollerancep,
>     numy = numy + 1;
>     Subscript[k, 1] = Subscript[\[Phi], 1 l]/Subscript[\[Phi], 1 v];
>     Subscript[k, 2] = Subscript[\[Phi], 2 l]/Subscript[\[Phi], 2 v];
>     Subscript[y, 1] =
>      Append[Subscript[y, 1], (x[[1]]*Subscript[k, 1])];
>     Subscript[y, 2] =
>      Append[Subscript[y, 2], (x[[2]]*Subscript[k, 2])];
>     Subscript[y, 1 n] =
>      Append[Subscript[y,
>       1 n], (x[[1]]*Subscript[k, 1])/(x[[1]]*Subscript[k, 1] +
>          x[[2]]*Subscript[k, 2])];
>     Subscript[y, 2 n] =
>      Append[Subscript[y,
>       2 n], (x[[2]]*Subscript[k, 2])/(x[[1]]*Subscript[k, 1] +
>          x[[2]]*Subscript[k, 2])];
>     Subscript[B, vap] =
>      Subscript[y, 1 n][[numy]]*B[[1]] +
>       Subscript[y, 2 n][[numy]]*B[[2]];
>     Subscript[A, vap] =
>      Subscript[y, 1 n][[numy]]^2 A[[1]] +
>       2 Subscript[y, 1 n][[numy]] Subscript[y, 2 n][[numy]] Subscript[
>        A, 12] + Subscript[y, 2 n][[numy]]^2 A[[2]];
>     solzv =
>      NSolve[Z - 1/(1 - Subscript[B, vap]/Z) +
>         Subscript[A, vap]/Subscript[B, vap]*Subscript[B, vap]/Z/(
>          1 + 2 *Subscript[B, vap]/Z - (Subscript[B, vap]/Z)^2) == 0,
>       Z];
>     solv = Z /. {solzv[[1]], solzv[[3]]};
>     Subscript[ln\[Phi], 1 v] =
>      B[[1]]/Subscript[B, vap] (solv[[1]] - 1) -
>       Log[solv[[1]] - Subscript[B, vap]] -
>       Subscript[A, vap]/(Subscript[B, vap] Sqrt[8])
>         Log[(solv[[1]] + (1 + Sqrt[2]) Subscript[B, vap])/(
>         solv[[1]] + (1 - Sqrt[2]) Subscript[B, vap])] (1/Subscript[A,
>           vap] 2 (Subscript[y, 1 n][[numy]] A[[1]] +
>             Subscript[y, 2 n][[numy]] Subscript[A, 12]) - B[[1]]/
>          Subscript[B, vap]);
>     Subscript[ln\[Phi], 2 v] =
>      B[[2]]/Subscript[B, vap] (solv[[1]] - 1) -
>       Log[solv[[1]] - Subscript[B, vap]] -
>       Subscript[A, vap]/(Subscript[B, vap] Sqrt[8])
>         Log[(solv[[1]] + (1 + Sqrt[2]) Subscript[B, vap])/(
>         solv[[1]] + (1 - Sqrt[2]) Subscript[B, vap])] (1/Subscript[A,
>           vap] 2 (Subscript[y, 1 n][[numy]] Subscript[A, 12] +
>             Subscript[y, 2 n][[numy]] A[[2]]) - B[[2]]/Subscript[B,
>          vap]);
>     Subscript[\[Phi], 1 v] = Exp[Subscript[ln\[Phi], 1 v]];
>     Subscript[\[Phi], 2 v] = Exp[Subscript[ln\[Phi], 2 v]];
>     Subscript[f, 1 v] =
>      Append[Subscript[f, 1 v],
>       Subscript[\[Phi], 1 v]*Subscript[y, 1 n][[numy]]];
>     Subscript[f, 2 v] =
>      Append[Subscript[f, 2 v],
>       Subscript[\[Phi], 2 v]*Subscript[y, 2 n][[numy]]];
>     Abs[Subscript[f, 1 v][[numy]] - Subscript[f, 1 v][[numy - 1]]] +
>      Abs[Subscript[f, 2 v][[numy]] - Subscript[f, 2 v][[numy - 1]]];
>     Abs[Subscript[f, 1 l][[nump]] - Subscript[f, 1 v][[numy]]] +
>      Abs[Subscript[f, 2 l][[nump]] - Subscript[f, 2 v][[numy]]];
>     While[
>       Abs[Subscript[f, 1 v][[numy]] - Subscript[f, 1 v][[numy - 1]]] +
>          Abs[Subscript[f, 2 v][[numy]] -
>           Subscript[f, 2 v][[numy - 1]]] >
>        tollerancey,(*inizio while su y*)
>       numy = numy + 1;
>       Subscript[k, 1] = Subscript[\[Phi], 1 l]/Subscript[\[Phi], 1 v];
>       Subscript[k, 2] = Subscript[\[Phi], 2 l]/Subscript[\[Phi], 2 v];
>       Subscript[y, 1] =
>        Append[Subscript[y, 1], (x[[1]]*Subscript[k, 1])];
>       Subscript[y, 2] =
>        Append[Subscript[y, 2], (x[[2]]*Subscript[k, 2])];
>       Subscript[y, 1 n] =
>        Append[Subscript[y,
>         1 n], (x[[1]]*Subscript[k, 1])/(x[[1]]*Subscript[k, 1] +
>            x[[2]]*Subscript[k, 2])];
>       Subscript[y, 2 n] =
>        Append[Subscript[y,
>         2 n], (x[[2]]*Subscript[k, 2])/(x[[1]]*Subscript[k, 1] +
>            x[[2]]*Subscript[k, 2])];
>       Subscript[B, vap] =
>        Subscript[y, 1 n][[numy]]*B[[1]] +
>         Subscript[y, 2 n][[numy]]*B[[2]];
>       Subscript[A, vap] =
>        Subscript[y, 1 n][[numy]]^2 A[[1]] +
>         2 Subscript[y, 1 n][[numy]] Subscript[y, 2 n][[
>           numy]] Subscript[A, 12] + Subscript[y, 2 n][[numy]]^2 A[[2]];
>       solzv =
>        NSolve[Z - 1/(1 - Subscript[B, vap]/Z) +
>           Subscript[A, vap]/Subscript[B, vap]*Subscript[B, vap]/Z/(
>            1 + 2 *Subscript[B, vap]/Z - (Subscript[B, vap]/Z)^2) == 0,
>          Z];
>       solv = Z /. {solzv[[1]], solzv[[3]]};
>       Subscript[ln\[Phi], 1 v] =
>        B[[1]]/Subscript[B, vap] (solv[[1]] - 1) -
>         Log[solv[[1]] - Subscript[B, vap]] -
>         Subscript[A, vap]/(Subscript[B, vap] Sqrt[8])
>           Log[(solv[[1]] + (1 + Sqrt[2]) Subscript[B, vap])/(solv[[
>               1]] + (1 - Sqrt[2]) Subscript[B, vap])] (1/Subscript[A,
>             vap] 2 (Subscript[y, 1][[numy]] A[[1]] +
>               Subscript[y, 2][[numy]] Subscript[A, 12]) - B[[1]]/
>            Subscript[B, vap]);
>       Subscript[ln\[Phi], 2 v] =
>        B[[2]]/Subscript[B, vap] (solv[[1]] - 1) -
>         Log[solv[[1]] - Subscript[B, vap]] -
>         Subscript[A, vap]/(Subscript[B, vap] Sqrt[8])
>           Log[(solv[[1]] + (1 + Sqrt[2]) Subscript[B, vap])/(solv[[
>               1]] + (1 - Sqrt[2]) Subscript[B, vap])] (1/Subscript[A,
>             vap] 2 (Subscript[y, 1][[numy]] Subscript[A, 12] +
>               Subscript[y, 2][[numy]] A[[2]]) - B[[2]]/Subscript[B,
>            vap]);
>       Subscript[\[Phi], 1 v] = Exp[Subscript[ln\[Phi], 1 v]];
>       Subscript[\[Phi], 2 v] = Exp[Subscript[ln\[Phi], 2 v]];
>       Subscript[f, 1 v] =
>        Append[Subscript[f, 1 v],
>         Subscript[\[Phi], 1 v]*Subscript[y, 1 n][[numy]]];
>       Subscript[f, 2 v] =
>        Append[Subscript[f, 2 v],
>         Subscript[\[Phi], 2 v]*Subscript[y, 2 n][[numy]]];]
>      If
>       [Abs[Subscript[f, 1 l][[nump]] - Subscript[f, 1 v][[numy]]] +
>         Abs[Subscript[f, 2 l][[nump]] - Subscript[f, 2 v][[numy]]] >
>        tollerancep,
>
>       ris =
>        Append[{ris},
>          Join[{P[[nump]]}, {Subscript[y, 1 n]}, {Subscript[y,
>            2 n]}, {Subscript[f, 1 l][[nump]]}, {Subscript[f, 2 l][[
>             nump]]}, {Subscript[f, 1 v]}, {Subscript[f,
>            2 v]}, {Abs[
>              Subscript[f, 1 l][[nump]] - Subscript[f, 1 v][[numy]]] +
>             Abs[Subscript[f, 2 l][[nump]] -
>               Subscript[f, 2 v][[numy]]]}]] // MatrixForm;
>       If
>        [
>        Abs[P[[nump - 2]] - P[[nump - 1]]] ==
>         Abs[P[[nump - 1]] - P[[nump]]],
>        incrP = incrP/2;
>
>        incrP
>        ];
>
>       nump = nump + 1;
>       P =
>        Append[P,
>         If[Subscript[y, 1][[numy]] + Subscript[y, 2][[numy]] > 1,
>          P[[nump - 1]] + incrP, P[[nump - 1]] - incrP]];
>       A = Table[(a[[i]] P[[nump]])/(R^2 T^2), {i, 2}];
>       B = Table[(b[[i]] P[[nump]])/(R T), {i, 2}];
>       Subscript[A, 12] = Sqrt[A[[1]]*A[[2]]]*(1 - k);
>       Subscript[A, liq] =
>        x[[1]]^2 A[[1]] + 2*(x[[1]]*x[[2]])* Subscript[A, 12] +
>         x[[2]]^2 A[[2]];
>       Subscript[B, liq] = x[[1]]*B[[1]] + x[[2]]*B[[2]];
>       solzl =
>        NSolve[Z - 1/(1 - Subscript[B, liq]/Z) +
>           Subscript[A, liq]/Subscript[B, liq]*Subscript[B, liq]/Z/(
>            1 + 2 *Subscript[B, liq]/Z - (Subscript[B, liq]/Z)^2) == 0,
>          Z];
>       soll = Z /. {solzl[[1]], solzl[[3]]};
>       Subscript[ln\[Phi], 1 l] =
>        B[[1]]/Subscript[B, liq] (soll[[2]] - 1) -
>         Log[soll[[2]] - Subscript[B, liq]] -
>         Subscript[A, liq]/(Subscript[B, liq] Sqrt[8])
>           Log[(soll[[2]] + (1 + Sqrt[2]) Subscript[B, liq])/(soll[[
>               2]] + (1 - Sqrt[2]) Subscript[B, liq])] (1/Subscript[A,
>             liq] 2 (x[[1]] A[[1]] + x[[2]] Subscript[A, 12]) - B[[1]]/
>            Subscript[B, liq]);
>       Subscript[ln\[Phi], 2 l] =
>        B[[2]]/Subscript[B, liq] (soll[[2]] - 1) -
>         Log[soll[[2]] - Subscript[B, liq]] -
>         Subscript[A, liq]/(Subscript[B, liq] Sqrt[8])
>           Log[(soll[[2]] + (1 + Sqrt[2]) Subscript[B, liq])/(soll[[
>               2]] + (1 - Sqrt[2]) Subscript[B, liq])] (1/Subscript[A,
>             liq] 2 (x[[1]] Subscript[A, 12] + x[[2]] A[[2]]) - B[[2]]/
>            Subscript[B, liq]);
>       Subscript[\[Phi], 1 l] = Exp[Subscript[ln\[Phi], 1 l]];
>       Subscript[\[Phi], 2 l] = Exp[Subscript[ln\[Phi], 2 l]];
>       Subscript[f, 1 l] =
>        Append[Subscript[f, 1 l], Subscript[\[Phi], 1 l]*x[[1]]];
>       Subscript[f, 2 l] =
>        Append[Subscript[f, 2 l], Subscript[\[Phi], 2 l]*x[[2]]];
>       Subscript[y, 1 n] = {Subscript[y, 1 n][[numy]]};
>       Subscript[y, 2 n] = {Subscript[y, 2 n][[numy]]};
>       Subscript[y, 1] = {Subscript[y, 1][[numy]]};
>       Subscript[y, 2] = {Subscript[y, 2][[numy]]};
>       Subscript[f, 1 v] = {Subscript[f, 1 v][[numy]]};
>       Subscript[f, 2 v] = {Subscript[f, 2 v][[numy]]};
>       numy = 1;
>       passo = passo + 1;
>       ]
>     ];
>    matriceP = Append[matriceP, P];
>    mfugv1 = {{}};
>    mfugl1 = {{}};
>    mfugv2 = {{}};
>    mfugl2 = {{}};
>    my1 = {{}};
>    my2 = {{}};
>    indicek = indicek + 1;
>    valorek = Append[valorek, k];
>
>  (*--------------------------------------------------------THIS
> PART------------------------------------------------------------------*)
> \
>
>    (**Catch*[Do[If[( (matriceP[[i-1,1]]-matriceP[[i-1,-1]])/
>    matriceP[[i-1,1]])^2>( (matriceP[[i,1]]-matriceP[[i,-1]])/
>    matriceP[[i,1]])^2,Throw[i+1]],{i,2,Length[valorek]}]]*)
>    Do[If[( (matriceP[[i - 1, 1]] - matriceP[[i - 1, -1]])/
>         matriceP[[i - 1, 1]])^2 < ( (
>         matriceP[[i, 1]] - matriceP[[i, -1]])/matriceP[[i, 1]])^2,
>      * Goto[thispoint]*], {i, 2, Length[valorek]}];
>    , {k, -0.2, 0.2, 0.1}
>    ]
>  * Label[thispoint]*;
>  ris = Append[{ris},
>     Join[{P[[nump]]}, {Subscript[y, 1 n]}, {Subscript[y,
>       2 n]}, {Subscript[f, 1 l][[nump]]}, {Subscript[f, 2 l][[
>        nump]]}, {Subscript[f, 1 v]}, {Subscript[f,
>       2 v]}, {Abs[
>         Subscript[f, 1 l][[nump]] - Subscript[f, 1 v][[numy]]] +
>        Abs[Subscript[f, 2 l][[nump]] - Subscript[f, 2 v][[numy]]]}]] //
>     MatrixForm;
>  DiscretePlot[P[[i]], {i, 1, Length[P]}];
>
>  Do[Print["k12: ", valorek[[i]], " Arrive pressure: ",
>    matriceP[[i, -1]],
>    " Deviation: ", ( (matriceP[[i, 1]] - matriceP[[i, -1]])/
>     matriceP[[i, 1]])^2], {i, Length[valorek]}] ]
> matriceAAD =
>  Table[( (matriceP[[i, 1]] - matriceP[[i, -1]])/
>    matriceP[[i, 1]])^2, {i,
>    Length[valorek]}](*Tabella di tutte le deviazioni *)
> Print["k12 -> ",
>  valorek[[Flatten[
>    Position[matriceAAD, Min[matriceAAD]]]]], " AAD -> ",
>  Min[matriceAAD]]

You should use Throw/Catch, but Catch should be attached to the outermost  
Do, not the innermost, as you are trying to exit a doubly nested loop.  
Write:

(* Begin *)

....

Catch@Do[\[Omega] = {0.1521, 0.32684};

  ...

  Do[
    If[((matriceP[[i - 1, 1]] - matriceP[[i - 1, -1]])/
         matriceP[[i - 1, 1]])^2 > ((matriceP[[i, 1]] -
         matriceP[[i, -1]])/matriceP[[i, 1]])^2,
       Throw[i + 1]
    ],
    {i, 2, Length[valorek]}
  ], {k, -0.2, 0.2, 0.1}
];

....

(* End *)

and you will get:

Out[2]= {0.00242381, 7.4059*10^-6}

During evaluation of In[1]:= k12 -> {-0.1} AAD -> 7.4059*10^-6

Of course I don't know whether this is the right answer, but the  
calculation did finish quickly and without any errors.

A note on programming style: they say you can write Fortran in any  
language, and while I had never seen this done in Mathematica up until  
now, you have certainly proved that it is possible. However, it isn't  
necessarily a good idea.

Best,

O. R.



  • Prev by Date: Re: nVidia Optumus prevents using CUDA?
  • Next by Date: Re: Exit a loop
  • Previous by thread: Re: Exit a loop
  • Next by thread: Re: Exit a loop