Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2013, 19:18   #1
3Doleg
Пользователь
 
Регистрация: 03.10.2012
Сообщений: 67
По умолчанию вычислить площадь прямоугольной криволинейной трапеции

Cоставить программу и выполнить 2 эксперименты для вычисления площади криволинейной трапеции, верхняя сторона которой является кривой линией f(х) по формуле:
f = (x*x*x*x) - 5 / 3 * x + 1.2 * sin(2 * x) + 0.6 * cos(x)

Математическая модель задачи: рассмотрите функцию f(х) на интервале [а, b] или подправьте функцию, чтобы она не изменяла на нем знак. Разбейте этот интервал на десять одинаковых частей длиной h = (b-a) / 10. Проведите перпендикуляры в этих точках до пересечения с кривой (их будет 11, поскольку есть два крайних). Длина перпендикуляра = значению функции f(х) в конкретной точке х. Постройте десять прямоугольников вертикальными сторонами которых являются только левые или только правые перпендикуляры (их 10), а горизонтальными - отрезки на оси ОХ длиной h.

Утверждение: площадь криволинейной трапеции приближенно = сумме площадей построенных прямоугольников.

Метод решения и описание алгоритма. Рассмотрите на оси ОХ последовательность точек: a, a + h, a +2h, ..., a +9h. Найдите значение функции в этих точках: f(a), f(a + h), ..., f(a +9h). Площадь S десяти левых прямоугольников вычисляют так:
S = f(a)h + f(a + h)h + f(a +2h)h + ... + F(a +9h)h.
По утверждению это значение принимают за значение площади фигуры с некоторой погрешностью, которой пренебрегают.
Повторить вычисления, разбив отрезок [а; b] на 20 частей. Какое значение площади, по вашему мнению, будет более точным? Составить программу так, чтобы число разбиений (пусть n) можно было делать произвольным. Приняв второе значение площади за точное, вычислить относительную погрешность первого эксперимента.

Написал чтобы искало площадь, еще нужно найти погрешность(отклонение), что у меня не так, непонимаю...
буду благодарен за помощь

вот код:
Код:
uses crt;
var n, i :integer;
a, b, s, h, x, er, r, poh, e : real;
 
begin
     write('Vvedite a: ');
     read(a);
     write('Vvedite b: ');
     read(b);
     write('Vvedite n: ');
     read(n);
     e:=1E-03;
     repeat
 
     h := (b - a) / n; s := 0; x := a;
     for i:=1 to n do begin
          s := s + ((sqr(x)*sqr(x) - 5 / 3 * x+1.2*sin(2*x)+0.6*cos(x)));
          x := x + h;
     end;
     s := s * h;
     r:=0;
     er:=abs(s-r);
     until er >= e;
 
     writeln;
      write('s = ', s);
          writeln;
     writeln('PogrewnoStb: ', er);
end.
Заранее спасибо)
3Doleg вне форума Ответить с цитированием
Старый 15.05.2013, 19:39   #2
Мизантроп_ЛоЛ
 
Регистрация: 15.05.2013
Сообщений: 7
По умолчанию

Опиши пожалуйста саму проблему. Что не так?
Мизантроп_ЛоЛ вне форума Ответить с цитированием
Старый 15.05.2013, 19:55   #3
3Doleg
Пользователь
 
Регистрация: 03.10.2012
Сообщений: 67
По умолчанию

немогу посчитать отклонение(формула вроде нормальная)..
3Doleg вне форума Ответить с цитированием
Старый 15.05.2013, 20:16   #4
Мизантроп_ЛоЛ
 
Регистрация: 15.05.2013
Сообщений: 7
По умолчанию

У тебя погрешность равна s, потому что s-r, при r=0 будет s. Пересмотри ещё раз формулу.
Мизантроп_ЛоЛ вне форума Ответить с цитированием
Старый 15.05.2013, 22:35   #5
3Doleg
Пользователь
 
Регистрация: 03.10.2012
Сообщений: 67
По умолчанию

ну вот незнаю как написать, помогите плис)
3Doleg вне форума Ответить с цитированием
Старый 16.05.2013, 06:20   #6
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

так ты формулу погрешности-то скажи, как r должно рассчитываться. Подозреваю, что нулю она равна до начала цикла, а потом пересчитывается (либо на первой итерации, либо в каждой).
Все рассуждения из того предположения, что s считается правильно.

Мое предложение кода (не забываем, что формулу ты так и не сказал, так что хз - правильно я расчет сделал или нет):

Код:
uses crt;
var n, i :integer;
a, b, s, h, x, er, r, poh, e : real;
 
begin
     write('Vvedite a: ');
     readLn(a);
     write('Vvedite b: ');
     readLn(b);
     write('Vvedite n: ');
     readLn(n);
     e:=1E-03;
     r:=0;

     repeat
       h := (b - a) / n; s := 0; x := a;
       for i:=1 to n do begin
          s := s + ((sqr(x)*sqr(x) - 5 / 3 * x+1.2*sin(2*x)+0.6*cos(x)));
          x := x + h;
       end;
       s := s * h;
       er:=abs(s-r);
       r:=s;
     until er >= e;
 
     writeln;
      write('s = ', s);
          writeln;
     writeln('PogrewnoStb: ', er);
end.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 16.05.2013 в 08:41.
Sciv вне форума Ответить с цитированием
Старый 16.05.2013, 11:45   #7
3Doleg
Пользователь
 
Регистрация: 03.10.2012
Сообщений: 67
По умолчанию

у погрешности и S тот же результат.., погрешность должна быть маленькою, а формулы я сам незнаю, в методе решения тоже нет, вот как найти незнаю..., а если er сделать чтобы отличалось на несколь сотых....
или просто при вводе n = 512, результат очень похож, как при вводе n = 1024, ну тогда как то число, насколько оно отличаеться найти ?
3Doleg вне форума Ответить с цитированием
Старый 16.05.2013, 13:44   #8
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Обычно погрешность считается как модуль разности между текущим значением и значением с предыдущей итерации - я тебе как раз этот код и дал, немного переделав твой. ты его проверял?
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 16.05.2013, 14:31   #9
3Doleg
Пользователь
 
Регистрация: 03.10.2012
Сообщений: 67
По умолчанию

да, я проверял код, вот результат
Изображения
Тип файла: png Без імені.png (11.2 Кб, 103 просмотров)
3Doleg вне форума Ответить с цитированием
Старый 16.05.2013, 14:44   #10
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Так. Читаем внимательно условие задачи:

Цитата:
По утверждению это значение принимают за значение площади фигуры с некоторой погрешностью, которой пренебрегают.
и далее

Цитата:
Приняв второе значение площади за точное, вычислить относительную погрешность первого эксперимента.
Не надо никакой точности вычислений в программе - ее надо вычислить, сосчитав площади при 10 и 20 разбиениях. У тебя прога не совсем то делает, что заказано.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оценить площадь криволинейной трапеции. Roman1295 Паскаль, Turbo Pascal, PascalABC.NET 0 17.04.2013 22:14
Площадь криволинейной трапеции (Delphi) Иришка-солнышко Помощь студентам 1 03.07.2011 17:36
найти площадь криволинейной трапеции icar1992 Помощь студентам 0 18.05.2011 12:49
найти площадь криволинейной трапеции Gek19 Паскаль, Turbo Pascal, PascalABC.NET 0 24.04.2011 21:14