![]() |
|
сделать стартовой | добавить в избранное |
![]() |
Вычисление интеграла методом Ньютона-Котеса (теория и программа на Паскале) |
Министерство Высшего Образования РФ. Московский Институт Электронной Техники (Технический Университет) Лицей №1557 КУРСОВАЯ РАБОТА “Вычисление интеграла методом Ньютона-Котеса” Написал: Коноплев А.А. Проверил: доцент Колдаев В.Д. Москва, 2001г.1. . 3 2. Теоретическая 3. Алгоритм .8 4. Код .17 . Модуль . Модуль . Модуль . Основная 5. Тестовые 42 6. Полезные советы по работе с программой.42 7. Окна ввода и вывода 8. .43 9. Список .44 Математика - одна из самых древних наук. Труды многих ученых вошли в мировой фонд и стали основой современных алгебры и геометрии. В конце XVII в., когда развитие науки шло быстрыми темпами, появились понятия дифференцирование, а вслед за ним и интегрирование. Многие правила нахождения неопределенного интеграла в то время не были известны, поэтому ученые пытались найти другие, обходные пути поиска значений. Первым методом явился метод Ньютона – поиск интеграла через график функции, т.е. нахождение площади под графиком, методом прямоугольников, в последствии усовершенствованный в метод трапеций. Позже был придуман параболический метод или метод Симпсона. Однако часть ученых терзал вопрос: А можно ли объединить все эти методы в один? Ответ на него был дан одновременно двумя математиками Ньютоном и Котесом. Они вывели общую формулу, названную в их честь. Однако их метод был частично забыт. В этой работе будут изложены основные положения теории, рассмотрены различные примеры, приведены таблицы, полученные при различных погрешностях, и конечно описана работа и код программы, рассчитывающей интеграл методом Ньютона-Котеса.Пусть некоторая функция f(x) задана в уздах интерполяции: таблицей значений: X0=a X1 X2 X =b Y0=f(x0) Y1=f(x1) Y2=f(x2) Y =f(x ) Требуется найти значение интеграла . Для начала составим интерполяционный многочлен Лагранджа: Для равноотстоящих узлов интерполяционный многочлен имеет вид: где q=(x-x0)/h – шаг интерполяции, заменим подынтегральную функцию f(x) интерполяционным многочленом Лагранжа: Поменяем знак суммирования и интеграл и вынесем за знак интеграла постоянные элементы: Так как dp=dx/h, то, заменив пределы интегрирования, имеем: Для равноотстоящих узлов интерполяции на отрезке величина шаг определяется как h=(a-b)/ . Представив это выражение для h в формулу (4) и вынося (b-a) за знак суммы, получим: где i=0,1,2 , ; Числа Hi называют коэффициентами Ньютона-Котеса. Эти коэффиценты не зависят от вида f(x), а являются функцией только по . Поэтому их можно вычислить заранее. Окончательная формула выглядит так: Теперь рассмотрим несколько примеров.Пример 1. Вычислить с помощью метода Ньютона-Котаса: , при =7. Вычисление. 1) Определим шаг: h=(7-0)/7=1. 2)Найдем значения y: x0=0 y0=1 x1=1 y1=0.5 x2=2 y2=0.2 x3=3 y3=0.1 x4=4 y4=0.0588 x5=5 y5=0.0384 x6=6 y6=0.0270 x7=7 y7=0.02 3) Находим коэффициенты Ньютона-Котеса: H1=H7=0.0435, H1=H6=0.2040, H2=H5=0.0760 ,H3=H4=0.1730 Подставим значения в формулу и получим:При подсчете с помощью формулы Ньютона-Лейбница получим:Пример 2. Вычислить при помощи метода Ньютона-Котеса , взяв =5; Вычисление: 1) Определим шаг h=(8-4)/5=0.8 2) Найдем значения y: x0=0 y0=-2.6
1 x1=4.8 y1=0.42 x2=5.6 y2=4.34 x3=6.4 y3=6.35 x4=7.2 y4=4.38 x5=8 y5=-0.16 3) Находим коэффициенты Ньютона –Котеса: H0=H5=0.065972 ;H1=H4=0.260417 ;H2=H3=0.173611 ; 4)Подставим значения в формулу и получим: Рассмотрим частные случаи формулы Ньйтона-Котеса. Пусть =1 тогда H0=H1=0.5 и конечная формула примет вид: Тем самым в качестве частного случая нашей формулы мы получили формулу трапеций. Взяв =3, мы получим . Частный случай формулы Ньютона –Котеса – формула Симпсона Теперь произведем анализ алгоритма и рассмотрим основной принцип работы программы. Для вычисления интеграла сначала находятся коэффициенты Ньютона- Котеса. Их нахождение осуществляется в процедуре hkoef. Основной проблемой вычисления коэффициентов является интеграл от произведения множителей. Для его расчета необходимо:А) посчитать коэффициенты при раскрытии скобок при q (процедура m ogocle ) Б) домножить их на 1/ , где –степень при q (процедура koef) В) подставить вместо q значение (функция i egral) Далее вычисляем факториалы (функция fak orial) и перемножаем полученные выражения (функция mai i ). Для увеличения быстроты работы вводится вычисление половины от количества узлов интерполяции и последующей подстановкой их вместо неподсчитанных. Процедура koef(w: массив; :целый;var e:массив); Процедура m ogochle ( ,i:целые;var c:массив ); Процедура fu k ia( :целая;a,b:вещест.;var y:массив;c:вещест.;f:строка); Функция i egral(w:массив; :целый):двойной; Функция mai i ( :целый;a,b:вещест.;y:массив):двойной; Программа состоит из 8 файлов: . K mai .exe – файл загрузки основной программы . K u i . pu – модуль вычислительных процедур и функций . K graph. pu – модуль графических процедур . Graphic. pu – модуль процедур для построения графика . Egavga.bgi – файл графической инициализации . Sa s.chr, li .chr – файлы шрифтов . Keyrus.com (не обязательно) – файл установки русского языка. Для работы программы с русским интерфайсом желательно запускать ее в режиме DOS. ================================================ ==========МОДУЛЬ GRAPH========== ================================================ {$ } u i k graph; i erface uses cr ,graph,k u i ,graphic; procedure wi wi 1; procedure proli e(ea:word); procedure wi wwodab(ea:word); procedure error1(ea:word); procedure helpwi (ea:word); procedure error(ea:word); procedure ewsc ex (ea:word); procedure ewsc(ea:word); procedure wi 1(ea:word); procedure wi 2(ea:word;var k:word); procedure wwod (ea:word;var :i eger); procedure wwodab(ea:word;var a,b:real); procedure wwod1(ea:word;var y:array of double;var :i eger;var a,b:real); procedure wwod2(ea:word;var ea1:word;var :i eger;var a,b:real;var s :s ri g); procedure of double;var k:word); impleme a io procedure proli e(ea:word); {Проседура полосы процесса} var i:i eger; f:s ri g; c:char; begi ewsc(ea); se color(15); se fills yle(1,7); bar(160,150,460,260); rec a gle(165,155,455,255); rec a gle(167,157,453,253); case (ea mod 2) of 0: ou ex xy(180,170,' Идет работа .Ждите.'); 1: ou ex xy(180,170,' Worki g.Please wai .'); e d; se fills yle(1,12); se color(0); rec a gle(200,199,401,221); for i:=1 o 9 do li e(200 i 20,200,200 i 20,220); delay(20000); for i:=1 o 100 do begi if ((i-1) mod 10)=0 he li e(200 ((i-1) div 10) 20,200,200 ((i-1) div 10) 20,220); bar(rou d(200 2 (i-0.5
)),200,200 2 i,220); delay(1100); se color(15); se fills yle(1,7); bar(280,230,323,250); s r(i,f); f:=f '%'; ou ex xy(290,235,f); if (i mod 25) =0 he bar(170,180,452,198); if (ea mod 2)=0 he case (i div 25) of 0: ou ex xy(170,190,'Подготовка '); 1: ou ex xy(170,190,'Расчет коеффициентов в многочлене'); 2: ou ex xy(170,190,'Расчет коеффициентов Ньютона-Котеса'); 3: ou ex xy(170,190,'Расчет интеграла'); e d else case (i div 25) of 0: ou ex xy(170,190,'Prepeari g'); 1: ou ex xy(170,190,'Calcula io of m ogochle coeff.'); 2: ou ex xy(170,190,'Calcula io of ew o -Co es coeff. '); 3: ou ex xy(170,190,'Calcula io of i egral'); e d; se fills yle(1,12); se color(0); e d; e d; procedure wi wwod (ea:word); {Окно ввода числа узлов интерполяции} var c:char; f:s ri g; begi helpwi (ea); if (ea mod 2) =0 he begi ou ex xy(360,140,' В этом окне необходимо '); ou ex xy(360,155,' ввести количество узлов '); ou ex xy(360,170,' интерполяции, от которого '); ou ex xy(360,185,' будет зависить точность '); ou ex xy(360,200,' вычисления интеграл и '); ou ex xy(360,215,' количество зн чений функции.'); ou ex xy(360,240,' ВНИМАНИЕ : НАСТОЯТЕЛЬНО '); ou ex xy(360,250,' РЕКОМЕНДУЕТСЯ НЕ ВВОДИТЬ '); ou ex xy(360,260,' ЗНАЧЕНИЕ БОЛЬШЕ 12 !! '); e d else begi ou ex xy(360,140,' I his wi dow you have o '); ou ex xy(360,155,' pu i o he umber. '); ou ex xy(360,170,' he accuracy of calcula io '); ou ex xy(360,185,' a d he umber of fu c io '); ou ex xy(360,200,' parame ers will depe d o '); ou ex xy(360,215,' his umber. '); ou ex xy(360,240,' WAR I G: I IS HARDLY '); ou ex xy(360,250,' RECOME DED O O PU I '); ou ex xy(360,260,' UMBER MORE HE 12 !! '); e d; se color(2); se fills yle(1,14); bar(70,200,340,300); rec a gle(75,205,335,295); rec a gle(77,207,333,293); if (ea mod 2) =0 he begi ou ex xy(90,227,'Введите количество узлов( ):'); ou ex xy(80,270,'ВНИМАНИЕ: При больших возможна'); ou ex xy(80,280,'некорректная работа компьютера!!'); e d else begi ou ex xy(80,217,'Pu i umber of'); ou ex xy(80,227,' i erpola io u i s:'); ou ex xy(80,270,'WAR I G:if you use big umber '); ou ex xy(80,280,'of u i s,PC wo work properly!'); e d; se fills yle(1,0); bar(190,240,230,255); e d; procedure wwod (ea:word;var :i eger); {Процедура ввода узлов } var ec,p:i eger; k,f:s ri g; x:i eger; c:char; begi ewsc(ea); wi wwod (ea); repea repea wi wwod (ea); go oxy(25,16); read(k); val(k,p,ec); if ec0 he begi error1(ea); readl ; e d; u il ec=0; :=p; if >12 he begi if keypressed he c:=readkey; c:='r'; se color(15); se fills yle(1,12); bar(140,210,490,300); rec a gle(145,215,485,295); rec a gle(147,217,483,293); if (ea mod 2) =0 he begi ou ex xy(150,227,' Предупреждение!'); ou ex xy(150,237,' Вы дейcтвительно хотите использовать'); ou ex xy(150,250,' большое значение ?'); e d else begi ou ex xy(150,227,' War i g!! '); ou ex xy(150,237,' Do you realy wa o use a big '); ou ex xy(150,250,' umber i erpola io u i s( )? '); e d; sou d(600); delay(4000); osou d; se fills yle(1,2); bar(320,260,350,280); se fills yle(1,12); bar(250,260,280,280); repea if keypressed he begi c:=readkey; if (c=#80) or (c=#72) or (c=#77) or (c=#75) he x:=x 1; se fills yle(1,2); if (x mod 2)=0 he begi bar(250,260,280,280); se fills yle(1,12); bar(320,260,350,280); e d else begi bar(320,260,350,280); se fills yle(1,12); bar(250,260,280,280); E D; e d; if (ea mod 2) =0 he begi ou ex xy(255,267,'ДА'); ou ex xy(325,267,'НЕТ'); e d else begi ou ex xy(255,267,'YES'); ou ex xy(325,267,' O'); e d; u il c=#13; if abs(x mod 2)=1 he begi :=0; se color(15); se fills yle(1,2); bar(160,200,460,280); rec a gle(165,205,455,275); rec a gle(167,207,453,273); if (ea mod 2)=0 he begi ou ex xy(180,227,'Для работы программы необходимо'); ou ex xy(180,237,' заново ввести .'
Все эти невероятные находки профессор Шасле, по-видимому, принимал за чистую монету. Лишь письма, относившиеся к более позднему периоду, в конце концов привели к разоблачению обмана. Особые подозрения вызвали письма, свидетельствующие о том, что сэр Исаак Ньютон узнал теорию тяготения от французского математика Блэза Паскаля, а Уильям Шекспир позаимствовал свои сюжеты у французских авторов. Британские ученые, естественно, объявили письма подделкой, а специалисты из Парижской академии энергично отстаивали их подлинность. Когда дело дошло до суда в феврале 1870 года, Врай-Лукас настаивал на том, что он оказался крайним и стал такой же жертвой обманщика, как профессор Шасле. Однако никаких следов «обнищавшего аристократа» так и не было обнаружено, а сравнение почерка Врай-Лукаса с почерком писем убедило судей, что он был их настоящим автором. Мошенника приговорили к двум годам тюрьмы. Профессор Шасле не проходил в качестве обвиняемого, но общественность признала его виновным в невероятной доверчивости. Известие о библиотекаре Парижской академии, поверившем в то, что Мария Магдалина, Александр Великий, Атила и Лазарь писали на средневековом или современном французском языке, причем на бумаге (не использовавшейся во Франции до начала XIV века), выставило профессора Шасле на посмешище
1. Лекции по Методике математики в начальных классах (4-5 семестры)
2. Развитие элементарных математических представлений у детей 4-5 лет в свете современных требований
3. Активизация темпов физического развития детей 4-5-летнего возраста
4. Программа на языке Паскаль, реализующая операции над множествами
10. Решение дифференциальных уравнений 1 порядка методом Эйлера
11. Вычисление определённого интеграла с помощью метода трапеций на компьютере
14. Численные методы. Двойной интеграл по формуле Симпсона
15. Решение смешанной задачи для уравнения гиперболического типа методом сеток
16. Решение систем линейных алгебраических уравнений методом Гаусса и Зейделя
17. Вычисление определенного интеграла методами трапеций и средних прямоугольников
18. Вычисление интеграла фукции f (x) (методом Симпсона WinWord)
19. Метод последовательных уступок (Теория принятия решений)
20. Методы решения систем линейных неравенств
21. Приближенный метод решения интегралов. Метод прямоугольников (правых, средних, левых)
25. Итерационные методы решения систем линейных уравнений с неединственными коэффициентами
27. Методология и методы принятия решения
28. Сущность и методы принятия управленческих решений
30. Методология и методы принятия решения
31. Совершенствование методов проектирования кораблей и обоснование проектных решений
32. Общий аналитический метод решения алгебраических уравнений четвертой степени
33. Решение систем дифференциальных уравнений методом Рунге - Кутты 4 порядка
34. Методы решения некорректно поставленных задач
35. Построение приближенного решения нелинейного уравнения методом Ван-дер-Поля
36. Приближенное решение уравнений методом хорд и касательных
37. Решение задач линейной оптимизации симплекс – методом
41. Методы принятия управленческого решения
42. Производственная программа предприятия и методы ее расчета
43. Эвристические методы решения творческих задач
44. Самостоятельная работа как средство обучения решению уравнений в 5-9 классах
45. Решение задач транспортного типа методом потенциалов
46. Программа физического воспитания детей 5-6 лет с задержкой психического развития
47. Методы анализа управленческих решений
49. Критерии принятия инвестиционных решений и методы оценки инвестиционных проектов
51. Расчет сетевой модели методом Форда (с программой)
57. Метод касательных. Решения нелинейных уравнений. Паскаль 7.0
58. Коллективные методы принятия управленческих решений
59. Игровые программы и технологии физического воспитания детей 5-7 лет
60. Вредоносные программы, классификация. Методы защиты
61. Итерационные методы решения нелинейных уравнений
62. Методы взлома защиты программы от несанкционированного доступа
63. Модели и методы принятия решения
64. Новый подход к построению методов межпроцедурного анализа программ
65. Принципы разработки алгоритмов и программ для решения прикладных задач
66. Разработка программы для решения систем линейных уравнений
67. Разработка формата хранения данных программ и решение задач
69. Решение задач оптимизации бизнес-процессов с использованием прикладных программ
73. Решение прикладных задач методом дихотомии
74. Решение систем линейных алгебраических уравнений (прямые методы)
75. Решение системы линейных уравнений методом Гаусса и Жордана-Гаусса
76. Симплекс метод решения задачи линейного программирования
77. Численное решение системы линейных алгебраических уравнений методом Гаусса
78. Численные методы решения систем линейных уравнений
79. Численные методы. Программа-калькулятор на Pascal
80. Графический метод решения задач линейного программирования
81. Резисторы и конденсаторы в «полупроводниковом» исполнении. Топологические решения и методы расчета
82. Аналитический метод в решении планиметрических задач
83. Исследование методов решения системы дифференциальных уравнений с постоянной матрицей
84. Итерационные методы решения систем нелинейных уравнений
85. Логические задачи и методы их решения
89. Методы решения алгебраических уравнений
90. Методы решения систем линейных уравнений
91. Нахождение корня нелинейного уравнения. Методы решения системы нелинейных уравнений
92. Метод Гаусса для решения систем линейных уравнений
93. Методы экономического обоснования принимаемых решений по выходу на внешний рынок
94. Использование количественных методов анализа для принятия управленческих решений
96. Методы планирования управленческих решений
97. Методы принятия управленческих решений
98. Методы проведения экспертиз при разработке управленческих решений