Подынтегральная функция методом Симпсона
Вложений: 1
Помогите с задачей и объясните ее доступным для новичка языком:tehnari_ru_674:
Задача: вычисление определённых интегралов и табулирование первообразных функций Все что мне известно: Подынтегральная функция - 1/x*ln*x Промежуток интеграла - [2;3] Кол-во частей разбивки - 36 Вычисление значения первообразной h - 0,2 Точность вычисления значения первообразной - 0,001 Точное значение первообразной - 2,3026(ln ln x - ln ln 2) |
Да легко, сейчас нарисую.
|
Вложений: 1
Значит, так.
Прежде всего — методичка составлена бестолково и ошибками. В частности, откуда взялся множитель 2,3026 — совершенно не представляю. А так — пожалуйста: Код:
Const |
Вложений: 1
Спасибо вам)) Я как дома буду проверю
А как вам мой вариант решения задачи, помог препод: |
Цитата:
Цитата:
|
Большое вам спасибо!
Я больше имел в виду что изучу ее, чтоб суметь грамотно объяснить преподавателю |
Цитата:
|
Ладно, пытался я значит сам разобраться, но что то не очень, выходит:tehnari_ru_325:
Объясните, пожалуйста, ваши блоки и сам метод) |
Цитата:
Интеграл берется аналитически, и первообразная (кстати, в методичке, как обычно бывает, это слово употреблено безграмотно, на самом деле первообразная, она же "неопределенный интеграл", это функция, дифференцирование которой даёт подынтегральное выражение, поэтому первообразная определяется с точностью до произвольной константы) есть Ln(Ln(x))+С. Отсюда определенный интеграл с переменным верхним пределом (который эти умники называют "первообразной") есть Ln(Ln(x)) - Ln(Ln(a)). Уж откуда эти ... взяли числовой коэффициент — не ведаю. Впрочем, догадываюсь: скорее всего, подынтегральная функция предполагалась не 1/(xLn(x)), как у них в таблице, а 1/(xLg(x)), т.е. с десятичным, а не натуральным логарифмом. Тогда действительно возникает коэффициент Ln(10). Идиоты! Всё это считается в программе через функцию Antiderivative. Теперь, собственно, о численном интегрировании. 1. Вспомним формулу Симпсона для вычисления интеграла на промежутке (a,b): а) разбиваем промежуток на 2N частей (тут важна чётность). б) вводим h = (b - a)/(2N) Xj = a + h*j, j = 0, 1, ... 2N Yj = f(Xj), где f — подынтегральная функция. тогда интеграл есть (h/3)*(Y0 + 4*Y1 + 2*Y2 + 4*Y3 + ... + Y2N) 2. Тут опять "уважаемые" преподаватели бьют бедных студиозусов ключом (разводным или шведским) по голове. Видите ли, можно либо зафиксировать число разбиений интервала, тогда точность — уж как получится, либо задать точность и дробить интервал до тех пор, пока мы этой точности не достигнем. А то и другое сразу, как предписывают эти корифеи, НЕВОЗМОЖНО. Поэтому я выбрал второй вариант — вычисление интеграла с заданной точностью. Вычисление делается в функции Simpson. 3. В этой функции организован следующий цикл: а) Вычисляется значение интеграла при 2N = 2. Обозначим это значение Sum1. б) Удваиваем N и повторяем вычисление. Получаем величину Sum2. в) Если |Sum1-Sum2|< ε, то на этом заканчиваем, в противном случае величине Sum1 присваиваем значение Sum2, снова вдвое дробим интервал и повторяем вычисление, в результате которого получаем новое значение Sum2, которое сравниваем с Sum1. г) Делаем так до тех пор, пока не выполнится условие малости разницы результатов двух итераций. Далее в программе сделан вывод таблицы результатов, где сопоставляется значение численного расчета при изменении верхнего предела интеграла с точным значением. |
Код:
begin Кстати и препод сказал, что вы ошиблись хех, да да... а именно в строчке - 7, опираясь на формулу сказал, что "-2" не должно там быть и попросил меня понять как работает весь этот цикл > объяснить ему > сдать, ибо мое объяснение его не особо удовлетворило. Объясните, пожалуйста, все строчки, если вас не затруднит, ибо в методе симпсона и в самих интегралах я не очень, желательно разжевав) Еще раз огромное спасибо) |
Часовой пояс GMT +4, время: 08:29. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.