Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции _Циклы.doc
Скачиваний:
2
Добавлен:
11.07.2019
Размер:
136.19 Кб
Скачать

Лекция 7.

Вычисление бесконечных сумм.

Вычисление многих элементарных функций в ЭВМ осуществляется суммированием бесконечных рядов(последовательностей). Чем больше членов ряда участвует в сложении, тем более точным получается искомое значение.

Вычислить:

Вычисления прекратить, когда очередное слагаемое /rn/<=eps.

program sumr;

var

x,r, s, eps: real;

n,zn: integer;

begin

writeln('x=,eps=');

readln(x,eps);

s:=0;

r:=1;

n=1;

zn:=1;

while abs(r)>eps do

begin

s:=s+r*zn;

n:=n+1;

zn:=-zn;

r:=1/(n*n);

end;

writeln (' s=', s);

end.

Пример.

Вычислить:

Вычисления прекратить, когда очередное слагаемое /rn/<eps.

При вычислении следует помнить, что если n входит в показатель степени или под знак !, то необходима рекуррентная формула при вычислении слагаемого.

c=rn/rn-1

rn= rn-1*c

c= - x2/n;

r0=1

program sumr;

var

x, x2, r, s, eps : real;

n: integer;

begin

writeln ('x=, eps=');

readln(x, eps);

x2:=x*x;

s:=0;

r:=1;

n:=0;

while abs(r)>eps do

begin

s:=s+r;

n:=n+1;

r:=-r*x2/n;

end;

writeln(' s=', s);

end.

Пример.

Вычислить:

Вычисления прекратить, когда очередное слагаемое /rn/<eps.

c=rn/rn-1

rn= rn-1*c

c=x2/(2n)(2n-1);

r=x

s=0

program sumr;

var

x, x2, r, s, eps : real;

n: integer;

begin

writeln ('x=,eps=');

readln(x,eps);

x2:=x*x;

s:=0;

r:=x;

n:=0;

repeat

s:=s+r;

n:=n+1;

r:=-r*x2/(2*n*(2*n+1));

until abs (r)= eps;

writeln(' s=', s);

end.

При вычислении следует помнить, что если n входит в показатель степени или под знак !, то необходима рекуррентная формула при вычислении слагаемого.

Численные методы решения математических задач.

Решение алгебраических и трансцендентных уравнений.

Часто приходится решать уравнения вида f(x)=0, где функция f(x) определена и непрерывна на интервале a<x<b.

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

Всякое x, обращающее функцию в 0 называется корнем уравнения, а способ нахождения этого x – решением f(x)=0.

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

Пример.

Методом итераций решить уравнение x3+x=1 при начальном приближении x0=0.9

Каждое следующее приближение ищется через предыдущее xn= f(xn-1)

Вычисления прекращаются, когда /xn-xn-1/<=eps.

Приводим уравнение к виду x=f(x) Затем уточняется значение корня с помощью выражений вида: x1=f(x0), x2=f(x1)…. xn=f(xn-1)). Этот процесс продолжается пока /xn-xn-1/<=eps. Следует учесть, что этот метод имеет решение, при условии, что /f’(x)/<1 на участке между корнем и начальном приближением.

Для организации вычислений достаточно иметь две переменные:

x0предыдущее приближение и

x последующее(текущее) приближение(начальное приближение вводится в x=0.9).

В цикле каждый раз вычислять x=f(x0). Если условие abs(x-x0) не выполняется, то перед следующей итерацией нужно вычисленное последующее приближение x поместить на место предыдущего x0 и повторно выполнить цикл и т. д.

program iter;

var

x, x0, eps: real;

begin

readln(eps,x);

repeat

x0:=x;

x:=exp(1/3*ln(1-x0));

until abs(x-x0)>eps;

writeln (' x=', x);

end.

Это же уравнение решить методом Ньютона.

Решение находится последовательным приближением по формуле:

xn = xn-1-f(xn-1)/f’(xn-1)

Вычисления прекращаются, когда /xn-xn-1/<=eps.

f(x)= x3+x-1

f’(x)=3x2-1

program nuiton;

var

x,x0,eps: real;

begin

readln(eps,x0);

x=x0 - (x0*x0*x0- x0 -1)/(3*x0*x0-1);

while abs(x-x0)>eps do

begin

x0:=x;

x:=x0-(x0*x0*x0-x0-1)/(3*x0*x0-1);

end;

writeln (' x=', x, );

end.