Федеральное государственное бюджетное
образовательное учреждение высшего профессионального образования
«Ивановский государственный энергетический университет им. В. И. Ленина»
Кафедра
Программного обеспечения компьютерных систем
Курсовая работа
по дисциплине «Вычислительная математика»
Выполнил:
Студент гр. 3-42к Фёдоров А.С.
Проверил:
К.ф.м.н. проф. Гусев В.А.
Иваново 2011 г.
Задание.
Построить решение дифференциального уравнения, подобрать многочлен, описывающий полученное решение и определить корни многочлена на полученном интервале
y’’+10*y’+650*y = 3900y’= z
x0 = 0 z’ + 10*z + 650*y = 3900
y0 = 41.3553
y’0= 707.1067
Точность ε = 0.0001
Нахождение корней методом Рунге-Кутта.
Для достижения лучшей точности будем использовать метод Р.-К. 4го порядка.
Выбор шага: Сначала возьмем h = 0.001.
Алгоритм вычислений для классического метода Рунге-Кутта:
Имеемфункцию
, где
Ход вычислений:
(Для выбора шага достаточно 15 точек)
h = 0.001
i |
xi |
yi |
0 |
0 |
41.3553 |
1 |
0.001 |
42.0474 |
2 |
0.002 |
42.7093 |
3 |
0.003 |
43.3408 |
4 |
0.004 |
43.9419 |
5 |
0.005 |
44.5125 |
6 |
0.006 |
45.0525 |
7 |
0.007 |
45.5618 |
8 |
0.008 |
46.0405 |
9 |
0.009 |
46.4886 |
10 |
0.01 |
46.9060 |
11 |
0.011 |
47.2928 |
12 |
0.012 |
47.6490 |
13 |
0.013 |
47.9748 |
14 |
0.014 |
48.2701 |
15 |
0.015 |
48.5352 |
Делим шаг пополам и вычисляем точки до 15 с новым шагом:
h = 0.0005
i |
xi |
yi |
0 |
0 |
41.3553 |
1 |
0.0005 |
41.2833 |
2 |
0.001 |
42.0474 |
3 |
0.0015 |
42.3821 |
4 |
0.002 |
42.7093 |
5 |
0.0025 |
42.0288 |
6 |
0.003 |
43.3408 |
7 |
0.0035 |
43.6451 |
8 |
0.004 |
43.9419 |
9 |
0.0045 |
44.2310 |
10 |
0.005 |
44.5125 |
11 |
0.0055 |
44.7863 |
12 |
0.006 |
45.0525 |
13 |
0.0065 |
45.3110 |
14 |
0.007 |
45.5618 |
15 |
0.0075 |
45.8050 |
Видим, что yi для выделенных значений xi сходятся с требуемой точностью. Возьмем шаг h = 0.001.
Рис.1
График, построенный по точкам, обозначен темной линией на рисунке 1.
Будем интерполировать функцию на интервале [0,1.2], так как установившийся режим наступает после точки 1.2. h = 0.001
Интерполяционный многочлен будем подбирать методом наименьших квадратов:
, где n – количество узлов интерполяции,
m – степень многочлена.
……………………………………………………………..
Матрица коэффициентов симметрична относительно главной диагонали, и ее можно решить методом Гаусса-Зейделя.Расписывать ее и приводить подробное решение не будем ввиду большого размера матрицы.
Примем m = 69. Тогда интерполяционный многочлен:
График этого многочлена также представлен на рис.1 (пунктирной линией).
Высчитываем погрешность методом суммарного отклонения квадратов:
(Приведем выборочно по 10-15 значений на разных отрезках, так как вывод 1200 значений, очевидно, неудобен)
i |
xi |
yi |
P(x) |
0 |
0 |
41,3553 |
25,2826 |
1 |
0.001 |
42,0474 |
28,1319 |
2 |
0.002 |
42,7093 |
30,8130 |
3 |
0.003 |
43,3408 |
33,3313 |
4 |
0.004 |
43,9419 |
35,6918 |
5 |
0.005 |
44,5125 |
37,8995 |
6 |
0.006 |
45,0525 |
39,9593 |
7 |
0.007 |
45,5618 |
41,8760 |
8 |
0.008 |
46,0405 |
43,6543 |
9 |
0.009 |
46,4886 |
45,2987 |
10 |
0.01 |
46,9060 |
46,8138 |
11 |
0.011 |
47,2928 |
48,2040 |
12 |
0.012 |
47,6490 |
49,4735 |
13 |
0.013 |
47,9748 |
50,6265 |
……………………………………………………………………. |
|||
96 |
0.096 |
4,6451 |
-0,7210 |
97 |
0.097 |
3,8835 |
-1,3756 |
98 |
0.098 |
3,1308 |
-2,0130 |
99 |
0.099 |
2,3875 |
-2,6333 |
100 |
0.1 |
1,6539 |
-3,2363 |
101 |
0.101 |
0,9304 |
-3,8220 |
102 |
0.102 |
0,2174 |
-4,3903 |
103 |
0.103 |
-0,4848 |
-4,9412 |
104 |
0.104 |
-1,1758 |
-5,4748 |
105 |
0.105 |
-1,8553 |
-5,9909 |
106 |
0.106 |
-2,5229 |
-6,4896 |
107 |
0.107 |
-3,1784 |
-6,9710 |
108 |
0.108 |
-3,8214 |
-7,8818 |
109 |
0.109 |
-4,4517 |
-8,3113 |
110 |
0.11 |
-5,0689 |
-8,7237 |
…………………………………………………………………… |
|||
195 |
0.195 |
-5,0008 |
-1,3626 |
196 |
0.196 |
-4,5615 |
-1,0508 |
197 |
0.197 |
-4,1198 |
-0,7397 |
198 |
0.198 |
-3,6758 |
-0,4295 |
199 |
0.199 |
-3,2301 |
-0,1202 |
200 |
0.2 |
-2,7828 |
0,1878 |
201 |
0.201 |
-2,3343 |
0,4945 |
202 |
0.202 |
-1,8848 |
0,7998 |
203 |
0.203 |
-1,4348 |
1,1035 |
204 |
0.204 |
-0,9843 |
1,4054 |
205 |
0.205 |
-0,5339 |
1,7055 |
206 |
0.206 |
-0,0837 |
2,0036 |
207 |
0.207 |
0,3659 |
2,2996 |
208 |
0.208 |
0,8147 |
2,5933 |
209 |
0.209 |
1,2624 |
2,8847 |
………………………………………………………………………. |
|||
378 |
0.378 |
0,5258 |
4,7367 |
379 |
0.379 |
0,4254 |
4,6504 |
380 |
0.380 |
0,3295 |
4,5656 |
381 |
0.381 |
0,2383 |
4,4824 |
382 |
0.382 |
0,1517 |
4,4007 |
383 |
0.383 |
0,0697 |
4,3206 |
384 |
0.384 |
-7.5655*10^-3 |
4.2420 |
385 |
0.385 |
-0,0802 |
4,1651 |
386 |
0.386 |
-0,1482 |
4,0899 |
387 |
0.387 |
-0,2115 |
4,0162 |
388 |
0.388 |
-0,2702 |
3,9443 |
389 |
0.389 |
-0,3243 |
3,8740 |
390 |
0.390 |
-0,3737 |
3,8054 |
391 |
0.391 |
-0,4185 |
3,7385 |
392 |
0.392 |
-0,4587 |
3,6734 |
…………………………………………………………………… |
|||
412 |
0.412 |
-0,3470 |
2,7440 |
413 |
0.413 |
-0,2992 |
2,7165 |
414 |
0.414 |
-0,2477 |
2,6907 |
415 |
0.415 |
-0,1927 |
2,6668 |
416 |
0.416 |
-0,1343 |
2,6446 |
417 |
0.417 |
-0,0725 |
2,6242 |
418 |
0.418 |
-7.3574*10^-3 |
2.6055 |
419 |
0.419 |
0,0610 |
2,5887 |
420 |
0.420 |
0,1325 |
2,5735 |
421 |
0.421 |
0,2072 |
2,5601 |
422 |
0.422 |
0,2848 |
2,5485 |
423 |
0.423 |
0,3653 |
2,5385 |
424 |
0.424 |
0,4487 |
2,5303 |
425 |
0.425 |
0,5348 |
2,5237 |
426 |
0.426 |
0,6236 |
2,5188 |
На рис.1 видим, что на промежутке, примерно равном [0,0.53] график P(x) довольно близко подходит к графику исходной функции у, а на промежутке [0.53,1.2] расхождение усиливается. Это и обусловило такую большую погрешность. Если мы возьмем многочлен степени не 69, а 68, получим погрешность , что намного больше δ69. Если же возьмем степень 70, то получим погрешность что сравнительноненамного меньшеδ69. Выше 70-й степени начинаются сильные расхождения на промежутке [0.53,1.2], и это приведет к гораздо большей погрешности (порядка 10:4 и выше).
(Приведем 1-е 14 и последние 15 точек)
i |
xi |
yi |
P(x) |
0 |
0 |
41,3553 |
14,7525 |
1 |
0,001 |
42,0474 |
18,9603 |
2 |
0,002 |
42,7093 |
22,9133 |
3 |
0,003 |
43,3408 |
26,6205 |
4 |
0,004 |
43,9419 |
30,0904 |
5 |
0,005 |
44,5125 |
33,3313 |
6 |
0,006 |
45,0525 |
36,3514 |
7 |
0,007 |
45,5618 |
39,1586 |
8 |
0,008 |
46,0405 |
41,7606 |
9 |
0,009 |
46,4886 |
44,1651 |
10 |
0,01 |
46,9060 |
46,3794 |
11 |
0,011 |
47,2928 |
48,4106 |
12 |
0,012 |
47,6490 |
50,2658 |
13 |
0,013 |
47,9748 |
51,9517 |
……………………………………………………………………….. |
|||
1186 |
1,186 |
5,8896 |
3,3143 |
1187 |
1,187 |
5,8920 |
3,6244 |
1188 |
1,188 |
5,8945 |
3,9872 |
1189 |
1,189 |
5,8970 |
4,4064 |
1190 |
1,19 |
5,8995 |
4,8859 |
1191 |
1,191 |
5,9021 |
5,4299 |
1192 |
1,192 |
5,9048 |
6,0425 |
1193 |
1,193 |
5,9074 |
6,7282 |
1194 |
1,194 |
5,9101 |
7,4918 |
1195 |
1,195 |
5,9129 |
8,3380 |
1196 |
1,196 |
5,9156 |
9,2719 |
1197 |
1,197 |
5,9184 |
10,2988 |
1198 |
1,198 |
5,9212 |
11,4242 |
1199 |
1,199 |
5,9241 |
12,6539 |
1200 |
1,2 |
5,9241 |
13,9939 |
Как видим, погрешность очень велика. Очевидно, невозможно интерполировать нашу функцию на данном интервале с достаточно большим приближением одним многочленом. Поэтому разбиваем интервал на 2 части и для каждой подбираем свой интерполяционный многочлен.
Все множество точек – 1200 – делим на три по 400.
Получаем три интервала: [0,0.4], [0.401,0.8], [0.801,1.2].
Интерполируем функцию на интервале [0,400].
Примем m = 19.
Матрица коэффициентов системы уравнений довольно громоздка, поэтому не будем ее расписывать и перейдем сразу к решению. Решая методом Гаусса-Зейделя, получаем:
Приведем 1-е 14 и последние 15 точек.
i |
xi |
yi |
P(x) |
0 |
0 |
41,3553 |
41,3550 |
1 |
0,001 |
42,0474 |
42,0473 |
2 |
0,002 |
42,7093 |
42,7093 |
3 |
0,003 |
43,3408 |
43,3409 |
4 |
0,004 |
43,9419 |
43,9421 |
5 |
0,005 |
44,5125 |
44,5127 |
6 |
0,006 |
45,0525 |
45,0527 |
7 |
0,007 |
45,5618 |
45,5621 |
8 |
0,008 |
46,0405 |
46,0407 |
9 |
0,009 |
46,4886 |
46,4888 |
10 |
0,01 |
46,9060 |
46,9061 |
11 |
0,011 |
47,2928 |
47,2929 |
12 |
0,012 |
47,6490 |
47,6491 |
13 |
0,013 |
47,9748 |
47,9748 |
|
|
|
|
386 |
0,386 |
-0,1482 |
-0,1482 |
387 |
0,387 |
-0,2115 |
-0,2115 |
388 |
0,388 |
-0,2702 |
-0,2702 |
389 |
0,389 |
-0,3243 |
-0,3242 |
390 |
0,39 |
-0,3737 |
-0,3737 |
391 |
0,391 |
-0,4185 |
-0,4185 |
392 |
0,392 |
-0,4587 |
-0,4587 |
393 |
0,393 |
-0,4944 |
-0,4944 |
394 |
0,394 |
-0,5254 |
-0,5255 |
395 |
0,395 |
-0,5520 |
-0,5520 |
396 |
0,396 |
-0,5740 |
-0,5741 |
397 |
0,397 |
-0,5916 |
-0,5917 |
398 |
0,398 |
-0,6047 |
-0,6048 |
399 |
0,399 |
-0,6135 |
-0,6135 |
400 |
0,4 |
-0,6179 |
-0,6178 |
Посмотрим, нельзя ли обеспечить лучшую точность. Повысим степень многочлена.
m = 20
– ошибка незначительно меньше. Оптимальная степень многочлена для нашей задачи – 19. (При степени 18 получаем ошибку
, котораясовершенно не удовлетворяет нашим условиям).
График полученного многочлена приведен на рис.2. Как видим, он практически совпадает с графиком функции на [0,0.4]Рис.2
Интерполирование на отрезке [0.401,0.8]
Сразу возьмем степень m = 25:
Приведем 1-е 15 и последние 15 точек.
i |
xi |
yi |
P(x) |
401 |
0,401 |
-0,6179 |
-0,6133 |
402 |
0,402 |
-0,6138 |
-0,6099 |
403 |
0,403 |
-0,6052 |
-0,6023 |
404 |
0,404 |
-0,5926 |
-0,5903 |
405 |
0,405 |
-0,5758 |
-0,5742 |
406 |
0,406 |
-0,5549 |
-0,5539 |
407 |
0,407 |
-0,5300 |
-0,5295 |
408 |
0,408 |
-0,5011 |
-0,5011 |
409 |
0,409 |
-0,4683 |
-0,4688 |
410 |
0,41 |
-0,4316 |
-0,4325 |
411 |
0,411 |
-0,3912 |
-0,3923 |
412 |
0,412 |
-0,3470 |
-0,3484 |
413 |
0,413 |
-0,2992 |
-0,3008 |
414 |
0,414 |
-0,2477 |
-0,2496 |
415 |
0,415 |
-0,1927 |
-0,1947 |
……………………………………………………………………. |
|||
786 |
0,786 |
6,9821 |
6,9821 |
787 |
0,787 |
6,9765 |
6,9765 |
788 |
0,788 |
6,9704 |
6,9703 |
789 |
0,789 |
6,9636 |
6,9635 |
790 |
0,79 |
6,9564 |
6,9561 |
791 |
0,791 |
6,9486 |
6,9483 |
792 |
0,792 |
6,9402 |
6,9399 |
793 |
0,793 |
6,9313 |
6,9310 |
794 |
0,794 |
6,9219 |
6,9216 |
795 |
0,795 |
6,9120 |
6,9117 |
796 |
0,796 |
6,9017 |
6,9014 |
797 |
0,797 |
6,8908 |
6,8907 |
798 |
0,798 |
6,8795 |
6,8795 |
799 |
0,799 |
6,8677 |
6,8681 |
800 |
0,8 |
6,8554 |
6,8563 |
– минимальная сумма квадратов разностей д/многочлена 25-й степени.
Проверим, не даст ли многочлен степени 26 лучшую точность:
m = 26.
Считаем погрешность. Наименьшая сумма квадратов д/многочлена 26 степени равна:
. Ошибка приблизительно такая же и даже чуть больше из-за распространения погрешности.
Проверяя, не будет ли оптимальным многочлен степени 24, получим ошибку
, которая больше полученной для 25-й степени.
Таким образом, оптимальный многочлен, описывающий функцию на данном интервале, имеет степень 25.
График полученного многочлена приведен на рис.3. Как видим, он практически совпадает с графиком функции на [0.401,0.8]
Рис.3