Технический форум

Технический форум (http://www.tehnari.ru/)
-   Помощь студентам (http://www.tehnari.ru/f41/)
-   -   Сумма (http://www.tehnari.ru/f41/t42979/)

opskaka 05.12.2010 23:00

Сумма
 
Получить значение функции Y=Cos(x), используя N членов разложения функции в ряд
Сos(x)=∑_(i=1)^n▒〖〖(-1)〗^i x^2i/(2i)!〗 .
Как я понимаю здесь просто нужно найти значение соs,т.е. если i-четное то к сумме прибавляем дробь,а если нечетное то отнимаем….помогите пожалуйста..не успеваю решить, а задача нужна к завтрашнему))

Vladimir_S 05.12.2010 23:15

Цитата:

Сообщение от opskaka (Сообщение 426195)
Получить значение функции Y=Cos(x), используя N членов разложения функции в ряд
Сos(x)=∑_(i=1)^n▒〖〖(-1)〗^i x^2i/(2i)!〗 .
Как я понимаю здесь просто нужно найти значение соs,т.е. если i-четное то к сумме прибавляем дробь,а если нечетное то отнимаем….помогите пожалуйста..не успеваю решить, а задача нужна к завтрашнему))

Ладно, без паники! Вот программа, вычисляющая Ваш косинус с заданной точностью. Выводится Х, значение суммы, число членов разложения и (для сравнения) точное значение косинуса:
Код:

CONST
 Eps=0.0001;
VAR
 SUM,X:REAL;
 N:WORD;


PROCEDURE SUMS(Xs:REAL; Var S:REAL; Var Ns:WORD);
 VAR
  a:REAL;
 Begin
  a:=1;
  S:=1;
  Ns:=0;
  Repeat
  Inc(Ns);
  a:=-a*Xs*Xs/(2*Ns-1)/(2*Ns);
  S:=S+a;
  Until Abs(a)<Eps;
 End;

BEGIN
 Write('X= ');
 ReadLn(X);
 WriteLn('        Results of calculation:');
 WriteLn('    X          SUM          N      Cos(X)');
 WriteLn;
 SUMS(X,SUM,N);
 WriteLn(X:8:5,'    ',SUM:8:5,'    ',N:3,'    ',Cos(X):8:5);
 ReadLn;
END.


opskaka 05.12.2010 23:25

стоп,а почему переменная i нигде не используется?или вместо i введена в процедуре переменная а?да и в дробе там факториал!!!!

Vladimir_S 05.12.2010 23:31

Цитата:

Сообщение от opskaka (Сообщение 426207)
Спасиб,большущее!!!очень помогли!!!

Кстати, заметил, что в задании несколько иначе - задается не точность, а число членов разложения. Тогда так:
Код:

VAR
 X:REAL;
 N:WORD;


Function SUMS(Xs:REAL; Ns:WORD):REAL;
 VAR
  a,S:REAL;
  Is:Integer;
 Begin
  a:=1;
  S:=1;
  For Is:=1 to Ns do
  begin
  a:=-a*Xs*Xs/(2*Is-1)/(2*Is);
  S:=S+a;
  end;
  SUMS:=S;
 End;

BEGIN
 Write('X= ');
 ReadLn(X);
 Write('N= ');
 ReadLn(N);
 WriteLn('        Results of calculation:');
 WriteLn('    X          SUM          N      Cos(X)');
 WriteLn;
 WriteLn(X:8:5,'    ',SUMS(X,N):8:5,'    ',N:3,'    ',Cos(X):8:5);
 ReadLn;
END.


opskaka 05.12.2010 23:41

Да,что то не то...задана не точность а количество членов в общем вот задание посмотрите пожалуста может так будет понятнее
Ссылка удалена

Vladimir_S 06.12.2010 09:34

Цитата:

Сообщение от opskaka (Сообщение 426218)
Да,что то не то...задана не точность а количество членов в общем вот задание посмотрите пожалуста может так будет понятнее
Ссылка удалена

Так ведь я же выложил и такой вариант... Что же Вы столь невнимательны?


Часовой пояс GMT +4, время: 20:29.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.