Frage von Knafan, 32

Free Pascal arcsin Problem beheben?

Hallo,

hier erst einmal das Programm:

program test;
uses crt, math;
var x,y :real;

begin
writeln ('y');
readln(y);
x:=arcsin(y);
writeln(x);
readln();

end.

Wenn ich nun für y: 0.158 eingebe sagt mein Taschenrechner 9.09 und Pascal 0.16. Wenn ich nun bei writeln die Begrenzung der Kommastellen aufhebe kommt gerundet 1.59 raus. Woran liegt das? Warum funktioniert der arcsin nicht so, wie er funktionieren sollte?

Mit freundlichen Grüßen knafan

Antwort
von k3ltis, 23

arcsin funktioniert genau so, wie es sein soll.

Pascal rechnet nicht mit Grad sondern mit dem Radiant, der in Rad angegeben wird.


Kommentar von Knafan ,

Wo muss ich also was verändern? Muss ich die Ausgabe so umrechnen, dass diese in Grad angegeben wird oder muss ich die Eingabe zuerst umrechnen lassen?  

Kommentar von k3ltis ,

Du kannst das natürlich in Rad umrechnen. Du kannst aber auch gleich in Rad arbeiten.

2pi = 360°

pi = 180°

pi/2 = 90°

usw.

Kommentar von Knafan ,

Hier mal das Programm, das ich eigentlich programmieren will (bzw ein Teil davon)

PROCEDURE WinkelAcos;
begin

IF (alpha=0) and (b>0) and (c>0) and (a>0) THEN
alphatemp:=(((b*b)+(c*c)-(a*a))/(2*b*c));

IF (alpha=0) and (alphatemp<>0) THEN
alpha:=arccos(alphatemp);
end;

In diesem Fall ist die Eingabe doch keine Gradzahl und muss nicht in Rad umgerechnet werden. Wenn ich das Ergebnis allerdings umrechne kommt auch nur Müll raus.

Was genau soll ich jetzt also wie umrechnen?

Kommentar von k3ltis ,

Wenn du einfach nur in Rad rechnest, funktioniert alles ganz wunderbar

Keine passende Antwort gefunden?

Fragen Sie die Community