Приближенные вычисления.
Задача 1.Вычислить приближенное значение суммы
1 + x/1! + x2/2! + x3/3! + ...
Считаем, что нужное приближение получено, если вычислена сумма нескольких слагаемых, и очередное слагаемое оказалось по модулю меньше, чем данное малое положительное число e.
Для решения задачи мы должны выполнить следующие действия:
1) получить очередное слагаемое (назовем его а);
2) сравнить абсолютную величину слагаемого а с e и, в зависимости от результата сравнения, либо продолжить, либо прекратить вычисления.
Program p;
var a: real;
x : real;
e : real;
i : integer;
S : integer;
Begin
readln(x, e);
i:=1;
a:=1;
S:=0;
WHILE a>e DO
begin
S:=S+a; i:=i+1; a:=a*x/i;
end;
writeln(‘приближенное значение суммы=’,S:4:2)
end.
Задача 2.Рассмотрим часто встречающуюся задачу приближенного решения уравнения f(x)=0, где f(x) - заданная функция. Решить уравнение - значит найти такое значение х*, при котором f(x*)=0. Поиск решения осуществляется на интервале [a;b], причем f(a)<0, а f(b)>0. Используем метод деления пополам. Находим точку с=(а+b)/2 - середина отрезка. Если f(c)>0, то границу b изменяем на значение с, а если f(с)<0, то изменяем а. Процесс продолжаем, пока длина интервала не будет меньше заданной точности.
Y f(x) 0 a c b X |
Пусть f(x)=x2-2, т.е. мы попытаемся найти значение квадратного корня из 2.
program popolam;
const eps=1.0E-3;
var a,b,c:real;
Function eg(x,y:real):boolean;
begin
Eg:=Abs(x-y)<eps
end;
Function F(x:real):real;
begin
F:=Sgr(x)-2
end;
BEGIN
Writeln(‘введите интервал’); readln(a,b);
if F(a)*F(b)>0 then writeln(‘на этом интервале мы не можем
найти решение уравнения’)
else begin
while Not Eg(a,b) do
begin c:=(a+b)/2;
if F(c)>0 then b:=c else a:=c
end;
writeln(‘Результат ’,a)
end;
readln
end.
Можно с помощью этой программы решить уравнения :
x2-6x+5=0 x-cosx=0 x-lnx-2=0 2x3-9x2-60x+1=0
Y 0 a x1 x2........ xn-2 xn X |
Задача 3.Пусть непрерывная положительная на отрезке [a,b] (a<b) функция. Вычислим площадь фигуры, ограниченную графиком функции f(x), осью х и прямыми х=а и х=b. Для этого разобьем отрезок [a,b] на n равных отрезков одинаковой длины Dx=(b-a)/n a=x0<x1<...<xi<xi+1<....<xn=b
На каждом из отрезков [xi,xi+1] как на основании, построим прямоугольник с высотой f(xi).
Площадь прямоугольников мы умеем находить. Сумма площадей всех прямоугольников даст приближенное значение площади фигуры:
Sприб=(b-a)/n*(f(x0)+....f(xn-1))
Естественно, что чем мельче будет разбиение, тем точнее мы подсчитаем площадь фигуры.
Для отладки программы возьмем функцию f(x2) на отрезке [1,2]. Площадь фигуры равна 2,333....
Дата добавления: 2015-01-15; просмотров: 1089;