Evaluating number of iteration with a certain map with While The 2019 Stack Overflow Developer Survey Results Are InWhy should I avoid the For loop in Mathematica?Out of memory in a Do loopRepeating Calculations/Iterations without a specific functionWhile loop with changing variable , NDSolve and an IntegralUsing Map function with NDSolveHow do I repeat the number of times a nested for loop does an iteration?

What do I do when my TA workload is more than expected?

A female thief is not sold to make restitution -- so what happens instead?

If I score a critical hit on an 18 or higher, what are my chances of getting a critical hit if I roll 3d20?

If my opponent casts Ultimate Price on my Phantasmal Bear, can I save it by casting Snap or Curfew?

How to notate time signature switching consistently every measure

Are spiders unable to hurt humans, especially very small spiders?

Short story: child made less intelligent and less attractive

For what reasons would an animal species NOT cross a *horizontal* land bridge?

Variable with quotation marks "$()"

Can there be female White Walkers?

Is an up-to-date browser secure on an out-of-date OS?

What does もの mean in this sentence?

Correct punctuation for showing a character's confusion

Why doesn't UInt have a toDouble()?

A word that means fill it to the required quantity

Can we generate random numbers using irrational numbers like π and e?

What can I do if neighbor is blocking my solar panels intentionally

How do PCB vias affect signal quality?

Why did Peik say, "I'm not an animal"?

Match Roman Numerals

Worn-tile Scrabble

Why couldn't they take pictures of a closer black hole?

Did any laptop computers have a built-in 5 1/4 inch floppy drive?

Can a flute soloist sit?



Evaluating number of iteration with a certain map with While



The 2019 Stack Overflow Developer Survey Results Are InWhy should I avoid the For loop in Mathematica?Out of memory in a Do loopRepeating Calculations/Iterations without a specific functionWhile loop with changing variable , NDSolve and an IntegralUsing Map function with NDSolveHow do I repeat the number of times a nested for loop does an iteration?










2












$begingroup$


Beeing used to programming in C-like languages I am struggling with iterations and loops with mathematica. I am trying not to use the For command, as already lots of people recommended.



I am trying to solve the following problem:



Given the map $z_i+1= z_i^2 +c$ with $z_i, c in mathbbC$ and $z_0 = 0$ evaluate the contours that represents given the parameter $c$ the number of iterations $i$ that I have to perform in order to have $|z_i|> 2$. Perform the computation with $-0.6 leq Re(z_i)leq -0.4 $ and $0.6 leq Im(z_i)leq 0.4$ and 100 points per axis.



Given the condition I though I could use a While Loop to perform the task



i=0; (*init counter*)
z[i]=0; (*init z[i]*)
g[c_]:= While[
Abs[z[i]]<= 2, (*condition*)
z[i+1]= z[i]^2 +c; (*process*)
i++; (*increment*)
]
Print[i]
g[0.2 + 0.2 I]


This computation with the input, say, $(-0.2 +0.2 i)$ (and with many others) takes all the memory of the machine I am using (Wolfram online). I don't understand whether I am just missing something or the amount of computation I can perform on the server just isn't enough (which seems really unlikely)



Furthermore I would like the function to return an integer (i - the number of iterations) but I really struggle with how to correctly use the synthax of Mathematica to do that.



Thanks in advance to everyone who is so keen to stop by and help :)










share|improve this question







New contributor




JacquesLeen is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$











  • $begingroup$
    Hello there. Just wanted to point out that for the input you give as example the computation will never finish because the condition is always satisfied. The absolute value never goes above 0.36.
    $endgroup$
    – Kiro
    yesterday















2












$begingroup$


Beeing used to programming in C-like languages I am struggling with iterations and loops with mathematica. I am trying not to use the For command, as already lots of people recommended.



I am trying to solve the following problem:



Given the map $z_i+1= z_i^2 +c$ with $z_i, c in mathbbC$ and $z_0 = 0$ evaluate the contours that represents given the parameter $c$ the number of iterations $i$ that I have to perform in order to have $|z_i|> 2$. Perform the computation with $-0.6 leq Re(z_i)leq -0.4 $ and $0.6 leq Im(z_i)leq 0.4$ and 100 points per axis.



Given the condition I though I could use a While Loop to perform the task



i=0; (*init counter*)
z[i]=0; (*init z[i]*)
g[c_]:= While[
Abs[z[i]]<= 2, (*condition*)
z[i+1]= z[i]^2 +c; (*process*)
i++; (*increment*)
]
Print[i]
g[0.2 + 0.2 I]


This computation with the input, say, $(-0.2 +0.2 i)$ (and with many others) takes all the memory of the machine I am using (Wolfram online). I don't understand whether I am just missing something or the amount of computation I can perform on the server just isn't enough (which seems really unlikely)



Furthermore I would like the function to return an integer (i - the number of iterations) but I really struggle with how to correctly use the synthax of Mathematica to do that.



Thanks in advance to everyone who is so keen to stop by and help :)










share|improve this question







New contributor




JacquesLeen is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$











  • $begingroup$
    Hello there. Just wanted to point out that for the input you give as example the computation will never finish because the condition is always satisfied. The absolute value never goes above 0.36.
    $endgroup$
    – Kiro
    yesterday













2












2








2





$begingroup$


Beeing used to programming in C-like languages I am struggling with iterations and loops with mathematica. I am trying not to use the For command, as already lots of people recommended.



I am trying to solve the following problem:



Given the map $z_i+1= z_i^2 +c$ with $z_i, c in mathbbC$ and $z_0 = 0$ evaluate the contours that represents given the parameter $c$ the number of iterations $i$ that I have to perform in order to have $|z_i|> 2$. Perform the computation with $-0.6 leq Re(z_i)leq -0.4 $ and $0.6 leq Im(z_i)leq 0.4$ and 100 points per axis.



Given the condition I though I could use a While Loop to perform the task



i=0; (*init counter*)
z[i]=0; (*init z[i]*)
g[c_]:= While[
Abs[z[i]]<= 2, (*condition*)
z[i+1]= z[i]^2 +c; (*process*)
i++; (*increment*)
]
Print[i]
g[0.2 + 0.2 I]


This computation with the input, say, $(-0.2 +0.2 i)$ (and with many others) takes all the memory of the machine I am using (Wolfram online). I don't understand whether I am just missing something or the amount of computation I can perform on the server just isn't enough (which seems really unlikely)



Furthermore I would like the function to return an integer (i - the number of iterations) but I really struggle with how to correctly use the synthax of Mathematica to do that.



Thanks in advance to everyone who is so keen to stop by and help :)










share|improve this question







New contributor




JacquesLeen is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$




Beeing used to programming in C-like languages I am struggling with iterations and loops with mathematica. I am trying not to use the For command, as already lots of people recommended.



I am trying to solve the following problem:



Given the map $z_i+1= z_i^2 +c$ with $z_i, c in mathbbC$ and $z_0 = 0$ evaluate the contours that represents given the parameter $c$ the number of iterations $i$ that I have to perform in order to have $|z_i|> 2$. Perform the computation with $-0.6 leq Re(z_i)leq -0.4 $ and $0.6 leq Im(z_i)leq 0.4$ and 100 points per axis.



Given the condition I though I could use a While Loop to perform the task



i=0; (*init counter*)
z[i]=0; (*init z[i]*)
g[c_]:= While[
Abs[z[i]]<= 2, (*condition*)
z[i+1]= z[i]^2 +c; (*process*)
i++; (*increment*)
]
Print[i]
g[0.2 + 0.2 I]


This computation with the input, say, $(-0.2 +0.2 i)$ (and with many others) takes all the memory of the machine I am using (Wolfram online). I don't understand whether I am just missing something or the amount of computation I can perform on the server just isn't enough (which seems really unlikely)



Furthermore I would like the function to return an integer (i - the number of iterations) but I really struggle with how to correctly use the synthax of Mathematica to do that.



Thanks in advance to everyone who is so keen to stop by and help :)







procedural-programming






share|improve this question







New contributor




JacquesLeen is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question







New contributor




JacquesLeen is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question






New contributor




JacquesLeen is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked 2 days ago









JacquesLeenJacquesLeen

303




303




New contributor




JacquesLeen is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





JacquesLeen is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






JacquesLeen is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











  • $begingroup$
    Hello there. Just wanted to point out that for the input you give as example the computation will never finish because the condition is always satisfied. The absolute value never goes above 0.36.
    $endgroup$
    – Kiro
    yesterday
















  • $begingroup$
    Hello there. Just wanted to point out that for the input you give as example the computation will never finish because the condition is always satisfied. The absolute value never goes above 0.36.
    $endgroup$
    – Kiro
    yesterday















$begingroup$
Hello there. Just wanted to point out that for the input you give as example the computation will never finish because the condition is always satisfied. The absolute value never goes above 0.36.
$endgroup$
– Kiro
yesterday




$begingroup$
Hello there. Just wanted to point out that for the input you give as example the computation will never finish because the condition is always satisfied. The absolute value never goes above 0.36.
$endgroup$
– Kiro
yesterday










3 Answers
3






active

oldest

votes


















7












$begingroup$

The problem with your code is that for some values of c, Abs[z] will never become larger than 2. You need to cap the number of iterations.




For this type of iteration, the typical function to use is Nest and related functions.



countIter[c_] := 
Length@NestWhileList[
#^2 + c &,
0.0,
Abs[#] <= 2 &,
1,
100 (* limit number of iterations to 100 *)
]

result =
Table[
countIter[re + im I],
re, -0.6, -0.4, 0.2/100,
im, 0.4, 0.6, 0.2/100
];

ArrayPlot[result, ColorFunction -> "Rainbow"]


enter image description here




However, this type of problem is quite amenable to compilation with Compile. When using Compile, the usual advice does not apply: a procedural style is still the best. (This does not mean that For is good, I'd still argue against that. But there are many other procedural constructs such as Do and While).



countIterCompiled = Compile[c, _Complex,
Block[z = 0.0 + 0.0 I, i = 0,
While[i <= 100 && Abs[z] <= 2,
z = z^2 + c;
i++
];
i
]
]


Using countIterCompiled will be much faster than countIter.






share|improve this answer











$endgroup$












  • $begingroup$
    thank u very much for the suggestion... I previously had a similar idea using Module instead of Block, and the problem was that the exercise did not specify that for many values the map was converging so I had to cap the number of iterations.
    $endgroup$
    – JacquesLeen
    2 days ago










  • $begingroup$
    @JacquesLeen Maybe that was part of the exercise: will you discover it on your own? Inside Compile, Module and Block are the same, I think. (Not outside of it.)
    $endgroup$
    – Szabolcs
    2 days ago


















3












$begingroup$

For iterated function systems like this, Nest and relatives are the preferred tools. Just exploring your (rather famous) map:



f[z_, c_] := z^2 + c
Abs[NestList[f[#, 0.2 + 0.2 I] &, 0, 30]]
(* 0, 0.282843, 0.344093, 0.351367, 0.327239, 0.304778, 0.303605,
0.311545, 0.316158, 0.315818, 0.313773, 0.312729, 0.31295, 0.313482,
0.313697, 0.313611, 0.313477, 0.313435, 0.313464, 0.313497, 0.313504,
0.313495, 0.313487, 0.313486, 0.313489, 0.313491, 0.313491, 0.31349,
0.31349, 0.31349, 0.31349 *)


As you can see, it converges to a value inside your radius. That's why your function doesn't terminate.






share|improve this answer









$endgroup$




















    1












    $begingroup$

    You could also use MandelbrotSetPlot to create Szabolcs' graphic:



    MandelbrotSetPlot[-0.6 + 0.4 I, -0.4 + 0.6 I, PlotLegends -> Automatic]


    enter image description here






    share|improve this answer









    $endgroup$













      Your Answer





      StackExchange.ifUsing("editor", function ()
      return StackExchange.using("mathjaxEditing", function ()
      StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix)
      StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
      );
      );
      , "mathjax-editing");

      StackExchange.ready(function()
      var channelOptions =
      tags: "".split(" "),
      id: "387"
      ;
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function()
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled)
      StackExchange.using("snippets", function()
      createEditor();
      );

      else
      createEditor();

      );

      function createEditor()
      StackExchange.prepareEditor(
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: false,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: null,
      bindNavPrevention: true,
      postfix: "",
      imageUploader:
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      ,
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      );



      );






      JacquesLeen is a new contributor. Be nice, and check out our Code of Conduct.









      draft saved

      draft discarded


















      StackExchange.ready(
      function ()
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f194872%2fevaluating-number-of-iteration-with-a-certain-map-with-while%23new-answer', 'question_page');

      );

      Post as a guest















      Required, but never shown

























      3 Answers
      3






      active

      oldest

      votes








      3 Answers
      3






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      7












      $begingroup$

      The problem with your code is that for some values of c, Abs[z] will never become larger than 2. You need to cap the number of iterations.




      For this type of iteration, the typical function to use is Nest and related functions.



      countIter[c_] := 
      Length@NestWhileList[
      #^2 + c &,
      0.0,
      Abs[#] <= 2 &,
      1,
      100 (* limit number of iterations to 100 *)
      ]

      result =
      Table[
      countIter[re + im I],
      re, -0.6, -0.4, 0.2/100,
      im, 0.4, 0.6, 0.2/100
      ];

      ArrayPlot[result, ColorFunction -> "Rainbow"]


      enter image description here




      However, this type of problem is quite amenable to compilation with Compile. When using Compile, the usual advice does not apply: a procedural style is still the best. (This does not mean that For is good, I'd still argue against that. But there are many other procedural constructs such as Do and While).



      countIterCompiled = Compile[c, _Complex,
      Block[z = 0.0 + 0.0 I, i = 0,
      While[i <= 100 && Abs[z] <= 2,
      z = z^2 + c;
      i++
      ];
      i
      ]
      ]


      Using countIterCompiled will be much faster than countIter.






      share|improve this answer











      $endgroup$












      • $begingroup$
        thank u very much for the suggestion... I previously had a similar idea using Module instead of Block, and the problem was that the exercise did not specify that for many values the map was converging so I had to cap the number of iterations.
        $endgroup$
        – JacquesLeen
        2 days ago










      • $begingroup$
        @JacquesLeen Maybe that was part of the exercise: will you discover it on your own? Inside Compile, Module and Block are the same, I think. (Not outside of it.)
        $endgroup$
        – Szabolcs
        2 days ago















      7












      $begingroup$

      The problem with your code is that for some values of c, Abs[z] will never become larger than 2. You need to cap the number of iterations.




      For this type of iteration, the typical function to use is Nest and related functions.



      countIter[c_] := 
      Length@NestWhileList[
      #^2 + c &,
      0.0,
      Abs[#] <= 2 &,
      1,
      100 (* limit number of iterations to 100 *)
      ]

      result =
      Table[
      countIter[re + im I],
      re, -0.6, -0.4, 0.2/100,
      im, 0.4, 0.6, 0.2/100
      ];

      ArrayPlot[result, ColorFunction -> "Rainbow"]


      enter image description here




      However, this type of problem is quite amenable to compilation with Compile. When using Compile, the usual advice does not apply: a procedural style is still the best. (This does not mean that For is good, I'd still argue against that. But there are many other procedural constructs such as Do and While).



      countIterCompiled = Compile[c, _Complex,
      Block[z = 0.0 + 0.0 I, i = 0,
      While[i <= 100 && Abs[z] <= 2,
      z = z^2 + c;
      i++
      ];
      i
      ]
      ]


      Using countIterCompiled will be much faster than countIter.






      share|improve this answer











      $endgroup$












      • $begingroup$
        thank u very much for the suggestion... I previously had a similar idea using Module instead of Block, and the problem was that the exercise did not specify that for many values the map was converging so I had to cap the number of iterations.
        $endgroup$
        – JacquesLeen
        2 days ago










      • $begingroup$
        @JacquesLeen Maybe that was part of the exercise: will you discover it on your own? Inside Compile, Module and Block are the same, I think. (Not outside of it.)
        $endgroup$
        – Szabolcs
        2 days ago













      7












      7








      7





      $begingroup$

      The problem with your code is that for some values of c, Abs[z] will never become larger than 2. You need to cap the number of iterations.




      For this type of iteration, the typical function to use is Nest and related functions.



      countIter[c_] := 
      Length@NestWhileList[
      #^2 + c &,
      0.0,
      Abs[#] <= 2 &,
      1,
      100 (* limit number of iterations to 100 *)
      ]

      result =
      Table[
      countIter[re + im I],
      re, -0.6, -0.4, 0.2/100,
      im, 0.4, 0.6, 0.2/100
      ];

      ArrayPlot[result, ColorFunction -> "Rainbow"]


      enter image description here




      However, this type of problem is quite amenable to compilation with Compile. When using Compile, the usual advice does not apply: a procedural style is still the best. (This does not mean that For is good, I'd still argue against that. But there are many other procedural constructs such as Do and While).



      countIterCompiled = Compile[c, _Complex,
      Block[z = 0.0 + 0.0 I, i = 0,
      While[i <= 100 && Abs[z] <= 2,
      z = z^2 + c;
      i++
      ];
      i
      ]
      ]


      Using countIterCompiled will be much faster than countIter.






      share|improve this answer











      $endgroup$



      The problem with your code is that for some values of c, Abs[z] will never become larger than 2. You need to cap the number of iterations.




      For this type of iteration, the typical function to use is Nest and related functions.



      countIter[c_] := 
      Length@NestWhileList[
      #^2 + c &,
      0.0,
      Abs[#] <= 2 &,
      1,
      100 (* limit number of iterations to 100 *)
      ]

      result =
      Table[
      countIter[re + im I],
      re, -0.6, -0.4, 0.2/100,
      im, 0.4, 0.6, 0.2/100
      ];

      ArrayPlot[result, ColorFunction -> "Rainbow"]


      enter image description here




      However, this type of problem is quite amenable to compilation with Compile. When using Compile, the usual advice does not apply: a procedural style is still the best. (This does not mean that For is good, I'd still argue against that. But there are many other procedural constructs such as Do and While).



      countIterCompiled = Compile[c, _Complex,
      Block[z = 0.0 + 0.0 I, i = 0,
      While[i <= 100 && Abs[z] <= 2,
      z = z^2 + c;
      i++
      ];
      i
      ]
      ]


      Using countIterCompiled will be much faster than countIter.







      share|improve this answer














      share|improve this answer



      share|improve this answer








      edited 2 days ago

























      answered 2 days ago









      SzabolcsSzabolcs

      164k14448947




      164k14448947











      • $begingroup$
        thank u very much for the suggestion... I previously had a similar idea using Module instead of Block, and the problem was that the exercise did not specify that for many values the map was converging so I had to cap the number of iterations.
        $endgroup$
        – JacquesLeen
        2 days ago










      • $begingroup$
        @JacquesLeen Maybe that was part of the exercise: will you discover it on your own? Inside Compile, Module and Block are the same, I think. (Not outside of it.)
        $endgroup$
        – Szabolcs
        2 days ago
















      • $begingroup$
        thank u very much for the suggestion... I previously had a similar idea using Module instead of Block, and the problem was that the exercise did not specify that for many values the map was converging so I had to cap the number of iterations.
        $endgroup$
        – JacquesLeen
        2 days ago










      • $begingroup$
        @JacquesLeen Maybe that was part of the exercise: will you discover it on your own? Inside Compile, Module and Block are the same, I think. (Not outside of it.)
        $endgroup$
        – Szabolcs
        2 days ago















      $begingroup$
      thank u very much for the suggestion... I previously had a similar idea using Module instead of Block, and the problem was that the exercise did not specify that for many values the map was converging so I had to cap the number of iterations.
      $endgroup$
      – JacquesLeen
      2 days ago




      $begingroup$
      thank u very much for the suggestion... I previously had a similar idea using Module instead of Block, and the problem was that the exercise did not specify that for many values the map was converging so I had to cap the number of iterations.
      $endgroup$
      – JacquesLeen
      2 days ago












      $begingroup$
      @JacquesLeen Maybe that was part of the exercise: will you discover it on your own? Inside Compile, Module and Block are the same, I think. (Not outside of it.)
      $endgroup$
      – Szabolcs
      2 days ago




      $begingroup$
      @JacquesLeen Maybe that was part of the exercise: will you discover it on your own? Inside Compile, Module and Block are the same, I think. (Not outside of it.)
      $endgroup$
      – Szabolcs
      2 days ago











      3












      $begingroup$

      For iterated function systems like this, Nest and relatives are the preferred tools. Just exploring your (rather famous) map:



      f[z_, c_] := z^2 + c
      Abs[NestList[f[#, 0.2 + 0.2 I] &, 0, 30]]
      (* 0, 0.282843, 0.344093, 0.351367, 0.327239, 0.304778, 0.303605,
      0.311545, 0.316158, 0.315818, 0.313773, 0.312729, 0.31295, 0.313482,
      0.313697, 0.313611, 0.313477, 0.313435, 0.313464, 0.313497, 0.313504,
      0.313495, 0.313487, 0.313486, 0.313489, 0.313491, 0.313491, 0.31349,
      0.31349, 0.31349, 0.31349 *)


      As you can see, it converges to a value inside your radius. That's why your function doesn't terminate.






      share|improve this answer









      $endgroup$

















        3












        $begingroup$

        For iterated function systems like this, Nest and relatives are the preferred tools. Just exploring your (rather famous) map:



        f[z_, c_] := z^2 + c
        Abs[NestList[f[#, 0.2 + 0.2 I] &, 0, 30]]
        (* 0, 0.282843, 0.344093, 0.351367, 0.327239, 0.304778, 0.303605,
        0.311545, 0.316158, 0.315818, 0.313773, 0.312729, 0.31295, 0.313482,
        0.313697, 0.313611, 0.313477, 0.313435, 0.313464, 0.313497, 0.313504,
        0.313495, 0.313487, 0.313486, 0.313489, 0.313491, 0.313491, 0.31349,
        0.31349, 0.31349, 0.31349 *)


        As you can see, it converges to a value inside your radius. That's why your function doesn't terminate.






        share|improve this answer









        $endgroup$















          3












          3








          3





          $begingroup$

          For iterated function systems like this, Nest and relatives are the preferred tools. Just exploring your (rather famous) map:



          f[z_, c_] := z^2 + c
          Abs[NestList[f[#, 0.2 + 0.2 I] &, 0, 30]]
          (* 0, 0.282843, 0.344093, 0.351367, 0.327239, 0.304778, 0.303605,
          0.311545, 0.316158, 0.315818, 0.313773, 0.312729, 0.31295, 0.313482,
          0.313697, 0.313611, 0.313477, 0.313435, 0.313464, 0.313497, 0.313504,
          0.313495, 0.313487, 0.313486, 0.313489, 0.313491, 0.313491, 0.31349,
          0.31349, 0.31349, 0.31349 *)


          As you can see, it converges to a value inside your radius. That's why your function doesn't terminate.






          share|improve this answer









          $endgroup$



          For iterated function systems like this, Nest and relatives are the preferred tools. Just exploring your (rather famous) map:



          f[z_, c_] := z^2 + c
          Abs[NestList[f[#, 0.2 + 0.2 I] &, 0, 30]]
          (* 0, 0.282843, 0.344093, 0.351367, 0.327239, 0.304778, 0.303605,
          0.311545, 0.316158, 0.315818, 0.313773, 0.312729, 0.31295, 0.313482,
          0.313697, 0.313611, 0.313477, 0.313435, 0.313464, 0.313497, 0.313504,
          0.313495, 0.313487, 0.313486, 0.313489, 0.313491, 0.313491, 0.31349,
          0.31349, 0.31349, 0.31349 *)


          As you can see, it converges to a value inside your radius. That's why your function doesn't terminate.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered 2 days ago









          John DotyJohn Doty

          7,57811124




          7,57811124





















              1












              $begingroup$

              You could also use MandelbrotSetPlot to create Szabolcs' graphic:



              MandelbrotSetPlot[-0.6 + 0.4 I, -0.4 + 0.6 I, PlotLegends -> Automatic]


              enter image description here






              share|improve this answer









              $endgroup$

















                1












                $begingroup$

                You could also use MandelbrotSetPlot to create Szabolcs' graphic:



                MandelbrotSetPlot[-0.6 + 0.4 I, -0.4 + 0.6 I, PlotLegends -> Automatic]


                enter image description here






                share|improve this answer









                $endgroup$















                  1












                  1








                  1





                  $begingroup$

                  You could also use MandelbrotSetPlot to create Szabolcs' graphic:



                  MandelbrotSetPlot[-0.6 + 0.4 I, -0.4 + 0.6 I, PlotLegends -> Automatic]


                  enter image description here






                  share|improve this answer









                  $endgroup$



                  You could also use MandelbrotSetPlot to create Szabolcs' graphic:



                  MandelbrotSetPlot[-0.6 + 0.4 I, -0.4 + 0.6 I, PlotLegends -> Automatic]


                  enter image description here







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered 2 days ago









                  Carl WollCarl Woll

                  73.4k398192




                  73.4k398192




















                      JacquesLeen is a new contributor. Be nice, and check out our Code of Conduct.









                      draft saved

                      draft discarded


















                      JacquesLeen is a new contributor. Be nice, and check out our Code of Conduct.












                      JacquesLeen is a new contributor. Be nice, and check out our Code of Conduct.











                      JacquesLeen is a new contributor. Be nice, and check out our Code of Conduct.














                      Thanks for contributing an answer to Mathematica Stack Exchange!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid


                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.

                      Use MathJax to format equations. MathJax reference.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function ()
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f194872%2fevaluating-number-of-iteration-with-a-certain-map-with-while%23new-answer', 'question_page');

                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Tamil (spriik) Luke uk diar | Nawigatjuun

                      Align equal signs while including text over equalitiesAMS align: left aligned text/math plus multicolumn alignmentMultiple alignmentsAligning equations in multiple placesNumbering and aligning an equation with multiple columnsHow to align one equation with another multline equationUsing \ in environments inside the begintabularxNumber equations and preserving alignment of equal signsHow can I align equations to the left and to the right?Double equation alignment problem within align enviromentAligned within align: Why are they right-aligned?

                      Training a classifier when some of the features are unknownWhy does Gradient Boosting regression predict negative values when there are no negative y-values in my training set?How to improve an existing (trained) classifier?What is effect when I set up some self defined predisctor variables?Why Matlab neural network classification returns decimal values on prediction dataset?Fitting and transforming text data in training, testing, and validation setsHow to quantify the performance of the classifier (multi-class SVM) using the test data?How do I control for some patients providing multiple samples in my training data?Training and Test setTraining a convolutional neural network for image denoising in MatlabShouldn't an autoencoder with #(neurons in hidden layer) = #(neurons in input layer) be “perfect”?