Warum das denn nicht? Wie führst Du denn eine Koordinatentransformation
durch?
(Ich habe *nicht* behauptet, dass die Werte jedesmal neu berechnet werden.)
Beispiel A=(1,0,0), B=(0,1,0), C=(0,0,1) => a=(1,1,1), M=?
Wie transformierst Du jetzt A, B und C ins System mit Z':=a,
X'Z'=X'Y'=Y'Z'=a(A-M)=0,
ohne trignonometrische Funktionen zu benutzen.
N.B.: Wenn Du kein Interesse mehr an dieser Diskussion hast, lass es mich
bitte wissen; dann stelle ich ein. Zumindest lässt die "ausführliche
Antowort" oben diesen Verdacht bei mir aufkommen...
--
Gruß, Pi (Ralf Pichocki).
http://www.pisoftware.de
Die Koordinatentransformation ist nicht notwendig. Die Rechnung erfolgt in
den Originalkoordinaten direkt.
> Beispiel A=(1,0,0), B=(0,1,0), C=(0,0,1) => a=(1,1,1), M=?
Dafür hatte ich ein Programm im Thread angegeben.
> Wie transformierst Du jetzt A, B und C ins System mit Z':=a,
> X'Z'=X'Y'=Y'Z'=a(A-M)=0,
> ohne trignonometrische Funktionen zu benutzen.
Wozu sollte ich das tun? Es ist für die Aufgabe doch gar nicht notwendig.
> N.B.: Wenn Du kein Interesse mehr an dieser Diskussion hast, lass es mich
> bitte wissen; dann stelle ich ein. Zumindest lässt die "ausführliche
> Antowort" oben diesen Verdacht bei mir aufkommen...
Informiere Dich über Deine Gesprächspartner, ich weiß auch nicht, warum Du
von mir soviele Worte erhälst, obwohl es mir schwer fällt, weil Deine
falsche From Adresse automatisch einen niedrigen Score erzeugt.
Dann führe mir das am nachfolgenden Beispiel doch bitte einmal vor.
> > Beispiel A=(1,0,0), B=(0,1,0), C=(0,0,1) => a=(1,1,1), M=?
> Dafür hatte ich ein Programm im Thread angegeben.
Schon klar.
Aber welcher geschlossene Ausdruck - und zwar ohne "durch Draufgucken" den
Sonderfall auszunutzen - stellt jetzt den Kreis dar? *Ich* sehe das nicht.
Vielleicht hilfst Du mir ja auf die Sprünge.
[...]
> Wozu sollte ich das tun? Es ist für die Aufgabe doch gar nicht notwendig.
s.o.
> Informiere Dich über Deine Gesprächspartner, ich weiß auch nicht, warum Du
> von mir soviele Worte erhälst, obwohl es mir schwer fällt, weil Deine
> falsche From Adresse automatisch einen niedrigen Score erzeugt.
Tip(p): ReplyTo ist gülig; allerdings möchte ich Antworten sowieso nur in
die NG. Danke.
X = M + (B-M)*t + transponiert(B-M) * sqrt((B-M)²-((B-M)*t)²)
>> Informiere Dich über Deine Gesprächspartner, ich weiß auch nicht, warum Du
>> von mir soviele Worte erhälst, obwohl es mir schwer fällt, weil Deine
>> falsche From Adresse automatisch einen niedrigen Score erzeugt.
>
> Tip(p): ReplyTo ist gülig; allerdings möchte ich Antworten sowieso nur in
> die NG. Danke.
Du verlangst viel.
(B-M) ist ein Vektor; wie soll ich dazu einen *transponierten Vektor*
addieren?
Beispiel mit einfachen Zahlen:
A=(1,0,0), B=(0,1,0), C= (1/2, 1/2, sqrt(2)/2 )
=> M = (1/2,1/2,0).
Wenn ich jetzt Deine Formel anwende, erhalte ich beispielsweise
X(0) = M + transponiert(B-M) * |B-M|
= M + transponiert( -1/2, 1/2, 0 ) * sqrt(2)/2
, was für mich nicht besonders sinnvoll aussieht: M ist beispielsweise ein
"Zeilenvektor", dann ist sein Transponat ein "Spaltenvektor"; beide kann ich
nicht addieren.
> , was für mich nicht besonders sinnvoll aussieht: M ist beispielsweise ein
> "Zeilenvektor", dann ist sein Transponat ein "Spaltenvektor"; beide kann ich
> nicht addieren.
Mein Fehler. Ich meinte den rechtwinklig innerhalb der Ebene liegenden Vektor.
Aha! Also denjenigen, den wir erhalten, wenn wir (B-M) um 90° um die Achse a
rotieren.
Und wie willst Du den ermitteln? Etwa als a X (B-M) - bis auf Orientierung?
Na dann...
Als Kreuzprodukt, ja. Was spricht dagegen?
> Na dann...
Was ist dann? Bist Du sauer? Warum?
> > Aha! Also denjenigen, den wir erhalten, wenn wir (B-M) um 90° um die
> > Achse a rotieren. Und wie willst Du den ermitteln? Etwa als a X (B-M) -
> > bis auf Orientierung?
>
> Als Kreuzprodukt, ja. Was spricht dagegen?
>
> > Na dann...
>
> Was ist dann? Bist Du sauer? Warum?
Nein, nein - überhaupt nicht.
Sollte nur heißen: "Na, dann habe ich endlich verstanden, wo Du hin willst."
;-)
Jetzt muss ich mich dann nur noch entscheiden, ob ich bei meinem nächsten
Code-Review die mittlerweile funktionierende Lösung umstelle, oder ob ich
mich nur an der mathematisch schönen Lösung erfreue...;-)
Danke so weit,
--
Gruß, Pi (Ralf Pichocki).
http://www.pisoftware.de
p.s.: Meine andere Frage (Abstand zur Regelfläche) brennt mir momentan mehr
unter den Nägeln. Hast Du da auch eine Idee?
In einem Code sollten beweisbar korreke Lösungen drin sein. Nicht welche,
die ein paar Tests bestehen.
Stimmt; aber das tut meine Lösung ja ebenfalls ;-)
Echt? So wie meine hier, an der ich arbeite?
-------------------------------------------------------------------------------
Semantic Analysis Summary
SPARK Proof Obligation Summariser Release 3.0 / 10.02
Praxis Critical Systems, Bath, England
-------------------------------------------------------------------------------
Summary of:
Verification Condition files (.VCG)
Simplified Verification Condition files (.SIV)
Proof Logs (.PLG)
in the directory:
/var/home/lutz/work/ada/src/kernel
Summary produced: 11-MAR-2003 15:39:39.87
File /var/home/lutz/work/ada/src/kernel/kernel_/io/mkdir.vcg
procedure IO.mkdir
VCs generated 11-MAR-2003 15:37:30
VCs simplified 11-MAR-2003 15:38:50
VCs for procedure_mkdir :
----------------------------------------------------------------------------
| | | ---------Proved In--------- | |
# | From | To | vcg | siv | plg | prv | TO DO |
----------------------------------------------------------------------------
1 | start | rtc check @ 114 | | YES | | | |
2 | start | rtc check @ 114 | | YES | | | |
3 | start | assert @ finish | YES | | | | |
----------------------------------------------------------------------------
File /var/home/lutz/work/ada/src/kernel/kernel_/io/mode_to_string.vcg
function IO.Mode_To_String
VCs generated 11-MAR-2003 15:37:29
VCs simplified 11-MAR-2003 15:38:36
VCs for function_mode_to_string :
----------------------------------------------------------------------------
| | | ---------Proved In--------- | |
# | From | To | vcg | siv | plg | prv | TO DO |
----------------------------------------------------------------------------
1 | start | rtc check @ 54 | | YES | | | |
2 | start | rtc check @ 61 | | YES | | | |
3 | start | rtc check @ 62 | | YES | | | |
4 | start | assert @ 65 | | YES | | | |
5 | start | assert @ 65 | | YES | | | |
6 | start | assert @ 65 | | YES | | | |
7 | 65 | rtc check @ 67 | | YES | | | |
8 | 65 | rtc check @ 68 | | YES | | | |
9 | 65 | assert @ 71 | | YES | | | |
10 | 65 | assert @ 71 | | YES | | | |
11 | 65 | assert @ 71 | | YES | | | |
12 | 71 | rtc check @ 73 | | YES | | | |
13 | 71 | rtc check @ 74 | | YES | | | |
14 | 71 | assert @ 77 | | YES | | | |
15 | 71 | assert @ 77 | | YES | | | |
16 | 71 | assert @ 77 | | YES | | | |
17 | 77 | rtc check @ 79 | | YES | | | |
18 | 77 | rtc check @ 80 | | YES | | | |
19 | 77 | rtc check @ 81 | | YES | | | |
20 | 77 | rtc check @ 82 | | YES | | | |
21 | 77 | rtc check @ 83 | | YES | | | |
22 | 77 | rtc check @ 84 | | YES | | | |
23 | 77 | rtc check @ 85 | | YES | | | |
24 | 77 | assert @ finish | YES | | | | |
25 | 77 | assert @ finish | YES | | | | |
26 | 77 | assert @ finish | YES | | | | |
27 | 77 | assert @ finish | YES | | | | |
28 | 77 | assert @ finish | YES | | | | |
29 | 77 | assert @ finish | YES | | | | |
30 | 77 | assert @ finish | YES | | | | |
----------------------------------------------------------------------------
File /var/home/lutz/work/ada/src/kernel/kernel_/io/permission_to_string.vcg
function IO.Permission_To_String
VCs generated 11-MAR-2003 15:37:29
VCs simplified 11-MAR-2003 15:38:01
VCs for function_permission_to_string :
----------------------------------------------------------------------------
| | | ---------Proved In--------- | |
# | From | To | vcg | siv | plg | prv | TO DO |
----------------------------------------------------------------------------
1 | start | rtc check @ 12 | | YES | | | |
2 | start | rtc check @ 13 | | YES | | | |
3 | start | rtc check @ 13 | | YES | | | |
4 | start | rtc check @ 14 | | YES | | | |
5 | start | rtc check @ 14 | | YES | | | |
6 | start | rtc check @ 14 | | YES | | | |
7 | start | rtc check @ 14 | | YES | | | |
8 | start | assert @ finish | YES | | | | |
9 | start | assert @ finish | YES | | | | |
10 | start | assert @ finish | YES | | | | |
11 | start | assert @ finish | YES | | | | |
12 | start | assert @ finish | YES | | | | |
13 | start | assert @ finish | YES | | | | |
14 | start | assert @ finish | YES | | | | |
15 | start | assert @ finish | YES | | | | |
----------------------------------------------------------------------------
File /var/home/lutz/work/ada/src/kernel/kernel_/io/rename.vcg
procedure IO.rename
VCs generated 11-MAR-2003 15:37:31
VCs simplified 11-MAR-2003 15:38:10
VCs for procedure_rename :
----------------------------------------------------------------------------
| | | ---------Proved In--------- | |
# | From | To | vcg | siv | plg | prv | TO DO |
----------------------------------------------------------------------------
1 | start | rtc check @ 122 | | YES | | | |
2 | start | rtc check @ 122 | | YES | | | |
3 | start | assert @ finish | YES | | | | |
----------------------------------------------------------------------------
File /var/home/lutz/work/ada/src/kernel/kernel_/processes/kill_all.vcg
procedure Processes.kill_all
VCs generated 10-MAR-2003 18:20:03
VCs simplified 11-MAR-2003 11:31:33
VCs for procedure_kill_all :
----------------------------------------------------------------------------
| | | ---------Proved In--------- | |
# | From | To | vcg | siv | plg | prv | TO DO |
----------------------------------------------------------------------------
1 | start | rtc check @ 20 | | | | | YES |
2 | start | rtc check @ 20 | | YES | | | |
3 | start | rtc check @ 20 | | YES | | | |
4 | start | assert @ finish | YES | | | | |
----------------------------------------------------------------------------
File /var/home/lutz/work/ada/src/kernel/kernel_/processes/kill_group.vcg
procedure Processes.kill_group
VCs generated 10-MAR-2003 18:20:05
VCs simplified 11-MAR-2003 11:32:57
VCs for procedure_kill_group :
----------------------------------------------------------------------------
| | | ---------Proved In--------- | |
# | From | To | vcg | siv | plg | prv | TO DO |
----------------------------------------------------------------------------
1 | start | rtc check @ 39 | | | | | YES |
2 | start | rtc check @ 39 | | | | | YES |
3 | start | rtc check @ 39 | | YES | | | |
4 | start | assert @ finish | YES | | | | |
----------------------------------------------------------------------------
File /var/home/lutz/work/ada/src/kernel/kernel_/processes/kill_my_group.vcg
procedure Processes.kill_my_group
VCs generated 10-MAR-2003 18:20:05
VCs simplified 11-MAR-2003 11:32:36
VCs for procedure_kill_my_group :
----------------------------------------------------------------------------
| | | ---------Proved In--------- | |
# | From | To | vcg | siv | plg | prv | TO DO |
----------------------------------------------------------------------------
1 | start | rtc check @ 33 | | YES | | | |
2 | start | rtc check @ 33 | | YES | | | |
3 | start | rtc check @ 33 | | YES | | | |
4 | start | assert @ finish | YES | | | | |
----------------------------------------------------------------------------
File /var/home/lutz/work/ada/src/kernel/kernel_/processes/kill_process.vcg
procedure Processes.kill_process
VCs generated 10-MAR-2003 18:20:04
VCs simplified 11-MAR-2003 11:32:02
VCs for procedure_kill_process :
----------------------------------------------------------------------------
| | | ---------Proved In--------- | |
# | From | To | vcg | siv | plg | prv | TO DO |
----------------------------------------------------------------------------
1 | start | rtc check @ 26 | | YES | | | |
2 | start | rtc check @ 26 | | YES | | | |
3 | start | rtc check @ 26 | | YES | | | |
4 | start | assert @ finish | YES | | | | |
----------------------------------------------------------------------------
===============================================================================
Summary:
Total subprograms fully proved by examiner: 0
Total subprograms fully proved by simplifier: 6
Total subprograms fully proved by checker: 0
Total subprograms fully proved by review: 0
Total subprograms with at least one undischarged VC: 2 <<<
-----
Total subprograms for which VCs have been generated: 8
Total VCs by type:
--------------Proved By--------------
Total Examiner Simplifier Checker Review Undischarged
Assert or Postcondition: 30 21 9 0 0 0
Precondition check: 0 0 0 0 0 0
Check statement: 0 0 0 0 0 0
Runtime check: 37 0 34 0 0 3
Refinement VCs: 0 0 0 0 0 0
Inheritance VCs: 0 0 0 0 0 0
===============================================================================
Totals: 67 21 43 0 0 3
%Totals: 31% 64% 0% 0% 4%
===================== End of Semantic Analysis Summary ========================
[...]
8)
Ich habe nicht behauptet, dass ich einen mathematischen Beweis angetreten
habe, sondern dass meine Lösung bewiesen werden *könnte*, weil ich natürlich
"vernünftig nachgerechnet" habe - im Gegensatz zu "hingewurschtelt, bis es
für einen ausgesuchten Test funktioniert" ;-) Oder hast Du einen Fehler in
meiner Beschreibung entdeckt?
Ja, das ist erfreulich.
> Ich habe nicht behauptet, dass ich einen mathematischen Beweis angetreten
> habe, sondern dass meine Lösung bewiesen werden *könnte*, weil ich
> natürlich "vernünftig nachgerechnet" habe - im Gegensatz zu
> "hingewurschtelt, bis es für einen ausgesuchten Test funktioniert" ;-)
Ich ziehe es vor, wenn mir der Compiler beweist, daß meine Implementation
der formalen Spec entspricht. Die formale Spec ist dabei dann die
mathematische Notation der Aufgabenstellung.
> Oder hast Du einen Fehler in meiner Beschreibung entdeckt?
Ohne Kenntnis des Codes ist da nichts zu prüfen.
> Ohne Kenntnis des Codes ist da nichts zu prüfen.
Klaro; aber der Algorithmus war doch - wenn auch vielleicht nicht besonders
mathematisch - "vernünftig"...
p.s.: Hast Du eine Idee für meine andere Frage (Abstand zu einer
Regelfläche), bei der ich nicht "für jede Teilstrecke" den Abstand einzeln
berechnen muss?
Ansichtssache. Er ist unnötig kompliziert und damit langsam und enthält
reihenweise Fallen in der Numerik.
> p.s.: Hast Du eine Idee für meine andere Frage (Abstand zu einer
> Regelfläche), bei der ich nicht "für jede Teilstrecke" den Abstand
> einzeln berechnen muss?
Die Definition der Regelfläche ist mir etwas zu seltsam, um darauf zu
antworten. Ich hätte eine Minimalfläche erwartet, das ist dann unabhängig
von der Benamsung der Punkte.
A B
D C
Wenn Du jetzt die Regelfläche nach Deiner Definition einführst:
{X : X = <<A,B>*l,<D,C>*l>*m mit 0 <= l,m <= 1}
mit <X,Y>*q := A + (B-A)*q
dann gibt das höchst interessante Figuren, wenn man zu den folgenden
Konstellationen übergeht:
A B
Die Regelfläche wird sanduhrförmig.
C D
A C
Die Regelfläche wird sanduhrförmig und verdreht.
D B
> Die Definition der Regelfläche ist mir etwas zu seltsam
> Ich hätte eine Minimalfläche erwartet, das ist dann unabhängig
> von der Benamsung der Punkte.
Hmm, ich habe jetzt nicht nachgesehen (mein Studium ist schon "ein paar"
Jahre her), aber nicht jede Regelfläche ist doch eine Minimalfläche, oder?
Hintergrund meiner Frage ist der folgende:
Der Kunde "klickt" vier Punkte auf einem Körper an (Reihenfolge ist
sichergestellt!); diese bilden ein Viereck im Raum.
Entlang der ersten Seite dieses Vierecks wird später geschliffen; diese
Schleifstrecke wird "entlang des Vierecks" in die gegenüberliegende Strecke
verschoben - also so, wie ich es parametrisiert habe.
Dieses Viereck (bzw die eingespannte Fläche) bildet also quasi das
Soll-Ergebnis, wobei die vier Punkte in realiter "fast" in einer Ebene
liegen - aber eben nicht genau.
Zusätzlich wird der "höchste Punkt" des dazwischen (wegzuschleifenden)
Materials ermittelt.
Und genau den Abstand dieses Punktes zum "Viereck" - entweder als Minimum
oder entlang einer gegebenen Achse (zweiter Fall ist wohl einfach) - suche
ich. Jetzt klar?
Nein. Ich hatte Gegenbeispiele aufgezählt.
> Und genau den Abstand dieses Punktes zum "Viereck" - entweder als Minimum
> oder entlang einer gegebenen Achse (zweiter Fall ist wohl einfach) - suche
> ich. Jetzt klar?
Ja.
> Ja.
Schön. Hast Du auch einen Lösungstip(p) für mich?
Ich habe aber über Minimalflächen im Raum nachgelesen und die sind über ein
nichttriviale Differentialgleichung ermittelbar. Ich bezweifle aus dem Bauch
heraus, daß Deine Regelfläche mit der Minimalfläche überein stimmt.
Achja, die Lösung, ganz einfach:
Suche das Minimum von (X-<<A,B>*l,<C,D>*l>*m)² für gegebenes A,B,C,D,X.
Die Minimalbedingung ist eine partielle Differentialgleichung, für die nur
noch die Schwarzsche Bedingung (IIRC) zu prüfen ist. Da alles linear ist
muß da eine einfache lineare Gleichung für den inneren Teil herauskommen.
Der durch das Quadrat verursache nichtlineare Term müßte sich wegkürzen,
es sei den der Punkt X liegt auf der Fläche.
Viel Spaß. Das ist Stoff von Analysis I.
> Suche das Minimum von (X-<<A,B>*l,<C,D>*l>*m)² für gegebenes A,B,C,D,X.
[...]
Stimmt; das Minimum ist wohl recht einfach zu finden (wenn auch - zumindest
an der UniDo - DGs und PDGs *nicht* in Analysis I vermittelt werden ;-)
Der Vollständigkeit halber: Was sind l und m in Deiner Gleichung? Die
Parameter?
Und was ist <A,B>? das Skalarprodukt?
Schlechte Uni. Sehr schlechte Uni.
> Der Vollständigkeit halber: Was sind l und m in Deiner Gleichung? Die
> Parameter?
> Und was ist <A,B>? das Skalarprodukt?
Zum wissenschaftlichen Arbeiten gehört ein Kurzzeitgedächtnis von mehr als
zwei Tagen. Oder nicht mehr? Warum schaffst Du es nicht mal im Thread
mitzulesen? Zu aufwendig? Warum sollte man einem Faulpelz wie Dir noch helfen?
Message-ID: <slrnb6s2t...@taranis.iks-jena.de>
> Schlechte Uni. Sehr schlechte Uni.
Auf welcher Uni warst denn *Du*, dass dort Differentialgleichungen, und noch
dazu partielle, Teil der Vorlesung Analysis I sind? Kann ich kaum glauben.
[...]
> Zum wissenschaftlichen Arbeiten gehört ein Kurzzeitgedächtnis
Zum Glück arbeite ich kommerziell und nicht wissenschaftlich, hihi.
> mitzulesen? Zu aufwendig?
Genau ;-) Nein, ernsthaft: Deine (sorry, aber etwas unübliche) Definition
> mit <X,Y>*q := A + (B-A)*q
hatte ich tatsächlich vergessen. Ich wills auch nie mehr wieder tun ;-p
> Warum sollte man einem Faulpelz wie Dir noch helfen?
Weiß ich auch nicht. Vielleicht, weil in dieser NG sonst gar nichts los ist?
Jena, 1990.
>> Zum wissenschaftlichen Arbeiten gehört ein Kurzzeitgedächtnis
>
> Zum Glück arbeite ich kommerziell und nicht wissenschaftlich, hihi.
Du hast mit Deinem Mathestudium geprotzt. Darauf nehme ich Bezug.
>> mitzulesen? Zu aufwendig?
>
> Genau ;-) Nein, ernsthaft: Deine (sorry, aber etwas unübliche) Definition
>
>> mit <X,Y>*q := A + (B-A)*q
>
> hatte ich tatsächlich vergessen. Ich wills auch nie mehr wieder tun ;-p
Ich mußte mir schnell etwas ausdenken, um Dir antworten zu können.
> Jena, 1990.
Aha. In Dortmund hört man DGln typischerweise im 3. oder 4. Semester, und
partielle DGln nur dann, wenn man Interesse hat ;-)
> Du hast mit Deinem Mathestudium geprotzt. Darauf nehme ich Bezug.
Nene, geprotzt eigentlich nicht, denke ich. Ist aber auch egal.
> >> mit <X,Y>*q := A + (B-A)*q
> > hatte ich tatsächlich vergessen. Ich wills auch nie mehr wieder tun ;-p
> Ich mußte mir schnell etwas ausdenken, um Dir antworten zu können.
Alles klar. Dann weiß ich jetzt Bescheid. Danke.
(Mittlerweile ist die Aufgabe übrigens schon wieder von der Wirklichkeit
überholt worden - so sind die Kunden eben -, aber ich werde übungshalber
trotzdem mal die Gleichung aufstellen und (zu) lösen (versuchen)...
Bis dann, und
Falls es zu problematisch wird:
https://www.iks-jena.de/mitarb/lutz/vortrag/dgl.tex