Мне надо расчитать косинус методом разложения в ряд Тейлора. Нашел этот пример, но он не правильно считает. Может кто-то выложить листинг функции cos?
[syntax="pascal"]
program cos_teilor;
var x,stx,cost,e: real;
i,fakt,z: integer;
Begin
Write('Введите x: ');
Readln(x);
Write('Введите точность e: ');
Readln(e);
stx:= x*x; {x в степени}
fakt:= 2; {значение факториала в знаменателе}
cost:= 1; {первый элемент в разложении}
i:= 2; {счётчик}
z:= -1; {знак элемента}
while stx/fakt>=e do begin {до тех пор, пока элемент в разложении не меньше точности}
cost:=cost+z*stx/fakt;
inc(i,2);
stx:=stx*x*x;
fakt:=fakt*(i-1)*i;
z:=z*(-1); {смена знака}
end;
Writeln('Количество элементов в разложении = ',i div 2 + 1);
Writeln('Значение cos(',x:6:6,')= ',cost:6:6);
Writeln('Значение компьютера: ',cos(x):6:6);
Readln;
End.
[/syntax]
Расчет cos методом разложения в ряд
Для начала луче выложи формулу разложения в ряд) (я думаю ни кто не полезет в инет специально искать формулу)
ыыыыыы. google прервой строчкой "разложение cos в ряд Тейлора" выдал эту прогу ))))))))))))))))
ыыыыыы. google прервой строчкой "разложение cos в ряд Тейлора" выдал эту прогу ))))))))))))))))
вот формула)
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Пока дождался, сам написал)))
вот....может кому-то еще понадобится
[syntax="pascal"]
Program cos;
uses Crt;
const n=15; Pi=3.14159;
Var A:array [1..30] of real;
C:array [1..30] of integer;
F:array [1..30] of integer;
x,sum:real;
i,Grad:integer;
BEGIN
clrscr;
writeln('enter x');
readln(Grad);
x:=Grad*Pi/180;
A[1]:=-(x*x/2);
For i:=1 to n*2 do
begin
F:=i;
end;
For i:=1 to n do
begin
C:=F[i*2]*F[i*2-1];
end;
for i:=2 to n do
Begin
A:=-(A[i-1]*x*x/C);
end;
sum:=1;
for i:=1 to n do
Begin
sum:=sum+A;
end;
writeln('cos(x)=',sum:1:7);
writeln('cosX=',Cos(x):1:7);
readln;
end.
[/syntax]
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Пока дождался, сам написал)))
вот....может кому-то еще понадобится
[syntax="pascal"]
Program cos;
uses Crt;
const n=15; Pi=3.14159;
Var A:array [1..30] of real;
C:array [1..30] of integer;
F:array [1..30] of integer;
x,sum:real;
i,Grad:integer;
BEGIN
clrscr;
writeln('enter x');
readln(Grad);
x:=Grad*Pi/180;
A[1]:=-(x*x/2);
For i:=1 to n*2 do
begin
F:=i;
end;
For i:=1 to n do
begin
C:=F[i*2]*F[i*2-1];
end;
for i:=2 to n do
Begin
A:=-(A[i-1]*x*x/C);
end;
sum:=1;
for i:=1 to n do
Begin
sum:=sum+A;
end;
writeln('cos(x)=',sum:1:7);
writeln('cosX=',Cos(x):1:7);
readln;
end.
[/syntax]
- Вложения
-
- 2ccb480d5b4fba4ad2f91d425235e26b.png (1.96 КБ) 218 просмотров