WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Primfaktorzerlegung!

 

Gast21

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.11.2008, 13:46     Titel: Primfaktorzerlegung!
  Antworten mit Zitat      
Hallo!

Ich stecke noch in den aller-allerkleinsten Kinderschuhen von Matlab. Unsere Aufgabe ist es, 10 gegebene Zahlen in Primfaktoren zerlegen zu lassen, diese auszugeben und anschließend einen Plot "Teilbarkeitstest (also Anzahl der Durchläufe) gegen Anzahl der Primfaktoren" aufzustellen.
Wir hatten erst zwei Vorlesungen, die nichts mit dem Aufgabenblatt zu tun haben und wurden mit unserem Übungszettel bereits ins kalte Wasser geschmissen. Tja, so war es zwar auch in Ana und LinA, aber da wusste man wenigstens halbwegs, wie man es angehen sollte.
Hier ist mein bisheriger Programmablauf:

Code:

a=[2000;2007;2008;2011;2016;2018;2024;2025;2304;2560];         % Eingabe aller 10 Zahlen in Vektorform
n=0;            % n ist der Laufindex (Anzahl der Durchläufe)
x=zeros(1,length(a));
y=zeros(1,length(a));
for k=1:length(a)       %length(a)=10 , für alle Zahlen tue ...
    for l=2:1:sqrt(a);       % l = alle Teiler ab 2 bis Wurzel der Zahl (in Einerschritten)
        e=mod(a(k),l);
        if   e == 0             % wenn die Zahl gerade ist, dann
            b=a(k)/l;           % teile die Zahl durch den momentanen Wert von l
            n=n+1;              % erhöht den Laufindex
            c=factor(a(k));     % c = Vektor mit Primzahlen als Einträge
            % plot(length(c),n)
        end;  
     x(k)=length(c);
     y(k)=n;
    end
    n                           % Ausgabe der Anzahl der Durchläufe
    c;                          % Primzahlen jeder Zahl    
    length(c)
    %xlabel('Anzahl der Primfaktoren');
    %ylabel('Anzahl der Durchläufe');
    %x=[7 3 4 4 8 2 5 6 10 10 11];          %(Idiotenvariante: alles selber eingeben!)
    %y=[9 11 14 14 31 32 39 45 57 66 0];
    plot(x,y)
end


Die ersten beiden Teilaufgaben habe ich soweit eigentlich hinbekommen. Nur beim Plotten habe ich Probleme: Der Plot soll so aussehen, dass auf der x-Achse alle Anzahlen von Primzahlen stehen (also length(c)) und auf der y-Achse die Anzahl der benötigten Durchläufe (also n). Und das am besten als Säulendiagramm. Der Übersichtlichkeit halber. Beim momentanen Code wird mir eine kreuz-und-quer-gehende Linie angezeigt, die aber nicht gerade einer Anschaulichkeit dient.
Jetzt habe ich es mit "bar(x,y)" bzw. mit "bar(x(k),y(k)" probiert. Bringt beides nichts.

Könnt ihr mir da weiterhelfen?

Schöne Grüße!

Andi


Helmert
Forum-Century

Forum-Century


Beiträge: 121
Anmeldedatum: 04.09.08
Wohnort: Karlsruhe
Version: 2011a
     Beitrag Verfasst am: 02.11.2008, 14:17     Titel:
  Antworten mit Zitat      
Ich habe mich jetzt nicht in das Programm reingedacht, beziehe mich lediglich auf die Darstellung der Vektoren
Code:

%x=[7 3 4 4 8 2 5 6 10 10 11];          %(Idiotenvariante: alles selber eingeben!)
%y=[9 11 14 14 31 32 39 45 57 66 0];
 

Da sehe ich zunächst einmal ein prinzipielles Problem: Bei einem Säulendiagramm muß der y-Wert zu einem gegebenen x-Wert eindeutig sein. In Deiner Liste gibt es aber teilweise für gleiche x-Werte verschiedene y-Werte (z. B. die Werte 57 und 66 für das Argument 10). Insofern müßtest Du Dich entscheiden: Willst Du ein Säulendiagramm, oder willst Du alle Werte so wie sie sind darstellen? Beides geht nicht.

Im letzteren Fall kann man z. B. Punkte statt Linien plotten:
Code:

Siehe auch:

help plot

Für ein Säulendiagramm darf im x-Vektor kein Wert doppelt vorkommen. Wenn das gewährleistet ist, geht das mit:
Code:
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.