Geschachtelte For-Schleifen < Mathematica < Mathe-Software < Mathe < Vorhilfe
|
Liebe Leute,
ich vermute mal, dass mir die Hitze in Berlin den Brägen gebrutzelt hat, denn ich sehe nicht, wo im Folgenden der Fehler (sich ver-)steckt:
1: | lst={};
| 2: | Block[{i,j},
| 3: | For[i=2,i<=2^7,i++
| 4: | For[j=1,j<i,j++,
| 5: | lst=Join[lst,{{j/i,1/i}}]
| 6: | ]]];
| 7: | ListPlot[lst,PlotStyle->AbsolutePointSize[1],PlotRange->{{0,1},{0,1/2}}] |
da i von 2 bis sonstnichwas läuft und j von 1 bis i-1, sollte doch (sogar als erstes Element von lst) {j/i,1/i}/.{i->2,j->1} --> {1/2,1/2} enthalten sein. Weder der Plot noch lst[[1]] --> {1/3,1/3} oder auch MemberQ[lst,{1/2,1/2}] --> False liefern einen Hinweis auf eine Existenz des Zahlenpaares {1/2,1/2} in lst.
Hingegen liefert die für Mathematica typischere Eingabe ListPlot[Flatten[Table[{j/i,1/i},{i,2,50},{j,1,i-1}],1],PlotRange->All,Axes->False,Frame->True] genau das erwartete Ergebnis (inklusive {1/2,1/2}).
Werde ich schon kurz vor meinem 47. Geburtstag dement, oder was übersehe ich hier?
Vielen Dank im Voraus,
Peter
P.S.: Ich habe eine gleich lautende Frage auf englisch im Forum comp.soft-sys.math.mathematica gestellt.
P.P.S.: natürlich ist es irrelevant, dass i einmal bis 128 hochrattert und im zweiten Beispiel nur bis "fuffzich".
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:39 Fr 11.06.2010 | Autor: | Peter_Pein |
seltsam, wenn ich den Mma-Compiler verwende, erhalte ich auch bei den geschachtelten Fors das erwartete Ergebnis:
1: | lst={};
| 2: | Compile[{{imax,_Integer}},Block[{i,j},For[i=2,i<=imax,i++ ,For[j=1,j<i,j++,lst=Join[lst,N@{{j/i,1/i}}] ]]],
| 3: | {{i|j,_Integer},{lst,_Real,2}}
| 4: | ][50];
| 5: | ListPlot[lst,PlotStyle->AbsolutePointSize[1],PlotRange->{{0,1},{0,1/2}}]
| 6: | lst[[1]] |
ergibt den (diesmal vollständigen Plot) und {0.5,0.5}.
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:43 Fr 11.06.2010 | Autor: | Peter_Pein |
stöhn!! ein wönzigös Komma nach "i++" fehlte.
Da ich mir nicht selber antworten kann, könnte sich bitte jemand erbarmen und eine leere Antwort senden, damit der Status meiner Frage auf "beantwortet" gesetzt wird?"
|
|
|
|
|
Hallo Peter,
ist ohne Punkt und Komma erledigt und umgestellt
Gruß
schachuzipus
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:57 Fr 11.06.2010 | Autor: | Peter_Pein |
> Hallo Peter,
und was ist ^ das?
>
> ist ohne Punkt und Komma erledigt und umgestellt
>
> Gruß
>
> schachuzipus
|
|
|
|
|
Moin,
eine einfache Table haette es doch auch getan:
Flatten[Table[{j/i, 1/i}, {i, 2, [mm] 2^7 [/mm] - 1}, {j, 1, i - 1}], 1]
und ist zu dem noch um Millionen Laengen schneller als deine For-Schleife.
Cheers
Patrick
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 21:59 Sa 12.06.2010 | Autor: | Peter_Pein |
Achem - hüstel - wenn ich bitte mal aus meinem Posting zitieren darf: "Hingegen liefert die für Mathematica typischere Eingabe ListPlot[Flatten[Table[{j/i,1/i},{i,2,50},{j,1,i-1}],1],PlotRange->All,Axes->False,Frame->True] genau das erwartete Ergebnis (inklusive {1/2,1/2}). "
P²
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 01:05 So 13.06.2010 | Autor: | halirutan |
Ja, da hat wohl einer die Frage nicht bis zu ende gelesen.. Sorry.
Cheers
Patrick
|
|
|
|