Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
63
Добавлен:
02.05.2014
Размер:
553.98 Кб
Скачать

41. Вывод графиков

На основании каких-либо произведённых расчётов бывает очень полезно эти результаты представить еще и графически. Это позволит оценить правильность расчёта или быстро определить, к примеру, экстремальные точки.

Программ вывода графиков может быть великое множество, так как их можно организовать по-разному, начиная от расположения графика (вертикально, горизонтально) и заканчивая масштабированием графика (с помощью одной программы можно построить график, например для значений 1…10 и для значений 1000…100000).

К сожалению, простейшая программа на языке ФОРТРАН позволяет рисовать график только отдельными символами и график получается точечным с большими промежутками между точками. При очень высоких требованиях к выводимым графикам необходимо обращаться к Fortran Power Station дляWindowsили к другим языкам программирования, например ПАСКАЛЬ или к языкам, которые разрабатывают приложения подWINDOWS– этоDELPHI, С++ и др.

Вывод простейших графиков рассмотрим на примере задачи.

Задача:

Написать подпрограмму, которая выводит в виде графика одномерный массив Х размерностью N.

Основные положения подпрограммы:

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

  2. Каждый элемент массива отпечатаем в виде числа и отобразим текстовым символом “*” на экране дисплея в той же строке что и число. Месторасположение символа “*” будет зависеть от величины текущего значения элемента массива и будет занимать на экране крайнее правое положение при максимальном значении и крайнее левое положение при минимальном.

  3. Учитывая, что ширина вывода на экран составляет 80 позиций, и что одну позицию при выводе мы вынуждены пропустить, что для вывода самого числа по спецификации G10.4 используем 10 позиций, определяем, что для вывода символа “*” остается 69 позиций.

  4. Чтобы символ “*” попадал в поле с 1 по 69 позицию, выведем формулу номера позиции символа “*” в зависимости от текущего значения элемента массива.

5. Печатая число и символ “*” столько раз, сколько имеется элементов массива, получим его график.

В подпрограмме надо найти максимальное и минимальное значение, организовать цикл n-ное количество раз. В этом цикле в соответствии со значениемвтек определить номер позиции, в которую надо поместить символ “*”. Символ “*” нужно поместить в текстовый массив из 69 позиций, который состоит из пробелов и одного символа “*”. Причём номер позиции, в которой размещается символ “*”, зависит отвтек. Для удобства анализа графика отпечатаем ось в виде символа“|”

SUBROUTINE GRAF(X,N)

В подпрограмму передаётся массив Х размерностью N, значения которого используются для построения графика.

DIMENSION X(N)

CHARACTER*1 S(69),PROB,ZW,OS

DATA PROB,ZW,OS/’ ’,’*’,’|’/

В текстовую переменные помещаем: PROB – пробел, ZW – символ “ * ”, OS – символ “ |”.

XMA=X(1)

XMI=X(1)

DO 2 I=1,N

XMA=AMAX1(X(I),XMA)

  1. XMI=AMIN1(X(I),XMI)

A=XMA–XMI

DO 5 I=1,N

DO 6 J=1,69

  1. S(J)=PROB

Заполняем текстовый массивS пробелами. Можно просто записать S(J)=’ ‘.

NZW=(X(I)-XMI)/A*68+1

NOS=–XMI/A*68+1

S(NOS)=OS

S(NZW)=ZW

Элементы массива S, номера которых рассчитаны, заменяются символами “ * ” и “ |”.

WRITE (6,7) X(I),S

  1. FORMAT (1X,G10.4,69A1)

  1. CONTINUE

RETURN

END

Недостатки программы вывода графиков:

Внутри цикла происходит N-ное количество раз определение номера позиции оси, что является нерациональным. Этот оператор нужно вынести до начала цикла. На каждом цикле рабочий массив заполняется пробелами. Можно это сделать однократно до начала цикла, а после печати в элемент массива , где была “*” записывать пробел. В программе желательно было бы осуществить вывод координатной сетки. Возможно написание одной подпрограммы для вывода одного, двух, трех графиков в одних координатах.Вам предоставляется возможность самостоятельно усовершенствовать подпрограмму и проявить свои способности.

Задача:

Использовать подпрограмму GRAFдля вывода графика тока для цепи:

Получить 40 точек и вывести.

DIMENSION TOK(2000)

WRITE (6,*)’Введите значения Um,R,F,L

READ (5,*) Um,R,F,AL

XL=2.*3.14*F*АL

Z=SQRT(XL**2+R*R)

T=0.

DT=3.14/40

DO 9 I=1,40

TOK(I)=Um*SIN(2.*3.14*F*T)*EXP(-T)

9 T=T+DT

CALL GRAF(TOK,40)

Идёт обращение к программе GRAF, куда засылается массив данных ТОК размерностью 40 элементов, в этой программе строится график на основании значений элементов массива ТОК.

STOP

END

На экране дисплея появится график:

.0000 *

-94.60 * |

-154.8 * |

-172.6 * |

-150.2 * |

-98.29 * |

-32.54 * |

30.75 | *

78.15 | *

101.6 | *

99.56 | *

76.11 | *

39.48 | *

-.4268 *

-34.44 * |

-56.01 * |

-62.25 * |

-54.01 * |

-35.21 * |

-11.47 * |

11.32 | *

28.33 | *

36.70 | *

35.86 | *

27.33 | *

14.08 | *

-.3055 *

-12.54 * |

-20.26 * |

-22.45 * |

-19.43 * |

-12.61 * |

-4.042 *|

4.164 |*

10.27 | *

13.25 | *

12.92 | *

9.813 | *

5.023 | *

-.1648 *

Соседние файлы в папке Программирование на Фортране