Obliczanie funkcji cos(x) za pomocą szeregu taylora

0

Witam serdecznie mam za zadanie napisanie programu obliczającego Cos(x) wykorzystując do tego szereg Taylora: [img]http://upload.wikimedia.org/math/a/6/e/a6ee9bd2aac9f3fb8c819ea48fdad176.png[/img].
Wcześniej miałem do wykonania program obliczający pierwiastek kwadratowy, z którym sobie poradziłem:

program pierwiastek1;
{$APPTYPE CONSOLE}
VAR a,yi,yi1 : REAL;
I,N : Integer;
BEGIN
 WRITE('a=');
 READLN(a);
 WRITE('n=');
 READLN(n);
 yi:=1e6;yi1:=yi;
 for i:=1 to N do Begin
 yi:=yi1;
 yi1:=(yi+a/yi)/2;
 writeln('i=',i,'yi1=',yi1);end;
 writeln('blad=', abs(sqrt(a)-yi1));
 readln;
 end. 

Program ten prosi nas o podanie liczby,którą mamy spierwiastkować "a" a następnie podajemy ilość przejść "n" im większa liczba przejść tym coraz bardziej dokładny wynik aż przy którymś przejściu dojdzie do wyniku poprawnego, oprócz tego program oblicza błąd.

Na podobnej zasadzie z wykorzystaniem tej pętli mam obliczyć cos(x), jednak nie umiem sobie z tym poradzić, w tym przypadku za liczbe przejść będą odpowiadały kolejne wyrazy tego ciągu, im większą liczbę "n" podamy tym więcej wyrazów z tego ciągu dołączamy, a co za tym idzie wynik będzie dokładniejszy. pomoże ktoś?

0

Mi też by się to przydało , może ktoś chociaż nakieruje ? Jakieś podpowiedzi ?

0

Potrzebujesz funkcji wyliczającej silnię. Oraz funkcji wyliczającej potęgę (standardowo taka jest - Power()). A potem po prostu:

for i := 0 to N do
begin
  wynik := wynik + (Power(-1, i)/Silnia(2*i) * Power(x, 2*i));
end;
0

@up żartujesz sobie? Optymalność woła o pomstę do nieba!
Proponuje wyznaczyć sobie pierwszy wyraz szeregu, nazwijmy go X_0. Następnie ruszyć głową i zobaczyć że kolejny wyraz ciągu, nazwijmy go X_1 to jest X_0 przemnożone przez pewną liczbę i podzielone przez inną. X_2 jest to X_1 przemnożone i podzielone. Itd.
Konkludując należy policzyć pierwszy wyraz, a potem wyliczać kolejne wyrazy sumując sobie to do wyniku.

0

A nie lepiej:

Writeln('Podaj liczbe do zcosinusowania');
Readln(X);
Writeln('Cosinus z ' + floatToStr(X) + ' to ' + FlostToStr(Cos(X)));

Nie pamietam jaki typ ma parametr cos, ale na pewno rezultat jest w Extended

0
TomRiddle napisał(a)

zcosinusowania

A cóż to takiego?

0

Tom Riddle, czytałeś pierwszy post?

mam za zadanie napisanie programu obliczającego Cos(x) wykorzystując do tego szereg Taylora

1 użytkowników online, w tym zalogowanych: 0, gości: 1