Anastasia12
Новые
- Регистрация
- 12 Ноя 2016
- Сообщения
- 19
- Реакции
- 0
- Баллы
- 0
Нужно вычислить площадь фигуры. Delphi7
помогите, пожалуйста, доработать программу
Задание: Вычислить приближенно площадь фигуры между осью абсцисс и кривой, заданной функцией с одним аргументом y=f(x) в пределах между x=x0 и x=x .
Указания:
2. Отрезок разделить на n равных частей;
3. Часть площади между x0 и x вычислить по формуле трапеций
S=(f(x0)+f(x1))(x1-x0)/2 ;
4. Аналогичную формулу применить и для других промежутков. Обнаружить, при каких n в результате не изменяются первые 6 десятичных знаков;
5. Организовать цикл WHILE, такой, чтобы из него можно было получить число n , обеспечивающего заданную точность EPS вычисления площади;
6. Всем выбрать различные функции и отрезок интегрирования;
7. На печать вывести значения площади и требуемое число , при котором обеспечивается заданная точность;
8. Использовать полученное значение при вычисление той же площади по правилу Симпсона
S=(f(x0)+4f(x1)+f(x2))delta(x) ,
Здесь delta(x) ─ расстояние между соседними точками;
помогите, пожалуйста, доработать программу
Задание: Вычислить приближенно площадь фигуры между осью абсцисс и кривой, заданной функцией с одним аргументом y=f(x) в пределах между x=x0 и x=x .
Указания:
2. Отрезок разделить на n равных частей;
3. Часть площади между x0 и x вычислить по формуле трапеций
S=(f(x0)+f(x1))(x1-x0)/2 ;
4. Аналогичную формулу применить и для других промежутков. Обнаружить, при каких n в результате не изменяются первые 6 десятичных знаков;
5. Организовать цикл WHILE, такой, чтобы из него можно было получить число n , обеспечивающего заданную точность EPS вычисления площади;
6. Всем выбрать различные функции и отрезок интегрирования;
7. На печать вывести значения площади и требуемое число , при котором обеспечивается заданная точность;
8. Использовать полученное значение при вычисление той же площади по правилу Симпсона
S=(f(x0)+4f(x1)+f(x2))delta(x) ,
Здесь delta(x) ─ расстояние между соседними точками;
Код:
uses
SysUtils;
const
x0=4;
xk=6;
eps=1E-10;
var n,k,i:integer;
s,x,h,s1,x1:real;
function f(y:real):real;
begin
f:=y+1;
end;
begin
n:=1;
s:=(f(x0)+f(xk))*(xk-x0)/2;
repeat
s1:=s;
n:=n+1;
h:=(xk-x0)/n;
x:=x0;
for i:=1 to n do
begin
x1:=x+h;
s:=f(x)+f(x1)+s;
x:=x1;
end;
s:=s*h/2;
writeln('s=',s:2:10);
writeln('s1=',s1:2:10);
until abs(s-s1)<=eps;
writeln('n=',n);
readln;
{ TODO -oUser -cConsole Main : Insert code here }
end.