Matrixformeln - Zugreifen auf vorigen Eintrag

Hallo,
ich möchte wissen ob - und wenn ja wie - es geht, dass man auf vorherigen Einträgen in einer Matrixformel zugreifen will.

Beispiel (über mehrere Spalten):
A1: 3 B1: 5
A2: REST(A1^2;B1)
A3: REST(A2^2;B1)
A4: REST(A3^2;B1)

Sicherlich könnte ich auch:
A1: 3 B1: 5
A2: REST(A1^2;B1)
A3: REST(A1^4;B1)
A4: REST(A1^8;B1)

verwenden, jedoch würde das zu schnell zu zu hohen Zahlen und damit zu Fehlermeldungen führen.

Zweiteres lässt sich auch leicht in eine Matrixformel integrieren:
REST(A1^(2^ZEILE(INDIREKT(„1:3“)));B1)

Nun nochmal die Frage: Kann ich das erstere Beispiel in eine Matrixformel integrieren?

Danke schonmal,
Gruß André

Hallo André,

Beispiel (über mehrere Spalten):
A1: 3 B1: 5
A2: REST(A1^2;B1)
A3: REST(A2^2;B1)
A4: REST(A3^2;B1)

Sicherlich könnte ich auch:
A1: 3 B1: 5
A2: REST(A1^2;B1)
A3: REST(A1^4;B1)
A4: REST(A1^8;B1)

Ich weiß hier nicht, was du mit einer Matrix-Formel anstellen willst. Beim ersten Beispiel würde ich einfach B1 mit der F4-Taste absolut setzen. Das zweite Beispiel lässt sich auch ohne Matrix-Formel problemlos lösen. Hier ist die Formel für das zweite Beispiel:
=REST($A$1^ZEILE()-1;$B$1). Wenn du Fragen zu dieser Formel hast, bitte einfach melden.
Gruß Alex

Hallo,
erstmal vielen Dank für deine Antwort. Deine absolute Lösung ist allerdings sinnlos, denn es behebt mein Problem von zu großen Zahlen nicht. Jedoch würde bei meinem zweiten Beispiel genauso wie bei deinem absoluten Beispiel die Quadrate zu schnell an Excels Grenzen bringen.

Mir geht es darum, dass ich den Rest des Produktes einzelner Quadrate benötige, die ich aus der Binärentwicklung einer weiteren Zahl erhalte . Nehmen wir an, dass ich die 10 = 0101 habe. Dann kommt also
REST((A1^1)^0*(A1^2)^1*(A1^4)^0*(A1^8)^1;B1)

Da jedoch damit die Zahlen zu stark wachsen, brauche ich eine schonendere Variante. Es gilt jedoch jedoch
REST((a+b)^2;a)=REST(a^2+2ab+b^2;a)=REST(b^2;a)

und damit folgt:
REST(REST((A1)^1;B1)*REST((A1)^2;B1)*REST((A1)^4;B1)*REST((A1)^8;B1);B1)

oder noch besser:
REST(REST(A1;B1)*REST(letzterWert^2;B1)*REST(letzterWert^2;B1)*REST(letzterWert^2;B1);B1)

Nimmt man nun bei der Iteration immer den vorherigen Wert, quadriert ihn und bildet den Rest dann hat man nach in jeder Zeile einen Quadratwert - und zudem eine resourcenschonendere Variante.
Und das war mein Ansatz bei der ersten Lösung. Das Problem: Ich benötige dafür zwei Spalten statt einer Zelle.


Ich dachte, dass man mit einer Matrixformel dieses Problem umgehen könnte. Damit diese sinnvoll begrenzt ist, würde ich den Logarithmus zur Basis 2 verwenden. Die Binärentwicklung wäre:
={KÜRZEN(REST(C1/2^ZEILE(INDIREKT(„1:“&(KÜRZEN(LOG(C1;2)+1))));1)*2)}

Jetzt müsste man noch die Quadrate einbinden:
{=REST(PRODUKT(A1^(2^(ZEILE(INDIREKT(„1:“&(KÜRZEN(LOG(C1;2)+1))))-1))^KÜRZEN(REST(C1/2^ZEILE(INDIREKT(„1:“&(KÜRZEN(LOG(C1;2)+1))));1)*2));B1)}

Die letze Zeile steht in D1, die weiteren Zellen sind:
A1 = 3
B1 = 5
C1 = 10

Wer diese 4 Zellen in Excel einfügt, der sieht, dass Excel am Ende die Zahl 59049 hat (Formelauswertung), aus dem er nur noch den Rest bilden muss.

Schon beim ersetzen von C1 = 10 durch 19 ist Excel machtlos und gibt nur noch #ZAHL! aus. Das heißt bei so winzig kleinen Ausgangszahlen macht Excel schlapp.


Daher ist es absolut wichtig, dass ich in jedem Zwischenschritt den Rest einzeln bilde. Kann man das auch über eine Matrixformel lösen?

Danke schon mal im Voraus,
MFG André

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Ergänzung
Mit
{=REST(PRODUKT(REST(A1^(2^(ZEILE(INDIREKT(„1:“&(KÜRZEN(LOG(C1;2)+1))))-1));B1)^KÜRZEN(REST(C1/2^ZEILE(INDIREKT(„1:“&(KÜRZEN(LOG(C1;2)+1))));1)*2));B1)}

kommt man zumindest bis C1=31
danach hat man jedoch Probleme mit REST(3^32;5)=#ZAHL!

  1. Ergänzung
    Mir ist noch eine Optimierung gelungen:
    {=REST(PRODUKT((A1^(2^(ZEILE(INDIREKT(„1:“&(KÜRZEN(LOG(C1;2)+1))))-1))-B1*KÜRZEN(A1^(2^(ZEILE(INDIREKT(„1:“&(KÜRZEN(LOG(C1;2)+1))))-1))/B1))^KÜRZEN(REST(C1/2^ZEILE(INDIREKT(„1:“&(KÜRZEN(LOG(C1;2)+1))));1)*2));B1)}

Dabei habe ich jedoch nur die Restprozedur umgangen und selbst programmiert. Der Fehler hier ist auf ein Rundungsfehler zurückzuführen.
Nun gehen Zahlen bis 63.

Hi Duak,

hat mit dem Problem gar nichts zu tun, aber mich würde interessieren warum du nicht wie üblich 10 dez als 1010 bin wertest sondern als 0101 !?

Gut, die Formel geht jetzt wohl bis 63, bis wohin soll es denn gehen?

Ist das was du da berechnest in den Naturwischenschaften unter irgendeinem Namen bekannt, also könnte es da schon fertige Lösungen geben (mal die Programmiersprache weglassend, rein der math. Ansatz).

Ginge auch eine in Vba selbst geschriebene BDF? (Benutzerdefinierte Funktion), die du dann in Excel so einbaust:
=Name(A1;B1;C1;D1)

Und, bei deiner Anfragsfrage hatte ich sehr wenig verstanden was du meinst, erst durch deine Antwort auf Alex mehr.
Also erzähle ruhig noch mehr was da wie berechnet werden soll, solangs mich nicht verwirrt ist es hilfreich :smile:

Excel hat Begrenzungen, u.a. bei Zahlen auf 15 signifikante Ziffern und wahrscheinlich auch bei Potenzen bei irgendeiner Potenzgröße.
Bei Interesse, in der FAQ, unter hifreiche Links o.ä. gibt es einen Link zu einer Seite, die xlam.ch o.ä. heißt, da stehen etliche Begrenzungen von Excel drinnen.

Wenn denn nun die Fehlermeldung „#ZAHL!“ durch zu große Potenzen kam, so kann ich dir evtl. helfen, ich habe da selbstgeschrieben aber auch fremden Code, der Excelgrenzen überwindet und ich meine bei dem Fremdcode wurden auch die Potenzierungsgrenzen überwunden, zumindest sehr erhöht *glaub*
Bei Interesse krame ich mal ob ich den Code finde, zumindest die Seite wo er stand.

Gruß
Reinhard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hat mit dem Problem gar nichts zu tun, aber mich würde
interessieren warum du nicht wie üblich 10 dez als 1010 bin
wertest sondern als 0101 !?

Nun ja, das hat einfach was mit einer Schleife zu tun. Man fängt halt immer bei 1 an und geht bis n.

Gut, die Formel geht jetzt wohl bis 63, bis wohin soll es denn
gehen?

Bis zu weit mehr als sechstelligen Zahlen. Und das würde meines Erachtens nur mit einer Iteration gehen.

Ist das was du da berechnest in den Naturwischenschaften unter
irgendeinem Namen bekannt, also könnte es da schon fertige
Lösungen geben (mal die Programmiersprache weglassend, rein
der math. Ansatz).

Also, was ich machen möchte ist das RSA Verfahren (Verschlüsselung) ein eine Exceltabelle zu bringen.

Ginge auch eine in Vba selbst geschriebene BDF?

Also lieber wäre mir eine reine Excelvariante. Weil es mir mehr um das didaktische als um das programmiererische geht. Und daher sollte es nicht all zu kompliziert werden. (12. Klasse Mathematik / Informatik)

Hallo,

kommt mir bekannt vor - Hausaufgabe? - irgend 'ne IT-Ausbildung und dann vielleicht Ermittlung einer IP für Netz- oder Subnetmaske? Wenn man es wirklich braucht, hat man die schnell im Kopf

nunja, man brauch das nicht wirklich, dafür gibt es Tabellen, Taschenrechner, … es reicht, wenn man es verstanden hat

ich würd die Aufgabe so lösen (für IP-Adressen mußt du das dann noch erweitern):

A B C D E F G H I J
Dezimal Dual 128 64 32 16 8 4 2 1
192 11000000 1 1 0 0 0 0 0 0 

folgende Formeln wurden verwendet:

Zelle Formel Wert
B2 =C2&D2&E2&F2&G2&H2&I2&J2 11000000 
C2 =WENN($A2255;"falsch";"") 

Die Formel in A3 hab ich auch nur eingefügt, falls du IP-Adressen ermitteln willst, wenn nicht, kannst du diese Formel löschen

Gruß
Marion

Nein, es ist keine IT Aufgabe oder ähnliches.
Ich möchte einfach nur die RSA Verschlüsselung in Excel einbinden.
Und mein einziges Problem ist, dass man dafür eigentlich nur eine Modulorechnung benötigt.

Es ist wirklich das Problem, dass ich nicht über 100 Zeilen folgenden Code stehen haben möchte:
A2: =A1
A3: =REST(A2^2;B$1)
A4: =REST(A3^2;B$1)
A5: =REST(A4^2;B$1)

Sondern das als eine Matrix in einer Matrixformel haben möchte.

Nein, es ist keine IT Aufgabe oder ähnliches.
Ich möchte einfach nur die RSA Verschlüsselung in Excel
einbinden.
Und mein einziges Problem ist, dass man dafür eigentlich nur
eine Modulorechnung benötigt.

ich hab erst mal gegoogelt und mich schlau (im Ansatz) gemacht

sehr interessant *nachdenk*

Gruß
Marion

Ich möchte einfach nur die RSA Verschlüsselung in Excel
einbinden.

ich hab erst mal gegoogelt und mich schlau (im Ansatz) gemacht
sehr interessant *nachdenk*

Hallöchen Marion,
ich habe da auch gelesen, und ich las da 128 Bit Verschlüsselung, der Anfrager sagte was von 4 Bits, vielleicht will er doch alle *nixweiß*
Sicher, es ist eine programmiertechnische Herausforderung das umzusetzen, der Antragsteller sagt ja nicht ohne Grund daß da Excel schon früh aussteigt und das reizt mich schon Vba-technisch.

Ich trau mir schon zu, dieses RSA umzusetzen, d.h. 10 Stunden um wirklich zu haarklein kapieren was da steht in dem Link, 10 Minuten für den Code, dann eine Woche um die Fehler im Code auszubügeln *ist so*

GuK
Reinhard

Hallo duak,

sorry, ich klinke mich da aus.

Gruß
Reinhard

Hallo duak007

Ginge auch eine in Vba selbst geschriebene BDF?

Also lieber wäre mir eine reine Excelvariante. Weil es mir
mehr um das didaktische als um das programmiererische geht.
Und daher sollte es nicht all zu kompliziert werden. (12.
Klasse Mathematik / Informatik)

Excel ist immer noch eine Tabellenkalkulation. Neben den klassischen Grund- und weiterführenden Rechenarten bietet Excel eine Menge an Funktionen an.

Die von dir anvisierte Problemlösung ist mit der „reinen“ Excellösung nach meiner Meinung nicht möglich, denn dazu brauchst du eine Schleife. Die müßte/könnte man über eine Funktion (mit noch nicht überschaubaren Programmieraufwand) erstellen. Und dazu braucht man eben eine Programmiersprache. Es ist schon schwierig in Excel ohne vba eine Formel für die Fakultät (n!=1*2*3*…*n) zu entwickeln ohne vba zu benutzen oder ohne die bereits implementierte Funktion ("=Fakultät(n)")dafür zu benutzen. Die Möglichkeiten von vba sind längst nicht so umfangreich wie die anderer Programmiersprachen. Aber diese Möglichkeit schließt du ja aus. Und wenn das so einfach mit Excel zu lösen wäre, was für einen Sinn macht dann diese Verschlüsselung.

Dir geht es um das „didaktische“ in Bezug auf eine 12. Klasse. Unter Didaktik verstehe ich folgendes: „Didaktik ist die Lehre vom Unterrichten, vom Lernen und vom Lehren, die vermitteln soll, wie der Lehrende die Lernenden beeinflussen kann.“ (Ich erinnere mich noch gut an meine 1. Ausbildung zum Mathematik/Physik-Lehrer an der Uni in Rostock.) Insofern hat die Problemstellung eigentlich nichts mit Didaktik zu tun. Ich denke auch, dass Schüler mehr lernen, wenn sie die Problematik einer Aufgabenstellung nachvollziehen können. Und ich denke auch, dass der Lehrer zunächst einmal sehr genau wissen sollte, was er vermittelt (aufgrund des letzten geposteten Beitrag von dir gehe ich davon aus, dass du der Lehrer bist).

Entschuldige bitte, ich möchte dich nicht belehren und dir auch nicht zu nahe treten, aber vielleicht solltest du dir ein anderes Beispiel suchen und dir überlegen, was du den Schülern mit deinem Beispiel zeigen willst. Es bringt nichts, wenn alle eine Menge Zeit für etwas aufwenden, was den Rahmen des Unterrichts sprengt und die meisten Schüler vielleicht gar nicht verstehen. Schade, um die Unterrichtszeit, in der keiner was lernt.

Lieben Gruß
Marion

Ja, der Aufwand wird bestimmt dazu kommen.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Die von dir anvisierte Problemlösung ist mit der „reinen“
Excellösung nach meiner Meinung nicht möglich, denn dazu
brauchst du eine Schleife.

Das hatte ich mir auch gedacht, und leicht gehofft, dass es noch mir unbekannte Funktionen gibt :smile:

Es ist schon schwierig in Excel ohne vba eine Formel für die
Fakultät (n!=1*2*3*…*n) zu entwickeln ohne vba zu benutzen
oder ohne die bereits implementierte Funktion
("=Fakultät(n)")dafür zu benutzen.

Hm, mit PRODUKT und Matrixformel würde das recht schnell gehen.

Und wenn das so einfach mit Excel zu lösen wäre, was für
einen Sinn macht dann diese Verschlüsselung.

Nun ja, ich habe nicht vor, die Verschlüsselung zu knacken, sondern selbst etwas zu verschlüsseln. Und dass sollte eigentlich nicht so schwer sein (sonst könnte man RSA wohl kaum zur sicheren Datenübertragung einsetzen, wenn Rechner zu lange zum verschlüsseln bräuchten).

Das Problem ist ja die Primfaktorzerlegung beim RSA Verfahren. Von sehr großen Zahlen die einzigstnn zwei Primzahlen herauszufinden überfordert viele Rechner. Aber eine Modulorechnung sollte dann doch deutlich schneller gehen :smile:

Dir geht es um das „didaktische“ in Bezug auf eine 12. Klasse.
Unter Didaktik verstehe ich folgendes: „Didaktik ist die Lehre
vom Unterrichten, vom Lernen und vom Lehren, die vermitteln
soll, wie der Lehrende die Lernenden beeinflussen kann.“ (Ich
erinnere mich noch gut an meine 1. Ausbildung zum
Mathematik/Physik-Lehrer an der Uni in Rostock.) Insofern hat
die Problemstellung eigentlich nichts mit Didaktik zu tun. Ich
denke auch, dass Schüler mehr lernen, wenn sie die Problematik
einer Aufgabenstellung nachvollziehen können. Und ich denke
auch, dass der Lehrer zunächst einmal sehr genau wissen
sollte, was er vermittelt (aufgrund des letzten geposteten
Beitrag von dir gehe ich davon aus, dass du der Lehrer bist).

Fast korrekt. Ich bin noch in der Ausbildung.

Ich finde den Einsatz von Excel gar nicht so falsch, um Funktionen besser verstehen zu können. Denn vieles wird einfach Schritt für Schritt nachvollziehbar. Einem Programm alla C++, Delphi, … würde ich nicht trauen, wenn ich es nicht selbst programmiert habe. Aber man kann ja nicht jedem Schüler Kenntnisse in Delphi, C++ etc. abverlangen - sehr wohl aber in Excel, zumal das ja immer mehr erfordert wird.
Sicherlich scheint dabei aber das Thema selbst etwas fehl am Platz - zumal es sehr Zeitaufwendig und nur fakultativ ist. Erfolgreich erprobt in meinem SPS1 hatte ich das Berechnen von Flächeninhalten mit Excel.

Dass ich mich gerade an dem RSA Verfahren aufgehängt habe, war wohl eine Aufgabe aus der Uni: Erfinden sie eine Aufgabe für die 12 Klasse mit dem RSA Verfahren. Und da hatte ich in diese Richtung gedacht.

Gruß André

Nachtrag: Matrixformel
=PRODUKT(ZEILE(INDIREKT(„1:“&SPALTE())))