Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






ПРИЛОЖЕНИЕ 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


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.008 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал