Другие языки программирования и технологии
Помогите написать программу на Паскале!
Нужна программа, которая вычисляет функции косинуса и синуса при вводе аргумента x и количества слагаемых (точность) n (используются ряды Тейлора). Нужна НЕ СТАНДАРТНАЯ SIN или COS, а именно функция!!!
Программа:
function tSin(Alpha, Epsilon : Real) : Real;
{ sin x = x - x^3/3! + x^5/5! - +(-1)^(n-1)*x^(2n-1)/(2n-1)! }
var
F : Real;
tempAlpha : Real;
tempFactorial : Real;
N, Znak : Integer;
begin
N := 1;
tempAlpha := Alpha;
tempFactorial := 1;
Znak := +1;
F := Alpha;
while tempAlpha / tempFactorial >= Epsilon do
begin
Znak := -Znak; { -1, +1, -1, +1 ...}
tempAlpha := tempAlpha * Alpha * Alpha; { ^3, ^5, ^7 ...}
N := N + 1;
tempFactorial := tempFactorial * N; { 2!, 4!, 6! ..}
N := N + 1;
tempFactorial := tempFactorial * N; { 3!, 5!, 7! ..}
F := F + Znak * tempAlpha / tempFactorial;
end;
tSin := F;
end; // tSin
function tCos(Alpha, Epsilon : Real) : Real;
{ sin x = 1 - x^2/2! + x^4/4! - +(-1)^n*x^(2n)/(2n)! }
var
F : Real;
tempAlpha : Real;
tempFactorial : Real;
N, Znak : Integer;
begin
N := 0;
tempAlpha := 1;
tempFactorial := 1;
Znak := +1;
F := 1;
while tempAlpha / tempFactorial >= Epsilon do
begin
Znak := -Znak; { -1, +1, -1, +1 ...}
tempAlpha := tempAlpha * Alpha * Alpha; { ^2, ^4, ^6 ...}
N := N + 1;
tempFactorial := tempFactorial * N; { 1!, 3!, 5! ..}
N := N + 1;
tempFactorial := tempFactorial * N; { 2!, 4!, 6! ..}
F := F + Znak * tempAlpha / tempFactorial;
end;
tCos := F;
end; // tCos
begin
WriteLn(sin(pi/3):8:8);
WriteLn(tSin(pi/3, 0.000001):8:8);
WriteLn;
WriteLn(cos(pi/3):8:8);
WriteLn(tCos(pi/3, 0.000001):8:8);
end.
Результаты работы:
0.86602540
0.86602540
0.50000000
0.50000000
function tSin(Alpha, Epsilon : Real) : Real;
{ sin x = x - x^3/3! + x^5/5! - +(-1)^(n-1)*x^(2n-1)/(2n-1)! }
var
F : Real;
tempAlpha : Real;
tempFactorial : Real;
N, Znak : Integer;
begin
N := 1;
tempAlpha := Alpha;
tempFactorial := 1;
Znak := +1;
F := Alpha;
while tempAlpha / tempFactorial >= Epsilon do
begin
Znak := -Znak; { -1, +1, -1, +1 ...}
tempAlpha := tempAlpha * Alpha * Alpha; { ^3, ^5, ^7 ...}
N := N + 1;
tempFactorial := tempFactorial * N; { 2!, 4!, 6! ..}
N := N + 1;
tempFactorial := tempFactorial * N; { 3!, 5!, 7! ..}
F := F + Znak * tempAlpha / tempFactorial;
end;
tSin := F;
end; // tSin
function tCos(Alpha, Epsilon : Real) : Real;
{ sin x = 1 - x^2/2! + x^4/4! - +(-1)^n*x^(2n)/(2n)! }
var
F : Real;
tempAlpha : Real;
tempFactorial : Real;
N, Znak : Integer;
begin
N := 0;
tempAlpha := 1;
tempFactorial := 1;
Znak := +1;
F := 1;
while tempAlpha / tempFactorial >= Epsilon do
begin
Znak := -Znak; { -1, +1, -1, +1 ...}
tempAlpha := tempAlpha * Alpha * Alpha; { ^2, ^4, ^6 ...}
N := N + 1;
tempFactorial := tempFactorial * N; { 1!, 3!, 5! ..}
N := N + 1;
tempFactorial := tempFactorial * N; { 2!, 4!, 6! ..}
F := F + Znak * tempAlpha / tempFactorial;
end;
tCos := F;
end; // tCos
begin
WriteLn(sin(pi/3):8:8);
WriteLn(tSin(pi/3, 0.000001):8:8);
WriteLn;
WriteLn(cos(pi/3):8:8);
WriteLn(tCos(pi/3, 0.000001):8:8);
end.
Результаты работы:
0.86602540
0.86602540
0.50000000
0.50000000
Смотришь в инете разложение синуса и косинуса в ряд Тейлора, например здесь
http://ru.wikipedia.org/wiki/Ряд_Тейл ора
а в программе считаешь первые n членов этого ряда
http://ru.wikipedia.org/wiki/Ряд_Тейл ора
а в программе считаешь первые n членов этого ряда
напиши в асю подумаем вместе, обешать нчиего не буду заранее. 589703886
Похожие вопросы
- Помогите написать программу на паскале
- Ребят, помогите написать программу для Паскаля!
- помогите написать программу на паскале
- помогите написать программу на паскале!!! если можно напишите в комментах что где делаете!!!
- Помогите написать программу! Турбо Паскаль 7.0
- Помогите написать программу в Паскале, пожалуйста. см ниже
- Помогите написать программу на Паскале
- Помогите написать программу в паскале
- Помогите написать программу по паскалю для задания! ( см. внутри)
- помогите написать программу на паскаль Заданное натуральное число не превосходящее 1000 записать прописью, то есть выве