DMUG-Archiv 1999

Frühere

 

Chronologischer Index

 

Spätere

Vorherige

 

Thematischer Index

 

Nächste

Re[3] erdbebenkataloge -> bug

Hallo Frank

Wenn man
$MessagePrePrint = Identity

setzt um lange Fehlermeldungen zu bekommen
und dann Fehler mit einer unbekannten testfunktion `ochse' provoziert, 
sieht man, dass nur 2 Tests auf der Liste stattfinden, statt 3.
(Es wurde Off[General::Stop] gesetzt zur Sicherheit).

Laut Mma-Book (Wolfram) muss man das Union auf _einer_ List machen, um
das Wegwerfen als gleich angesehener Elemente zu erreichen (es findet
sonst nur innerhalb der Teillisten statt).

###### file erdbeben.m ######
cat1 =.
cat1 = {{7.683, 50.15, 1846, 7, 29, 4.98, 10, 21, 24.},
        {7.683, 48.117, 1825, 11, 24, 2.8, 4, 1, 0.}};

cat2 =.
cat2 = {{7.682, 50.157, 1846, 7, 29, 5.5, 10., 21, 24.}};

(* 
Ich moechte nun beide so kombinieren, dass der Test auf Gleichheit nur
auf den "Spalten" 3,4,5,8,9 gemacht wird, was dem Datum und Uhrzeit entspricht.
Mit andern Worten, ich moechte dafuer sorgen dass die Beben die mit der
gleichen Uhrzeit gemeldet werden, nicht doppelt weiterverarbeitet werden.
*)

Clear[stest]

stest[x_, y_] := (N[Join[Take[x, {3, 5}], Take[x, {8, 9}]]] ==
N[Join[Take[y, {3, 5}], Take[y, {8, 9}]]]) && VectorQ[x] && VectorQ[y]

cat0 =.
cat0 = Join[cat1, cat2];
Print["Length[cat0]:", Length[cat0]]

cat3 =.
cat3 = Union[cat0, SameTest -> (ochse[#1, #2]&)];

cat3 // TableForm
####### eof ######

Gibt den output:

bamako::In[1]:= $MessagePrePrint = Identity
 
bamako::Out[1]= Identity
 
bamako::In[2]:= Off[General::Stop]
 
bamako::In[3]:= <<erdbeben.m
Length[cat0]:3
 
Union::smtst: SameTest function 
    (ochse[#1, #2] & )[{7.683, 48.117, 1825, 11, 24, 2.8, 4, 1, 0.}, 
     {7.682, 50.157, 1846, 7, 29, 5.5, 10., 21, 24.}] evaluates to 
    ochse[{7.683, 48.117, 1825, 11, 24, 2.8, 4, 1, 0.}, 
     {7.682, 50.157, 1846, 7, 29, 5.5, 10., 21, 24.}].
 
Union::smtst: SameTest function 
    (ochse[#1, #2] & )[{7.683, 50.15, 1846, 7, 29, 4.98, 10, 21, 24.}, 
     {7.683, 48.117, 1825, 11, 24, 2.8, 4, 1, 0.}] evaluates to 
    ochse[{7.683, 50.15, 1846, 7, 29, 4.98, 10, 21, 24.}, 
     {7.683, 48.117, 1825, 11, 24, 2.8, 4, 1, 0.}].
 
bamako::Out[3]//TableForm= 
 
>   7.682   50.157   1846   7    29   5.5    10.   21   24.
 
    7.683   48.117   1825   11   24   2.8    4     1    0.
 
    7.683   50.15    1846   7    29   4.98   10    21   24.
 
bamako::In[4]:= $Version
 
bamako::Out[4]= Solaris 3.0 (August 21, 1997)

Man sieht, dass ueberhaupt nur 2 Vergleiche angestellt werden,
auf einer Liste der Laenge 3 sind aber 3 Vergleiche anzustellen.
Also ein bug, wenn ich das richtig sehe. Ueber Mma 4.0 kann ich nichts sagen,
das ist hier nicht installiert.

Gru3
Udo.


Verweise:
Erdbebenkataloge und der Union[]-Befehl
Frank Scherbaum, 08.10.1999

Frühere

 

Chronologischer Index

 

Spätere

Vorherige

 

Thematischer Index

 

Nächste

DMUG-Archiv, http://www.mathematica.ch/dmug-liste.html; Letzte Änderung: 08.09.2003 20:45