Читайте также: |
|
Определить число членов ряда, необходимых для расчета с заданной погрешностью суммы членов ряда:
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,...
3 1 / (1*2) + 1 / (2*3) + 1 / (3*4) +... 1 / (N*(N+1)) 1 1, 2, 3,...
4 1 / (1*3) + 1 / (3*5) + 1 / (5*7) +... 1 / ((2*N-1)*(2*N+1)) 1 / 2 1, 2, 3,...
5 1- 1 / 1! + 1 / 2! - 1 / 3! +... (-1)N / N! 1 / e 0, 1, 2,...
6 1+ 1 / 1! + 1 / 2! + 1 / 3! +... 1 / N! e 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;
Дата добавления: 2015-10-29; просмотров: 107 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Операторы цикла с условием | | | Break; - прерывание цикла. |