Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РР-2. Метод наименьших квадратов (FORTRAN).doc
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
219 Кб
Скачать
☆

Исходный текст главной программы

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