Eigene Symmetrie im array < Maple < Mathe-Software < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 11:47 Fr 17.10.2008 | Autor: | joe78 |
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt. Ich möchte in Maple ein array anlegen, dass gewisse Symmetriebziehungen beinhaltet, analog einer symmetrischen Matrix, nur eben allgemeiner. Also z.B., dass Element (3,1) immer gleich dem Element (2,4) ist. Definiere ich noch Installation des arrays eines der beiden, wird das andere ebenfalls definiert. Ich suche schon sehr lange nach einer Lösung und hoffe sehr, dass mir jemand weiterhelfen kann. Danke.
|
|
|
|
Hallo,
da musst du dir eine eigene "Indexing Function" definieren. Das ist eine Funktion, die den lesenden und schreibenden Zugriff auf Tables und Arrays regelt. Aus dem Hilfeeintrag habe ich mal folgendes Beispiel gebastelt:
In der nächsten Zeile sollten Backquotes stehen, keine Apostrophe!
'index/funnycross' := proc(Idx::list,Tbl::table,Entry::list)
local zeile, spalte;
if (nargs = 2) then #Ausgabe
if (assigned(Tbl[op(Idx)])) then Tbl[op(Idx)];
else 'Matheraum';
end if;
else #Eingabe
for zeile from 1 to op([2,1,2], eval(Tbl)) do
Tbl[zeile, Idx[2]] := op(Entry) + abs(zeile - Idx[1]);
end do;
for spalte from 1 to op([2,2,2], eval(Tbl)) do
Tbl[Idx[1], spalte] := op(Entry) - abs(spalte - Idx[2]);
end do;
end if;
end proc:
Jetzt kannst du mal Folgendes ausprobieren:
a := array(funnycross, 1..7, 1..7);
a[3,2] := 3;
op(a);
Beachte hier die besondere "Symmetrie", die nur aus der einen Eingabe resultiert. Und noch mal:
a[6,5] := 3;
op(a);
Zum besseren Verständnis solltest du in der Hilfe mal nach "indexfcn" suchen. Viel Erfolg!
Gruß
Martin
|
|
|
|