TURBO PASCAL

Новости       

Программы

Turbo Pascal

Игры

Документация

"Странности"

FAQ

Ссылки

Благодарности 

Гостевая книга

Спонсор

От автора

 

Практическое задание N 1. 15

Определить число членов ряда,  необходимых для расчета с заданной погрешностью суммы членов ряда: 

N Вид ряда Общий член ряда          Сумма   N=    
1 1- 1 / 22 + 1 / 32 - 1 / 42 + . . .                 (-1)(N-1)  / N2                  Pi2 / 12            1, 2, 3, . . . 
2 1- 1 / 3 + 1 / 5 - 1 / 7 + . . .                     (-1)N  / (2*N+1)             Pi / 4             0, 1, 2, . . . 

                                                                          

            Если члены ряда являются функциями аргумента "x",  то ряд называется функциональным.  Расчет многих функций производится разложением функции в степенной ряд.  Приведем пример расчета значения функции y=sin(x) при некотором значении "х" с использованием представления функции в виде ряда: 

     y1 = x - x3/3! + ... + (-1)(N+1) * x(2*N+1)/(2*N+1)! + ...

где  a0= x,  aN= k * aN-1,  k= (-x2)/(2*N*(2*N+1)),   N= 0, 1, 2, ... 

            Kаждый член ряда аN при N>0 можно получить умножением предыдущего члена ряда aN-1 на коэффициент k.  Приближенное значение функции y=sin(x) находится как частичная сумма "N"  членов ряда.  Погрешность вычисления значения функции "у"  при некотором значении "х"  зависит от количества членов ряда и значения "х",  поэтому расчет заканчивается при |aN| < eps,  где eps - допустимая погрешность расчетов.  В программе используем цикл с условием,  например:

                                  

PROGRAM SIN_R;

Var  y,  y1,  x,  eps,  a,  k:  real;    n:  Word;

Begin

     Writeln('Вычисление y=sin(x) с использованием ряда !');

     Write('Введите значение аргумента x=');    readln(x);

     Write('Введите значение погрешности еps=');  readln(eps);

     Writeln;     y:= sin(x); 

                  n:= 0;   a:= x;                             { a  - первый член ряда }

                        y1:= a;                                { y1 - первая частичная сумма ряда }

   While abs(a) > eps  do   begin

       n:= n+1;   k:= -x*x/(2*n*(2*n+1));   a:= a*k;   y1:= y1+a;

       Writeln('Приближенное значение функции  y1=',   y1:-11:8, ' _ _ при  n=',  n )

   end;

     Writeln('Контрольное значение функции y=sin(x)= ',  y:-11:8);

     Writeln('Нажмите Enter');    readln;     

End.

            Применение оператора Repeat. . .  в данном примере имеет вид:

         Repeat  "операторы"  Until  abs(a) < eps;

            Операторы цикла с условием могут применяться для анализа правильности вводимых данных.  Контроль входных данных обязателен для рядов,  сходящихся не во всей области "X",  например,  |X|<1 при разложении функции arctg(x) в степенной ряд.  В этом случае можно использовать "защиту от дурака",  например:

     Repeat Write('введите значение |х|<1;_ _x='); readln(x)

     until abs(x)<1;

 

На первую страницу

Rambler's Top100 PROext: Top 1000
Rambler's Top100

(с) Все права защищены.

По всем интересующим вопросам прошу писать электронный адрес

Hosted by uCoz