Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Вычисление функций с заданной точностью

Автор: *Kirill* 20.12.2006 5:08

Нужна помощь в вычислении функции с заданной точностью.

Необходимо разложить в ряд соответствующую функцию в ряд и по приведенной выше схеме вычисления определить значение функции для различных величин вводимой с экрана точности и измерить время вычисления значения функции.

Вычислить cos(-x*x) при х по модулю не более 1

Автор: мисс_граффити 20.12.2006 5:23

1) разложи в ряд (чисто математически)
2) почитай FAQ - общие вопросы по математике.

Автор: *Kirill* 20.12.2006 11:16

Это понятно, а вот как должен выглядеть текущий член ряда в программе (формула), который постоянно прибавляется к сумме?

Автор: Lapp 20.12.2006 11:50

Если взять разложение в ряд Тейлора в х=0, то так:
Прикрепленное изображение

Автор: *Kirill* 21.12.2006 3:35

OK, всем спасибо за советы. Вот в итоге что получилось:


Program my_lab1;
uses CRT,DOS;
var x,i,j:integer;
d,t_ch,sum:real;
h,m,sec,time_start,time_end,time:word;
BEGIN
Clrscr;
Repeat
Clrscr;
WriteLn('Programma razlozhenia funkzii Exp(x*x) pri x po modului ne bole 5');
WriteLn;
Write('Vvedite X = ');
ReadLn(x);
If abs(x)>5 then
begin
WriteLn('!!! X ne podxodit po usloviu !!!');
ReadLn;
end;
Until abs(x)<=5;
Write('Vvedite tochnost = ');
ReadLn(d);
WriteLn;
GetTime(h,m,sec,time_start);
Delay(10000);
i:=1;
j:=1;
t_ch:=1;
sum:=1;
Write('1');
While abs(t_ch)>d do
begin
if (i mod 2)=0 then
begin
t_ch:=t_ch*sqr(x)/(i/2);
if ((j mod 2)<=0) or ((j mod 2)>0) then
begin
sum:=sum+t_ch;
Write('+',t_ch:2:4);
end;
j:=j+1;
end;
i:=i+1;
end;
GetTime(h,m,sec,time_end);
time:=time_end-time_start;
WriteLn;
WriteLn;
WriteLn('Tochnost dostignuta');
WriteLn;
WriteLn('Summa dannogo ryada = ',sum:5:4,' s tochnostyu = ',d:2:4);
WriteLn;
WriteLn('Vremya programmi = ',time,' sotih cekundi');
ReadLn;
END.

.