Студопедия

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

КАТЕГОРИИ:

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






ПРИЛОЖЕНИЕ 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.ru - Мои Лекции - 2015-2020 год. (0.017 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал