Помогите с вычислением синуса, косинуса, тангенса и котангенса

Мне их надо вычислить в Делфи через классы. Формула есть но там надо возвести в степень. Нашла как это делается но все равно ничего не помогает. Результат выдается не верный. Вот текст моей программы:
x:= StrToFloat(Edit1.Text);
 a:=exp(x*ln(exp));
 b:=exp((-x)*ln(exp));
 sh:=a-b/2;
 Edit2.Text:=FloatToStr(sh);
 ch:=a+b/2;
 Edit3.Text:=FloatToStr(ch);
 th:=sh/ch;
 Edit4.Text:=FloatToStr(th);
 cth:=ch/sh;
 Edit5.Text:=FloatToStr(cth);
Я уже не знаю что и делать, помогите! С уважением, Panika.
9 ответов

<pre name="code" class="prettyprint linenums"> sin=((Exp^x)-(Exp^(-x)))/2. </pre>
Сами же написали. А потом пишете:
sh:=a-b/2;
А в скобки кто брать будет?


Спасибо. В скобки взяла, только результат все равно не правильный. А вот эту формулу sin=((Exp^x)-(Exp^(-x)))/2 заменила на exp(x*ln(2.71)) и exp((-x)*ln(2.71)). я уже все перепробовала а результата нет. Совсем не знаю что делать.


А вот эту формулу sin=((Exp^x)-(Exp^(-x)))/2 заменила на exp(x*ln(2.71)) и exp((-x)*ln(2.71)).
(exp(x)-exp(-x))/2 - а так не вариант было написать? имхо лучше разложением в ряд с точностью 0.001 расписывать


(exp(x)-exp(-x))/2 так тоже писала))) но результат почему то все равно не верный


проблема та вся в том что у меня exp в степени x. Тогда получается: Exp(x*ln(exp)). А на повтор exp он ругается. Если заменить на 2.71 то результат опять не верный.


Народ, скажите, а вообще формулы то вычисления у меня правильные??? sin: sh(x)=(Exp^x - Exp^-x)/2 cos: ch(x)=(Exp^x + Exp^-x)/2Если эти формулы проверять и сверять с результами полученнымив Делфи, то результат совпадает. А вот если сравнивать их с вычисление синуса(или косинуса) в калькуляторе, то результаты разные....


кидаем на форму edit и 4 label и button в
procedure TForm1.btn1Click(Sender: TObject);
var I:integer;
 x,sum,chis:real;
 sn,Cs,t,ct:Real;
 const eps=(1E-4);
begin
 x:=StrToFloat(edit1.text);
 sum:=1; chis:=-x*x/2;
 i:=3;
 repeat
 sum:= sum+chis;
 chis:=-chis*x*x/i/(i+1);
 I:=I+2;
 until
 abs(chis/sum)<=eps;
 cs:=Trunc(sum*100)/100;
 label1.Caption:='cos(x)='+floattostrF(cs,ffGeneral,4,2);

 sum:=x; chis:=-x*sqr(x)/2/3;
 i:=4;
 repeat
 sum:= sum+chis;
 chis:=-chis*x*x/i/(i+1);
 I:=I+2;
 until
 abs(chis/sum)<=eps;
 sn:=Trunc(sum*100)/100;
 label2.Caption:='sin(x)='+floattostrF(sn,ffGeneral,4,3);
 if cs <>0 then
 begin
 t:=sn/cs;
 t:=Trunc(t*100)/100;
 label3.Caption:='tg(x)='+floattostr(t);
 end
 else label3.Caption:='tg(x)-не определен';
 if sn <>0 then
 begin
 ct:=cs/sn;
 ct:=Trunc(ct*100)/100;
 label4.Caption:='ctg(x)='+floattostr(t);
 end
 else label4.Caption:='ctg(x)-не определен';
end;
и все!


ОДИНОЧЕСТВО В СЕТИ!!!!!!! Спасибо тебе огромное!!!!!! Если бы не ты!!!!!!!! СПАСИБО!!!!!!