Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
ПРИЛОЖЕНИЕ 1. Исходный текст главной программы
Исходный текст главной программы use msflib! подключение модуля стандартных процедур implicit none! указание обязательного объявления переменых ! ----------------------------------------------------------- integer, parameter:: fi=1! устройство ввода integer, parameter:: fpw=2! устройство вывода integer, parameter:: MAX=100! максимальное количество точек integer, parameter:: NT=150! количество точек кривой полинома real(8), parameter:: D_X=0.05! припуск на диапазон рисования real(8), parameter:: D_Y=0.05! припуск на диапазон real(8) XN, XK, YN, YK, HX! границы и шаг изменения Х графика integer i! счетчик точек полинома real(8) Xmin, Xmax! минимальный и максимальный элементы X real(8) Ymin, Ymax! минимальный и максимальный элементы Y real(8):: X(0: MAX), Y(0: MAX)! таблица данных X(N), Y(N) real(8):: C(0: MAX)! массив коэффициентов аппрокс.полинома Pm(x) real(8):: A(0: MAX, 0: MAX)! матрица коэффициентов системы уравнений integer N! количество точек табл. функции (i=0..N-1) ! ----------------------------------------------------------- logical res! логический результат графических функций integer(2) XE, YE! XE, YE - размеры экрана в пикселях INTEGER(2) status! целый результат графических функций logical(2) finv /.true./! Ось у направлена снизу вверх type(windowconfig) wc! структура параметров окна ! ----------------------------------------------------------- open(unit=fi, file='DZ_V6.txt')! открытие файла данных read(fi, *) n! чтение количества узлов аппроксимации do i=0, n-1 read(fi, *) X(i), Y(i)! чтение координат узлов Enddo close(fi)! закрытие файла ! ----------------------------------------------------------- ! Автоматическая настройка конфигурации окна data wc.numxpixels, wc.numypixels, wc.numtextcols, & wc.numtextrows, wc.numcolors, wc.fontsize / 6*-1 / wc.title = " Интерполяционный многочлен Лагранжа" C res = getwindowconfig(wc)! Читаем параметры видеоокна XE = wc.numxpixels! numxpixels - число пикселей по оси х YE = wc.numypixels! numypixels - число пикселей по оси у status = RECTANGLE($GFILLINTERIOR, INT2(0), INT2(0), XE, YE) status = setcolor(1_2)! цвет рамки status = RECTANGLE($GBORDER, XE/4_2-20, YE/4_2-20, & 3_2*XE/4_2+20, 3_2*YE/4_2+20) call axis()! Рисуем оси координат ! Задание видового порта размером XE/2 * YE/2 в центре видеоокна call setviewport(XE/4_2, YE/4_2, 3_2*XE/4_2, 3_2*YE/4_2) ! Оконная система координат (ОСК) ! ----------------------------------------------------------- Xmin=MinVal(X); Xmax=MaxVal(X)! поиск минимума и максимума Х Ymin=MinVal(Y); Ymax=MaxVal(Y)! поиск минимума и максимума Y XN=Xmin-D_X! левая граница Х графика XK=Xmax+D_X! правая граница Х графика YN=Ymin-D_Y! левая граница Y графика YK=Ymax+D_Y! правая граница Y графика status = setwindow(finv, XN, YN, XK, YK) call curve()! Рисуем график ! ----------------------------------------------------------- ПРИЛОЖЕНИЕ 2 Секция CONTAINS с определением внутренних подпрограмм ! ****************************************************************** subroutine axis()! Рисуем оси координат Type(xycoord) xy status = setcolor(2_2)! цвет осей координат call moveto(int2(XE/4 - 10), int2(YE/2), xy) status = lineto(3_2*XE/4_2 + 10_2, YE/2_2)! Ось х call moveto(int2(XE/2), int2(YE/4 - 10), xy) status = lineto(XE/2_2, 3_2*YE/4_2 + 10_2)! Ось y
|