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

Fehlersuche Lucas-Folge Modulo n

 

Sue

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.03.2018, 15:27     Titel: Fehlersuche Lucas-Folge Modulo n
  Antworten mit Zitat      
Ich muss momentan einen Code für eine rekurrente Folge schreiben. Der Code ist nicht schön, denn ich krame momentan meine Matlab-Kenntnisse von vor mehreren Jahren aus... Aber Hilfe wäre super.
Was soll ich rechnen: Zu gegebenen P=1, Q=-1, die Lucas-Folgen, und zwar soll am Ende das n+1-te Folgenglied erscheinen. Um etwas präziser zu sein:
Sei am Anfang U_0=0, U_1=1 und k=0 (zählt bei welchem U ich mich befinde).
Bei gegebenen n+1 in binärer Schreibweise (gebe ich unten als Vektor ein), soll bei den Einträgen, wo eine 1 steht (U_2k,U_(2k+1))=(2*U_k*U_(k+1), (U_(k+1))^2-Q*(U_k)^2)
berechnet werden
und bei 0: (U_(2k+1),U_(2k+2))=((U_(k+1))^2-Q*(U_k)^2,P*(U_(k+1))^2-2*Q*U_k*U_(k+1))
berechnet werden.
Hier noch einmal alles auf spanisch: http://wpd.ugr.es/~eaznar/presentaciones/calLucas.htm#/5

Bei den Probefunktionen klappt bei mir alles. Es sollte jedoch laut der Theorie für n=456267827926952033 (n_1=456267827926952034) für U_n_1=0 mod n rauskommen. Das tut es aber nicht. Liegt das evtl. an der Modulo Funktion?



Code:

function[U_n,U_n_1,V_n]=sucLucas(n,n_1,P,Q)
%Input: n = numero de que queremos calcular la Sucesion de Lucas en base
%diez, U_n es el resultado.
        %n_1=n+1 en base 2 (vector)
%           -10 (numero)
            %-P y Q (dado).
%Output: Sucesion de Lucas: Un=U_n, Unn=U_n+1, V_n


U=[0,1];

%Umwandlung von m+1 binär in einen Vektor???
k=0;
r=length(n_1);
for i=1:r
    if isequal(n_1(i),0)
        U=[vpa(2*U(1)*U(2)-P*U(1)^2),vpa(U(2)^2-Q*U(1)^2)];
        U=[vpa(mod(U(1),n)),vpa(mod(U(2),n))]
        k=vpa(2*k)
    elseif isequal(n_1(i),1)
         U=[vpa(U(2)^2-Q*U(1)^2),vpa(P*U(2)^2-2*Q*U(1)*U(2))];
         U=[vpa(mod(U(1),n)),vpa(mod(U(2),n))]
         k=vpa(2*k+1)
    else display('nicht binär')
       break
    end
end
k
U
U_n=U(1)
U_n_1=U(2)
V_n=vpa(mod(2*U_n_1-P*U_n,n))
end


 


Sue

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.03.2018, 17:50     Titel: Anmerkung
  Antworten mit Zitat      
Als zusätzliche Notiz: Inzwischen habe ich das für viele Zahlen gerechnet und bei allen kommt das richtige raus, es ist jedoch keine so groß wie meine.
 
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.