Autor Beitrag
masterchris_99
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: So 21.03.04 19:28 
Moin Moin
Also ich habe einpaar Probleme mit der Aufgabe.
Also zur AUfgabe ich soll bei gegebener Seite a, b und c die Winkel ausrechnen nur kommt nie das richtige oder annähernd das richtige raus.

Hier mal die Procedure
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure winkel (a,b,c:real;
                var wa,wb,wg:real);
        begin
        wa:=cos(((b*b)+(c*c)-(a*a))/(2*(b+c)));
        wb:=cos(((a*a)+(c*c)-(b*b))/(2*(a+c)));
        wg:=cos(((a*a)+(b*b)-(c*c))/(2*(a+b)));
        end;


Und hier der Link zum kompletten Programm
mitglied.lycos.de/de...7.04_eigene_Unit.rar

Moderiert von user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt
ähM_Key
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88

Windows XP Professional
D7 Enterprise
BeitragVerfasst: So 21.03.04 19:53 
Das Problem ist sicherlich, dass du die Winkel in Gradmaß angibst!

Delphi rechnet aber mit Bogenmaß!

Also den Gradwert (0-360°) mit (PI/180) multiplizieren und du kommst auf Bogenmaß (0-2Pi)!

Grüße; ähM_Key

_________________
Alles geht ni! Aber ein bissl' was muss!
masterchris_99 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: So 21.03.04 20:01 
Programm läuft jetzt mit
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure winkel (a,b,c:real;
                var wa,wb,wg:real);
        begin
        wa:=RadToDeg(arccos(((b*b)+(c*c)-(a*a))/(2*(b+c))));
        wb:=RadToDeg(arccos(((a*a)+(c*c)-(b*b))/(2*(a+c))));
        wg:=RadToDeg(arccos(((a*a)+(b*b)-(c*c))/(2*(a+b))));
        end;


Moderiert von user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt
ähM_Key
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88

Windows XP Professional
D7 Enterprise
BeitragVerfasst: So 21.03.04 20:47 
Na wunderbar! :D

Super Idee die Funktion einzubauen!

Grüße; ähM_Key

_________________
Alles geht ni! Aber ein bissl' was muss!
masterchris_99 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: So 21.03.04 21:18 
ähm das programm verursacht aber leider noch Fehler kann sich das vielleicht mal einer angucken

mitglied.lycos.de/de...7.04_eigene_Unit.rar
hab mal die veränderte version hochgeschoben.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 21.03.04 21:51 
Hallo!

(1) Bitte poste den Codeteil, der den Fehler produziert. Ich denke nicht, dass sich jeder erst die Datei herunterladen will.
(2) Du solltest uns auch verraten, was das für ein Fehler ist.

MfG
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
masterchris_99 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: So 21.03.04 21:56 
masterchris_99 hat folgendes geschrieben:
Programm läuft jetzt mit
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure winkel (a,b,c:real;
                var wa,wb,wg:real);
        begin
        wa:=RadToDeg(arccos(((b*b)+(c*c)-(a*a))/(2*(b+c))));
        wb:=RadToDeg(arccos(((a*a)+(c*c)-(b*b))/(2*(a+c))));
        wg:=RadToDeg(arccos(((a*a)+(b*b)-(c*c))/(2*(a+b))));
        end;


Moderiert von user profile iconPeter Lustig: Code- durch Delphi-Tags ersetzt


Verursacht bei der Winkelberechnung einen Fehler
Wenn ich wüsste wieso würde ich den Fehler schon besser beschreiben und beheben Sorry :D
Also ich denke mal die berechnung haut net hin.
ähM_Key
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 88

Windows XP Professional
D7 Enterprise
BeitragVerfasst: So 21.03.04 23:01 
Zitat:
Verursacht bei der Winkelberechnung einen Fehler

Was denn für einen? Nur falsche Werte?

Hast du die RadToDeg sebst geschrieben, oder ist die in ner Unit implementiert? (kenn mich da ni so aus :oops:)
Wenn ersteres der Fall ist solltest du auch vo dieser den Quelltext posten!

Grüße; ähM_Key

_________________
Alles geht ni! Aber ein bissl' was muss!
masterchris_99 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: So 21.03.04 23:17 
Also das is in "Math" mitdrin
Hab den Fehler jetzt einbisschen eingegrenzt

Wenn ich nur
wa:=RadToDeg(cos(((b*b)+(c*c)-(a*a))/(2*(b+c))));
schreibe kommt kein fehler aber sind auch die falschen Werte
aber sobald ich wieder
wa:=RadToDeg(arccos(((b*b)+(c*c)-(a*a))/(2*(b+c))));
schreibe verursacht er einen Fehler
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: So 21.03.04 23:54 
Wie heißt der Fehler denn? Die Exception hat doch einen Namen!

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
raziel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2453

Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
BeitragVerfasst: Mo 22.03.04 17:34 
ich könnt mir denken worans liegt. gib mal über
ausblenden Delphi-Quelltext
1:
showmessage(FloatToStr(((b*b)+(c*c)-(a*a))/(2*(b+c))));					

den wert aus, der an die Funktion ArcCos übergeben werden soll. Wenn der Wert größer als 1 oder kleiner als -1 is, geht des net, weil (wenn ich mich nach fast einem Jahr Mathe-Abstinenz recht erinnere) der Definitionsbereich von ArcCos -1 <= x <= 1 is. Abs(x) muss also <= 1 sein!


raziel

// EDIT: source-fehler ausgebessert... ;-)
btw: nimm statt "real" lieber "single", "double" oder "extended"!

_________________
JSXGraph
Segelflieger
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 124

WinXP Pro
D7 Prof
BeitragVerfasst: Mo 22.03.04 18:59 
Hallo!

Also, ohne es jetzt ausprobiert zu haben, denke ich dass der fehler in deiner Formel steckt. Das soll doch der Cosinussatz sein, oder? Dann müsste es (glaub ich) eigentlich so aussehen:

ausblenden Quelltext
1:
2:
3:
wa := RadToDeg(ArcCos((a*a - b*b - c*c)/(2*b*c));
wb := RadToDeg(ArcCos((b*b - a*a - c*c)/(2*a*c));  
wg := RadToDeg(ArcCos((c*c - a*a - b*b)/(2*a*b));


Ich denke, damit sollte es funktionieren. Probiers mal aus.

_________________
Früher hatten die Menschen Angst vor der Zukunft. Heute muss die Zukunft Angst vor den Menschen haben.
masterchris_99 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Mo 22.03.04 20:06 
Segelflieger hat folgendes geschrieben:
Hallo!

Also, ohne es jetzt ausprobiert zu haben, denke ich dass der fehler in deiner Formel steckt. Das soll doch der Cosinussatz sein, oder? Dann müsste es (glaub ich) eigentlich so aussehen:

ausblenden Quelltext
1:
2:
3:
wa := RadToDeg(ArcCos((a*a - b*b - c*c)/(2*b*c));
wb := RadToDeg(ArcCos((b*b - a*a - c*c)/(2*a*c));  
wg := RadToDeg(ArcCos((c*c - a*a - b*b)/(2*a*b));


Ich denke, damit sollte es funktionieren. Probiers mal aus.


Also du hast nur eine Klammer vergessen.
wa := RadToDeg(ArcCos((a*a - b*b - c*c)/(2*b*c)));
wb := RadToDeg(ArcCos((b*b - a*a - c*c)/(2*a*c)));
wg := RadToDeg(ArcCos((c*c - a*a - b*b)/(2*a*b)));
so geht das schon nur kommen nich die richtigen Winkel raus.
hab mal meinen alten Mathe Hefter rausgesucht und die werte stimmen nich mit denen aus den erfolgreichen tests überein
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 22.03.04 20:17 
Hallo!

IMHO habt Ihr da einen Vorzeichenfehler drin. In meiner Formelsammlung steht:

a² = b² + c² - 2bc * cos(alpha)

MfG
Peter

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
Segelflieger
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 124

WinXP Pro
D7 Prof
BeitragVerfasst: Mo 22.03.04 20:20 
ist winkel wa auch der, der seite a gegenübeliegt?

_________________
Früher hatten die Menschen Angst vor der Zukunft. Heute muss die Zukunft Angst vor den Menschen haben.
Christian S.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 20451
Erhaltene Danke: 2264

Win 10
C# (VS 2019)
BeitragVerfasst: Mo 22.03.04 20:20 
ja

_________________
Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
raziel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2453

Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
BeitragVerfasst: Mo 22.03.04 20:21 
ich komm zwar grad von ner mathenachhilfe mit gleichem thema aber na gut:

wir gehen davon aus: c² = a²+b²-2ab*cos(wc)
=> 2ab*cos(wc) = a²+b²-c²
=> cos(wc) = (a²+b²-c²)/2ab
=> wc = arccos((a²+b²-c²)/2ab)

> Die ursprüngliche Formel war _fast_ korrekt, nur am ende isn produkt und keine summe!
die formel lautet also für wc korrekt:

ausblenden Delphi-Quelltext
1:
wc := RadToDeg(ArcCos((a*a+b*b-c*c)/2*a*b));					


analog wa und wb


raziel

_________________
JSXGraph
raziel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2453

Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
BeitragVerfasst: Mo 22.03.04 20:22 
da war ich wohl zu langsam...

_________________
JSXGraph
masterchris_99 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Mo 22.03.04 21:24 
Wieder Fehler vom Anfang

Invalid floating point operation
raziel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2453

Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
BeitragVerfasst: Di 23.03.04 17:54 
Titel: w.delphi
dann prüf doch mal bitte den wert, den du an ArcCos übergibst (siehe oben!)
wie bereits gesagt darf der nur zwischen -1 und 1 sein!
Falls Abs(x) > 1 ist, dann ist das wahrscheinlich kein Dreieck!
(Man kann ja nich einfach "beliebige" Werte eingeben, sie müssen schon ein paar wenigen Regeln folgen)


raziel

_________________
JSXGraph