Написание программы на языке Фортран, вычисляющей таблицу значений заданной функции двух переменных (Лабораторная работа № 2), страница 2

 0.0000E+00| 0.1700E+39

-------------------------------------------------------------------------------

 0.1000E-06| 0.5730E+09

-------------------------------------------------------------------------------

Так как значения аргументов в двоичном представлении являются периодическими дробями, изначально существует некоторая погрешность их округления. Во время  исполнения программы (с увеличением аргументов на шаг), эта погрешность увеличивается. Поэтому нуля как такового мы не получим, а получим лишь близкое к нему значение. Чтобы его обнаружить, будем сравнивать значения y и sy.

     В качестве бесконечности возьмем значение 1.7e+38.

2) Невидимый шаг

xmin=-1.009e-7; xmax=1.001e-7; sx=1e-11; ymin=0; ymax=0; sy=0.

X|Y        | 0.0000E+00

----------------------------------------------------------------------------------------------------------------

-0.1009E-06|-0.5681E+09

----------------------------------------------------------------------------------------------------------------

-0.1008E-06|-0.5687E+09

----------------------------------------------------------------------------------------------------------------

-0.1007E-06|-0.5693E+09

----------------------------------------------------------------------------------------------------------------

-0.1006E-06|-0.5698E+09

----------------------------------------------------------------------------------------------------------------

-0.1005E-06|-0.5704E+09

----------------------------------------------------------------------------------------------------------------

В этих тестах мы видим, что при одинаковых значениях аргумента значение функции разное. Это происходит из-за того что заданный шаг очень маленький и при отображении аргументов с четырьмя знаками в мантиссе он просто незаметен, вследствие чего неравные аргументы отображаются в таблице как равные. Чтобы предотвратить возникновение этого явления, вводим функцию, которая записывает текущее значение аргумента и следующее значение в две строки (в формате G11.4) и сравнивает их. Если они равны, не выводим текущее значение (и соответствующую ему функцию) в таблицу.

3) Диагональ бесконечностей

xmin=-0.01; xmax=0.05; sx=0.01; ymin=-0.05; ymax=0.01; sy=0.01.

X|Y        |-0.5000E-01|-0.4000E-01|-0.3000E-01|-0.2000E-01|-0.1000E-01| 0.0000E+00| 0.1000E-01

----------------------------------------------------------------------------------------------------------------

-0.1000E-01| -954.9    | -1146.    | -1432.    | -1910.    | -2865.    | -5730.    | 0.1700E+39

--------------------------------------------------------------------------------------------------------------------------

 0.0000E+00| -1146.    | -1432.    | -1910.    | -2865.    | -5730.    | 0.1700E+39|  5730.   

--------------------------------------------------------------------------------------------------------------------------

 0.1000E-01| -1432.    | -1910.    | -2865.    | -5730.    | 0.1700E+39|  5730.    |  2865.   

--------------------------------------------------------------------------------------------------------------------------

 0.2000E-01| -1910.    | -2865.    | -5730.    | 0.1700E+39|  5730.    |  2865.    |  1910.   

--------------------------------------------------------------------------------------------------------------------------

 0.3000E-01| -2865.    | -5730.    | 0.1700E+39|  5730.    |  2865.    |  1910.    |  1432.   

--------------------------------------------------------------------------------------------------------------------------

 0.4000E-01| -5730.    | 0.1700E+39|  5730.    |  2865.    |  1910.    |  1432.    |  1146.   

--------------------------------------------------------------------------------------------------------------------------

 0.5000E-01| 0.1700E+39|  5730.    |  2865.    |  1910.    |  1432.    |  1146.    |  954.9   

--------------------------------------------------------------------------------------------------------------------------