Вычислить длину дуги гладкой кривой - Pascal
Формулировка задачи:
Вычислить длину дуги s гладкой кривой y = f(x), содержащейся между двумя точками с абс-циссами x = a и x = b по формуле:
Интеграл вычисляется заданным численным методом с точностью Е*=10-5.
А вот мой вариант: Найти длину дуги кривой y = ex , содержащейся между точками [0;1] и [1;e] мето-дом парабол.
Как я понимаю это метод Симонса? (или я не прав?
Кто сможет написать прогу на паскале. Очень надо. Вроде бы там еще график надо в в екселе написать)
Кто напишет пишите сот в ЛС на телефон 100р кину
Решение задачи: «Вычислить длину дуги гладкой кривой»
textual
Листинг программы
- function f(x: real): real;
- begin
- f := sqrt(1 + sqr(exp(x)))
- end;
- const a = 0.0;
- b = 1.0;
- eps = 1e-5;
- var n, i: integer;
- s1, s: real;
- begin
- n := 2; {для параболы нужно 3 точки, значит, изначально интервал разбиваем на 2 части}
- s := (b - a) / 6 * (f(a) + 4 * f((a + b) / 2) + f(b)); {формула Симпсона для разбиения интервала на 2 части}
- repeat
- s1 := s; {запоминаем предыдущее значение интеграла}
- n := 2 * n; {удваиваем количество частей в интервале}
- s := f(a) + f(b); {начальное значение интеграла}
- for i := 1 to n - 1 do
- if odd(i)
- then s := s + 4 * f(a + (b - a) * i / n)
- else s := s + 2 * f(a + (b - a) * i / n);
- s := s * (b - a) / 3 / n
- until abs(s - s1) / 15 <= eps;
- write('Curve length = ', s:0:6);
- readln
- end.
Объяснение кода листинга программы
- Объявляется функция под названием
f
, которая принимает аргументx
типа real и возвращает значение типа real. Она вычисляет квадратный корень из выражения1 + exp(x) в квадрате
. - Объявляются константы
a
(со значением 0.0),b
(со значением 1.0) иeps
(со значением 1е-5). - Объявляются переменные
n
иi
целочисленного типа иs1
,s
вещественного типа. - Выполняется блок кода, в котором вычисляется интеграл методом Симпсона для заданной функции на отрезке [a, b] с точностью eps.
- В цикле происходит удвоение количества частей в интервале и пересчет значения интеграла.
- Повторяется шаг 5, пока условие
abs(s - s1) / 15 <= eps
не станет истинным. - На экран выводится длина дуги гладкой кривой с точностью до 6 знаков после запятой.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д