Verfasst am: 16.03.2018, 15:27
Titel: Fehlersuche Lucas-Folge Modulo n
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
ifisequal(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) elseifisequal(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) elsedisplay('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
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.
Einstellungen und Berechtigungen
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
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.