Matroids Matheplanet Forum Index
Moderiert von matph
Informatik » Programmieren » Python: plt will nicht so wie ich
Druckversion
Druckversion
Antworten
Antworten
Autor
Kein bestimmter Bereich Python: plt will nicht so wie ich
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 1871
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Themenstart: 2020-03-28


Hallo, der math. Teil ist richtig, aber ich will Zahl und TS im Plot haben. Was tun?
Python
  1. from sympy import *
  2. >>> from sympy import primepi
  3. >>> from math import sqrt
  4. >>> import numpy as np
  5. >>> import matplotlib.pyplot as plt # the tidy way
  6.  
  7. Zahl=0
  8. b=[]
  9. nr=0
  10. ET=0 #Gesamtzahl echter Teiler.
  11. #EGT = echte große Teiler.
  12.  
  13. for Zahl in range(2,1000,2):
  14. #print(Zahl)
  15. i=1
  16. b=[]
  17. c=[]
  18. d=[]
  19. TS=0
  20. while i <= Zahl:
  21. if Zahl%i==0:
  22. Teiler=Zahl//i
  23. b.append(Teiler)
  24. TS=TS+Teiler
  25.  
  26. i=i+1
  27.  
  28. else:
  29. i=i+1
  30. c.append(TS)
  31. d.append(Zahl)
  32. b.reverse()
  33. if TS%2!=0:
  34. nr=nr+1
  35. print("Nr:",nr, Zahl, "TS:", TS-Zahl, b, len(b))
  36.  
  37.  
  38. >>> TS = np.linspace(0, 1, 2000)
  39. >>> Zahl = np.linspace(0, 1, 1000)
  40. >>> plt.plot(Zahl, c) # line plot
  41. >>> plt.plot(TS)




-----------------
Das Schwierige ist nicht die Mathematik. Schwierig ist es zu formulieren, daß man selber versteht, was man sieht und die anderen auch!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
emmi82
Senior Letzter Besuch: im letzten Monat
Dabei seit: 06.05.2013
Mitteilungen: 410
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.1, eingetragen 2020-03-28


Hi,

bisher verstehe ich nicht genau, was du da plotten möchtest.
Vermutlich möchtest du in Zeile 30 die soeben errechnete Teilersumme an c anhängen. Wegen Zeile 18 überschreibst du aber in jeder For-Schleifen-Iteration dein c wieder mit der leeren Liste, sodass in c am Ende nur eine Zahl steht.
In Zeile 38-39 überschreibst du TS und Zahl.
Und vermutlich erhältst du Fehlermeldungen beim Plotten, so etwas wie
ValueError: x and y must have same first dimension, but have shapes (1000,) and (499,), weil die Anzahl der Zahlenwerte für die X- und Y-Achse nicht übereinstimmen.

Kleiner Tipp: Deine "If" in der While-Schleife kannst du übrigens vereinfachen, indem du das i=i+1 einen Schritt rausrückst (i+=1 bedeutet dasselbe):
Python
# ab Zeile 20
    while i <= Zahl:
        if Zahl%i==0:
            Teiler=Zahl//i        
            bf.append(Teiler)
            TS+=Teiler # andere Schreibweise
        i+=1 # in jedem Fall
    c.append(TS)
    # und so weiter wie vorher

emmi



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 1871
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.2, vom Themenstarter, eingetragen 2020-03-29


Danke, Emmi, schon erledigt!


-----------------
Das Schwierige ist nicht die Mathematik. Schwierig ist es zu formulieren, daß man selber versteht, was man sieht und die anderen auch!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
pzktupel
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 02.09.2017
Mitteilungen: 1388
Aus: Thüringen
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.3, eingetragen 2020-03-29


Mal eine Zwischenfrage:
Warum eigentlich die Teiler bis Zahl laufen lassen ?

Quasi wäre die Obergrenze Zahl\2 oder Zahl\3 usw.

Ferner könnte man bis zur Wurzel(Zahl) rechnen lassen und die Primteiler in ein Feld packen. Zum Ende wird die Kombination aus allen generiert.

Ist Zahl % i=0 , dann kann man den Co-Teiler auch gleich mitnehmen.

Ich in Basic könnte man grob sagen:

Feld F(1000) #1000 Teiler in der Anzahl

j=0

Ist N MOD i=0 dann j+=1,F(j)=i:N=N\i, probiere ob i nochmal..ja, N=N\i, j+=1 F(j)=i

Bei Wurzel(N) ist schluss, kombiniere alle F(j) für Teilergewinnung, erhöhe TS um diese Kombination


-----------------
Pech in der Liebe , Glück im Verlieren !!!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Bekell
Aktiv Letzter Besuch: in der letzten Woche
Dabei seit: 05.09.2008
Mitteilungen: 1871
Zum letzten BeitragZum nächsten BeitragZum vorigen BeitragZum erstem Beitrag  Beitrag No.4, vom Themenstarter, eingetragen 2020-03-29


Ja, PZK Tupel, rechentechnisch ist hier noch sehr viel drin... aber ich will nicht in den Berichten der ganz großen Zahlen ...


-----------------
Das Schwierige ist nicht die Mathematik. Schwierig ist es zu formulieren, daß man selber versteht, was man sieht und die anderen auch!



Eine Notiz zu diese Forumbeitrag schreiben Notiz   Profil  Quote  Link auf diesen Beitrag Link
Bekell hat die Antworten auf ihre/seine Frage gesehen.
Bekell hatte hier bereits selbst das Ok-Häkchen gesetzt.
Bekell wird per Mail über neue Antworten informiert.
Neues Thema [Neues Thema] Antworten [Antworten]    Druckversion [Druckversion]

 


Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2020 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]