Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
NMM_Manual_N11.doc
Скачиваний:
7
Добавлен:
27.10.2018
Размер:
779.26 Кб
Скачать

Пример выполнения лабораторного задания на Fortran

Воспользуемся уже разработанными компонентами из лабораторных работ № 8 и № 9, а в качестве исследуемой функции возьмем зависимость

, . (11.22)

Стартуем среду разработки MS Visual Studio. Создадим новый проект LabTask_11f и сгенерируем в нем файл основной программной единицы – main_11.f90.

Включим в проект файл y(x)_dy(x).f90 со следующими программными единицами, представляющими собой функции (11.22):

Реализуем алгоритм (11.15) интерполирования по Лагранжу для производной от таблично заданной функции следующим образом:

Здесь переменная xx есть исследуемое значение аргумента .

Обозначения всех остальных переменных выполнены максимально близко к обозначениям, принятым в выше приведенных формулах.

Алгоритмы (11.18)–(11.21) интерполирования по Ньютону объединим в рамках одной программной единицы:

Объединим интерфейсы к разработанным программным единицам в рамках одного модуля:

Раздел описаний основной программной единицы может быть следующим:

Основные действия программы указаны в комментариях, поэтому мы предоставляем Вам возможность самостоятельно разобраться в сути производимых преобразований над числовыми данными:

Выполнение данной программной единицы требует ввода данных, например:

Таблица результатов (файл Table_dy.txt) интерполирования по Лагранжу для производной функции (11.22) будет иметь следующий вид:

n = 21 m = 7

x y(x) y'(x) Ln'(x) abs_err otn_err

1.0000 2.439737 -10.460448 -10.466503 0.006056 0.058 %

1.0238 2.145598 -14.126488 -14.125279 0.001209 0.009 %

1.0476 1.773570 -16.972276 -16.971319 0.000957 0.006 %

1.0714 1.345186 -18.838069 -18.838239 0.000170 0.001 %

1.0952 0.885142 -19.619399 -19.619747 0.000348 0.002 %

1.1190 0.419897 -19.272966 -19.272930 0.000036 0.000 %

1.1429 -0.023813 -17.819080 -17.818854 0.000226 0.001 %

1.1667 -0.420483 -15.340516 -15.340512 0.000005 0.000 %

1.1905 -0.747283 -11.977845 -11.978087 0.000242 0.002 %

1.2143 -0.985341 -7.921499 -7.921496 0.000002 0.000 %

1.2381 -1.120807 -3.401028 -3.401374 0.000347 0.010 %

1.2619 -1.145637 1.327850 1.327850 0.000000 0.000 %

1.2857 -1.058046 5.997679 5.997304 0.000375 0.006 %

1.3095 -0.862603 10.344354 10.344351 0.000003 0.000 %

1.3333 -0.569982 14.122023 14.121704 0.000319 0.002 %

1.3571 -0.196350 17.116960 17.116955 0.000005 0.000 %

1.3810 0.237539 19.159618 19.159425 0.000193 0.001 %

1.4048 0.707520 20.134202 20.134196 0.000006 0.000 %

1.4286 1.187377 19.985196 19.985172 0.000024 0.000 %

1.4524 1.650325 18.720498 18.720493 0.000006 0.000 %

1.4762 2.070521 16.410976 16.411127 0.000151 0.001 %

1.5000 2.424524 13.186463 13.186460 0.000004 0.000 %

1.5238 2.692615 9.228438 9.228730 0.000292 0.003 %

1.5476 2.859913 4.759781 4.759780 0.000001 0.000 %

1.5714 2.917213 0.032199 0.032568 0.000368 1.130 %

1.5952 2.861505 -4.687973 -4.687972 0.000001 0.000 %

1.6190 2.696149 -9.134808 -9.134445 0.000362 0.004 %

1.6429 2.430680 -13.057780 -13.057776 0.000004 0.000 %

1.6667 2.080273 -16.235910 -16.235634 0.000276 0.002 %

1.6905 1.664887 -18.490230 -18.490224 0.000006 0.000 %

1.7143 1.208140 -19.693879 -19.693751 0.000128 0.001 %

1.7381 0.735975 -19.779267 -19.779261 0.000006 0.000 %

1.7619 0.275198 -18.741884 -18.741932 0.000048 0.000 %

1.7857 -0.148035 -16.640556 -16.640551 0.000005 0.000 %

1.8095 -0.509694 -13.594127 -13.594341 0.000214 0.002 %

1.8333 -0.789229 -9.774757 -9.774754 0.000003 0.000 %

1.8571 -0.970728 -5.398202 -5.398533 0.000332 0.006 %

1.8810 -1.043821 -0.711645 -0.711714 0.000069 0.010 %

1.9048 -1.004256 4.020248 4.020814 0.000567 0.014 %

1.9286 -0.854145 8.530264 8.530586 0.000322 0.004 %

1.9524 -0.601842 12.563720 12.561988 0.001732 0.014 %

1.9762 -0.261473 15.892830 15.890370 0.002460 0.015 %

2.0000 0.147863 18.329556 18.341838 0.012282 0.067 %

Другая таблица, для интерполирования по Ньютону, будет содержать следующие данные:

x y(x) y'(x) Nt'(x) abs_err otn_err

1.0000 2.439737 -10.460448 -10.466503 0.006056 0.058 %

1.0238 2.145598 -14.126488 -14.125279 0.001209 0.009 %

1.0476 1.773570 -16.972276 -16.971319 0.000957 0.006 %

1.0714 1.345186 -18.838069 -18.835940 0.002129 0.011 %

1.0952 0.885142 -19.619399 -19.617813 0.001585 0.008 %

1.1190 0.419897 -19.272966 -19.270390 0.002576 0.013 %

1.1429 -0.023813 -17.819080 -17.817218 0.001861 0.010 %

1.1667 -0.420483 -15.340516 -15.338067 0.002449 0.016 %

1.1905 -0.747283 -11.977845 -11.976122 0.001723 0.014 %

1.2143 -0.985341 -7.921499 -7.919721 0.001777 0.022 %

1.2381 -1.120807 -3.401028 -3.399826 0.001201 0.035 %

1.2619 -1.145637 1.327850 1.328560 0.000710 0.053 %

1.2857 -1.058046 5.997679 5.998091 0.000412 0.007 %

1.3095 -0.862603 10.344354 10.343839 0.000515 0.005 %

1.3333 -0.569982 14.122023 14.121555 0.000468 0.003 %

1.3571 -0.196350 17.116960 17.115335 0.001625 0.009 %

1.3810 0.237539 19.159618 19.158373 0.001245 0.006 %

1.4048 0.707520 20.134202 20.131828 0.002374 0.012 %

1.4286 1.187377 19.985196 19.983451 0.001744 0.009 %

1.4524 1.650325 18.720498 18.717904 0.002595 0.014 %

1.4762 2.070521 16.410976 16.409120 0.001856 0.011 %

1.5000 2.424524 13.186463 13.184225 0.002238 0.017 %

1.5238 2.692615 9.228438 9.226884 0.001554 0.017 %

1.5476 2.859913 4.759781 4.760035 0.000254 0.005 %

1.5714 2.917213 0.032199 0.030950 0.001249 4.036 %

1.5952 2.861505 -4.687973 -4.686562 0.001411 0.030 %

1.6190 2.696149 -9.134808 -9.141842 0.007034 0.077 %

1.6429 2.430680 -13.057780 -13.055525 0.002255 0.017 %

1.6667 2.080273 -16.235910 -16.247165 0.011254 0.069 %

1.6905 1.664887 -18.490230 -18.487633 0.002596 0.014 %

1.7143 1.208140 -19.693879 -19.706850 0.012970 0.066 %

1.7381 0.735975 -19.779267 -19.776907 0.002361 0.012 %

1.7619 0.275198 -18.741884 -18.753684 0.011800 0.063 %

1.7857 -0.148035 -16.640556 -16.638956 0.001599 0.010 %

1.8095 -0.509694 -13.594127 -13.602132 0.008005 0.059 %

1.8333 -0.789229 -9.774757 -9.774275 0.000482 0.005 %

1.8571 -0.970728 -5.398202 -5.400630 0.002428 0.045 %

1.8810 -1.043821 -0.711645 -0.712387 0.000742 0.104 %

1.9048 -1.004256 4.020248 4.023936 0.003689 0.092 %

1.9286 -0.854145 8.530264 8.528463 0.001801 0.021 %

1.9524 -0.601842 12.563720 12.572705 0.008985 0.071 %

1.9762 -0.261473 15.892830 15.890370 0.002460 0.015 %

2.0000 0.147863 18.329556 18.341838 0.012282 0.067 %

Анализ двух представленных таблиц свидетельствует в пользу алгоритма по Лагранжу. Причина этого – принцип размещения значения «посередине» частичного интервала интерполирования , реализованный нами в функции dLn().

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]