Вероятностные процессы и математическая статистика в автоматизированных системах

Тип работы:
Курсовая
Предмет:
Физико-математические науки


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Министерство образования и науки Украины

Кафедра КИТ

«ВЕРОЯТНОСТНЫЕ ПРОЦЕССЫ И МАТЕМАТИЧЕСКАЯ СТАТИСТИКА В АВТОМАТИЗИРОВАННЫХ СИСТЕМАХ»

2008

РЕФЕРАТ

Пояснительная записка к расчетно-графической работе: 29 стр., 9 рис., 1 прил., 5 источников.

Объект исследования — оптимальный предел прочности алюминиевых деформируемых сплавов при испытании на растяжение.

Метод исследования — применение математико-статистических методов в автоматизированных системах, реализация программ статистической обработки эксперимента на ЭВМ.

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

ДЕФОРМИРУЕМЫЙ АЛЮМИНИЕВЫЙ СПЛАВ, ЛИТИЙ, ТЕМПЕРАТУРА СТАРЕНИЯ, ВРЕМЯ СТАРЕНИЯ, МНОГОФАКТОРНЫЙ ЭКСПЕРИМЕНТ.

СОДЕРЖАНИЕ

Введение

1 Постановка задачи

2 Этапы планирования и статической обработки результатов эксперимента для построения модели 2-го порядка

2.1 Построение модели плана II порядка

  • 2.2 Кодирование факторов
    • 2.3 Составление план — матрицы
    • 2.4 Проверка воспроизводимости опытов
    • 2.5 Расчет коэффициентов регрессии
    • 2.6 Определение значимости коэффициентов
    • 2.7 Проверка адекватности модели
  • 3 Выбор и описание метода условной оптимизации
    • 3.1 Выбор метода условной оптимизации
    • 3.2 Описание метода условной оптимизации (Фиако-МакКормика)
  • 4 Описание программы
    • 4.1 Общие сведения
    • 4.2 Функциональное назначение
    • 4.3 Описание логической структуры программы
    • 4.4 Используемые технические средства
    • 4.5 Вызов и загрузка
    • 4.6 Входные данные
    • 4.7 Выходные данные
  • 5 Результаты обработки данных эксперимента
  • 6 Графики зависимости отклика
  • 7 Кривые равного выхода
  • Заключение
  • Список использованных источников
  • Приложение

Введение

Развитие современной техники связано с созданием новых и постоянным совершенствованием существующих технологических процессов. Основой их разработки и оптимизации является эксперимент. Заметное повышение эффективности экспериментальных исследований и инженерных разработок достигается использованием математических методов планирования экспериментов. Использование математико-статистических методов при постановке задач. В процессе экспериментирования и при обработке полученных данных существенно сокращает сроки решения, снижает затраты на исследования и повышает качество полученных результатов.

Встречающиеся на практике реальные задачи весьма разнообразны. Достаточно грубо их можно разделить на три основных задачи:

1 Выявление количественных зависимостей между параметрами процесса — задачи описания;

2 Определение оптимальных условий протекания процесса — экстремальные задачи;

3 Выбор оптимального состава многокомпонентных смесей.

Часто, приступая к изучению какого-либо процесса экспериментатор не имеет исчерпывающих сведений о механизме процесса. Можно только указать параметры определяющие условия протекания процесса, и, возможно требования к его результатам. Поставленная проблема является задачей кибернетики. Действительно, если считать кибернетику «наукой, изучающей системы любой природы, способные воспринимать, хранить и перерабатывать информацию для целей оптимального управления» [1], то такую систему можно представить в виде черного ящика.

Черный ящик — объект исследования, имеющий (k+p) входов и m выходов.

  • X — управляемые параметры, Z — неуправляемые параметры.
  • Зависимость между выходными параметрами (откликом) и входными параметрами (факторами) называется функцией отклика.
  • Математическая запись функции отклика представлена в виде формулы (1):
  • (1)
  • Этому уравнению в многомерном пространстве соответствует гипперповерхность, которая называется поверхностью отклика, а само пространство — факторным пространством.
  • Эксперимент можно проводить по разному. В случае, когда исследователь наблюдает за каким-то неуправляемым процессом, не вмешиваясь в него, или выбирает экспериментальные точки интуитивно, на основании каких-то привходящих обстоятельств, эксперимент считают пассивным. В настоящее время пассивный эксперимент считается неэффективным.
  • Гораздо более продуктивно проводится эксперимент, когда исследователь применяет статистические методы на всех этапах исследования, и, прежде всего, перед постановкой опытов, разрабатывая схему эксперимента, а также в процессе экспериментирования, при обработке результатов и после эксперимента, принимая решение о дальнейших действиях. Такой эксперимент считают активным, и он предполагает планирование эксперимента.
  • Под планированием эксперимента понимают процедуру выбора числа и условий проведения опытов, необходимых и достаточных для решения поставленной задачи с требуемой точностью. Основные преимущества активного эксперимента связаны с тем, что он позволяет:
  • Минимизировать общее число опытов;
  • Выбирать четкие логически обоснованные процедуры, последовательно выполняемые экспериментатором при проведении исследования;
  • Использовать математический аппарат, формализующий многие действия экспериментатора;
  • Одновременно варьировать всеми переменными и оптимально использовать факторное пространство;
  • Организовать эксперимент таким образом, чтобы выполнялись многие исходные предпосылки регрессионного анализа;
  • Получать математические модели, имеющие лучшие в некотором смысле свойства по сравнению с моделями, построенными из пассивного эксперимента;
  • Рандомизировать условия опытов, то есть многочисленные мешающие факторы превратить в случайные величины;
  • Оценивать элемент неопределенности, связанный с экспериментом, что дает возможность сопоставлять результаты, полученные разными исследователями [1].
  • Целью данной работы является освоение анализа плановых экспериментов и анализ данных, полученных при выполнении этих экспериментов.

1. Постановка задачи

Изучали механические свойства одного из алюминиевых деформируемых сплавов в зависимости от содержания в нем лития Х1 (основной уровень 1%, интервал варьирования 0,5%), температуры старения Х2 (основной уровень 175 гр. С, интервал варьирования 25 гр. С) и времени старения Х3 (основной уровень 4 ч., интервал варьирования 2 ч.). В качестве отклика выбран предел прочности сплавов, определяющийся при испытании на растяжение (Y, кгс/кв. мм).

Задание на расчетно-графическую работу:

1) Найти уравнение регрессии 2-го порядка и выполнить статистический анализ модели.

2) Исследовать модель 2-го порядка на выпуклость и вогнутость методами дифференциального исчисления.

3) Определить тип поверхности отклика.

4) Построить графики зависимости отклика от каждого из факторов Y=f (Xi) при фиксированных значениях остальных факторов (каждый рисунок должен содержать 3−4 кривые).

5) Применяя один из методов оптимизации, найти в исследованной области оптимальные сочетания факторов, обеспечивающие максимальное и минимальное значения отклика.

6) Построить двумерные сечения поверхности отклика, соответствующие пересечению поверхности с плоскостями Xi=Ximax. Для этого в уравнение регрессии необходимо подставить значение этого фактора, и по полученным двухфакторным уравнениям рассчитать, а потом построить изолинии поверхности отклика (кривые равного выхода).

7) Определить типы кривых равного выхода.

8) Используя двумерные сечения поверхности, выполнить анализ влияния факторов в изученных интервалах их изменения на функцию отклика.

2. Этапы планирования и статической обработки результатов эксперимента для построения модели 2-го порядка

2.1 Построение модели плана II порядка

Для построения плана II порядка можно использовать следующую модель:

(2)

Для этого необходимо провести эксперимент так, чтобы каждый фактор варьировался на трех уровнях. Простейшим решением этой задачи является план типа 3k. Реализация этого плана для k>3 требует большого числа опытов.

Для построения модели второго порядка обычно используют ортогональный план первого порядка в качестве ядра, на котором достраивается план второго порядка, поэтому такие планы называются композиционными и соответствуют шаговой идее построения планов.

Для удобства работы с приведенной моделью II порядка, с помощью обозначений (3) преобразуем ее к виду (2'):

(3)

(2')

Задача заключается в том, чтобы по результатам наблюдений определить значения коэффициентов bi, дисперсии и доверительные границы для них, а также определить их значимость.

Согласно МНК, для нахождения коэффициентов bi, необходимо минимизировать функцию:

(4)

где N — количество опытов;

xui -значение i-й переменной в u-м опыте;

yu — значение экспериментальных y в u-м опыте;

Из условия минимизации функции ss, можно получить систему нормальных уравнений МНК:

(5)

Представив все результаты в матричной форме, получим:

,, , (6)

где X — матрица условий эксперимента; Y — матрица результатов опытов; B — матрица коэффициентов.

Умножив транспонированную матрицу X на матрицу X, получим матрицу системы нормальных уравнений, которая называется информационной матрицей Фишера (матрицей моментов):

(7)

Умножив транспонированную матрицу X на матрицу Y, получим:

(8)

Используя данные обозначения, систему нормальных уравнений можно записать в матричной форме:

(9)

Обозначая обратную матрицу моментов как:

(10)

получим выражение для матрицы коэффициентов:

(11)

Все статистические свойства коэффициентов линии регрессии определяется матрицей дисперсий ковариаций.

(12)

где cov (bi, bj) — ковариации коэффициентов bi, и bj;

S2(bi) — дисперсия коэффициента bi;

S2(y) — дисперсия опыта.

Дисперсию опыта можно определить по формулам:

(13)

(14)

где m — количество параллельных опытов.

Если параллельные опыты не проводятся, то для оценки дисперсии опыта ставятся эксперименты в центре плана. Тогда дисперсия определяется по формуле:

(15)

где — количество опытов в центре плана.

Так как ядро плана ортогонально, то для сохранения ортогональности композиционного плана необходимо при построении матрицы планирования обеспечить условия:

Величина зависит от фактора и от плеча d:

;

Для k=3 ядро =15, =11/15=0. 7303, d=1. 2154

2.2 Кодирование факторов

Кодирование факторов используется для перевода натуральных факторов в безразмерные величины, чтобы построить стандартную план — матрицу эксперимента.

Для перевода заполняется таблица кодирования факторов на двух уровнях. В качестве 0-го уровня обычно выбирается центр интервала, в котором предполагается вести эксперимент.

Связь между кодовым и натуральным значениями фактора:

(16)

где Xi — натуральное значение фактора;

Xi0 -значение этого фактора на нулевом уровне;

I — интервал варьирования факторов.

Составим таблицу кодирования факторов, используя исходные данные.

Таблица 1 — Таблица кодирования факторов

2.3 Составление план — матрицы

В план — матрице должны быть указаны все возможные комбинации уровней факторов.

Таблица 2 — Расширенная план — матрица ортогонального плана

2.4 Проверка воспроизводимости опытов

При одинаковом числе параллельных этапов воспроизводимость опытов определяется по критерию Кохрена.

Для этого сначала считаются дисперсии, характеризующие рассевание результатов на каждом u-м опыте.

Проверка воспроизводимости опытов показана на рисунке 2.

Рисунок 2- Воспроизводимость опытов

2.5 Расчет коэффициентов регрессии

Поскольку план ортогонален, то коэффициенты регрессии будут определяться независимо друг от друга по формулам:

Значения при ядре плана:

Матрица дисперсий (ковариаций) коэффициентов регрессии рассчитывается по формуле (10).

2.6 Определение значимости коэффициентов

Значимость коэффициентов регрессии проверяют по критерию Стьюдента:

(17)

Дисперсия коэффициентов определяется по формуле

2.7 Проверка адекватности модели

Адекватность модели проверяется с помощью критерия Фишера:

(17)

, (18)

где Sад2 — дисперсия адекватности, рассчитываемая по формуле (18);

Sy2 — дисперсия опыта;

=0. 05;

fад=N-l, число свободы дисперсии адекватности;

fy=N (m-1), число свободы дисперсии опыта;

l — количество значимых коэффициентов.

Если неравенство (17) выполняется, значит модель адекватна.

3. Выбор и описание метода условной оптимизации

3.1 Выбор метода условной оптимизации

При решении поставленной задачи оптимизации был использован метод Фиако-МакКормика, который относится к непрямым методам решения задач нелинейного программирования. Непрямые методы преобразуют задачи с ограничениями в последовательность задач безусловной оптимизации путем введения в целевую функцию штрафных функций.

3.2 Описание метода условной оптимизации (Фиако-МакКормика)

Алгоритм метода Фиако-Маккормика

Задание, .

Нахождение методом прямого поиска минимума вспомогательной функции, т. е..

Проверка условий окончания поиска. Если условие выполняется по переход на этап 6, иначе переход на этап 4.

Уменьшение значения, ,.

Увеличение. Переход на этап 2.

Оптимальное решение, .

4. Описание программы

4.1 Общие сведения

Обозначение программы — vpRgr. exe.

Наименование программы — «Расчетно — графическая работа № 1 по дисциплине «ВПиМСвАС».

Программное обеспечение, необходимое для функционирования программы — Windows 95/98/NT/2000/ME.

Для написания программы была использована интегрированная среда разработки приложений (IDE-Integrated Development Environment) — Delphi 6.0.

4.2 Функциональное назначение

1 Назначение программы: определение оптимального состава алюминиевых деформируемых сплавов из условия получения максимального предела прочности при испытаниях на растяжения

2 Классы решаемых задач: анализ и статистическая обработка полнофакторного эксперимента с ортогональными планами второго порядка, в которую входят нахождение коэффициентов регрессии, оценка из значимости, проверка адекватности и воспроизводимости модели; поиск сочетаний факторов в кодовых и натуральных переменных; построения графиков отклика от изменения каждого параметра; построения кривых равного выхода при фиксировании одного из параметров.

3 Сведения о функциональных ограничениях на ее применение: данная программа корректно функционирует при количестве параметров равном 3. При небольшой модификации программы (замены названий факторов на новые) можно решать общую задачу анализа и статистической обработки полнофакторного эксперимента с ортогональными планами второго порядка.

4.3 Описание логической структуры программы

При программировании с использованием средств визуального программирования (Delphi, Visual Basic и др.), приложение становится событийно — управляемым, поэтому невозможно построить алгоритм программы, как это имело место при традиционном программировании на Pascal, C++. В связи с этим наиболее полное представление о программе дает ее укрупненная структурная схема с описанием функций составных частей и связи между ними.

Для того, чтобы разделить фазы «конструирования пользовательского интерфейса» и «непосредственного программирования математической модели», была использована блочно — модульная структура. При этом каждый структурный элемент выносился в отдельный модуль, поддерживающий интерфейс с пользователем и между собой.

Рисунок 1. -логическая связь процедур модуля

Описание структурных элементов программы

type mas=array[1. 3] of real;

var x: array[0. 9,1. 15] of real; //переменные

x2: array[1. 3,1. 15] of real; //квадраты переменных

x0,ix, //нулевые уровни и интервалы варьирования

xc, //значения координат центра

la, //канонические козффициенты

m, l, n, ml, nl, //направляющие косинусы углов поворота осей и их частные

xp1,xp2,xp3,xh,

xlocmax, xlocmin: mas; //координаты локальных максимума и минимума

y, ys: array[1. 2,1. 20] of real; //значения функции отклика

x12,x23,x13, //попарные произведения переменных

yc, ycs, //усредненная функция отклика

s2u: array[1. 15] of real; //дисперсии эксперементив

b, //коэффициенты модели

s2b, //дисперсии коэффициентов

db: array[0. 9] of real; //пределы значимости коэффициентов

kk: d, xc2,

S2UMax, //максимальное значение дисперсии эксперемента

s2y, //дисперсия опыта

ycen, //функция отклика в центре

ylocmax, ylocmin: real;

4.4 Используемые технические средства

Для оптимальной работы программы необходима следующая конфигурация компьютера:

процессор Intel Pentium III|| 500;

ОЗУ 64 Мб;

SVGA монитор (разрешение 800×600);

свободное место на жестком диске не менее 2 Mb;

4.5 Вызов и загрузка

Для инсталляции программы необходимо выполнить следующие шаги:

убедиться в том, что компьютер, на который устанавливается система, отвечает всем требованиям, изложенным в разделе «Минимальные системные требования»;

убедиться в исправности накопителей на гибких магнитных носителях;

перекопировать программу на жесткий диск компьютера;

запустить файл Rgr. exe.

4.6 Входные данные

Входными данными к программе являются:

1) таблица кодирования (таблица 1);

2) результаты экспериментов.

Входные данные заданы в программе.

4.7 Выходные данные

Выходными данными являются:

1) дисперсии опытов;

2) коэффициенты линии регресии;

3) расчетные значения выходов;

4) заключения о воспроизводимости опытов, значимости коэффициентов модели, адекватности модели;

5) графики отклика при двух постоянных значениях факторов;

6) кривые равного выхода при одном постоянном факторе;

7) наилучшие и наихудшие сочетания факторов.

5. Результаты обработки данных эксперимента

В результате работы программы были получены следующие результаты:

Расширенная план-матрица эксперимента

Нахождение коэффициентов, проверка их значимости и анализ полученной модели показано на рисунке 3.

Рисунок 3 — Результат работа программы

6. графики зависимости отклика

Графики зависимости отклика от каждого из параметров представлены на рисунка 4−6.

Рисунок 4 — зависимость отклика от изменения параметра x1. Зависимость отклика от X1

  • y= 30,60 + 0,00*x1 + 2,97*x12×2=0×3=0
  • y= 25,60 + 3,87*x1 + 2,97*x12×2=1×3=0
  • y= 22,73 + 1,02*x1 + 2,97*x12×2=1×3=1

Рисунок 5 — зависимость отклика от изменения параметра x2. Зависимость отклика от X2

  • y= 30,60 + -1,94*x2 + -3,05*x22 x1=0×3=0
  • y= 33,57 + 1,92*x2 + -3,05*x22×1=1×3=0
  • y= 34,35 + -4,57*x2 + -3,05*x22×1=1×3=1

Рисунок 6 — зависимость отклика от изменения параметра x3. Зависимость отклика от X3

y= 30,60 + 3,63*x3 + 0,00*x32×1=0×2=0

y= 33,57 + 0,78*x3 + 0,00*x32×1=1×2=0

y= 32,44 + -5,71*x3 + 0,00*x32×1=1×2=1

7. кривые равного выхода

Графики зависимости отклика от каждого из параметров представлены на рисунках 7−9

Рисунок 7 — Линии уровня отклика при фиксированном x3

Рисунок 8 — Линии уровня отклика при фиксированном x2

Рисунок 9 — Линии уровня отклика при фиксированном x1

Заключение

В ходе выполнения данной расчетно-графической работы был определен оптимальный предел прочности алюминиевых деформируемых сплавов, определяющийся при испытании на растяжение.

Оптимальный параметры прочности:

Содержание Li (%) = 0. 6

Температура старения (град. С)=25

Время старения (час.)=2

Содержание Li (%) = 0. 6

Температура старения (град. С)=25

Время старения (час.)=2

Содержание Li (%) = 1. 5

Температура старения (град. С)=200

Время старения (час.)=6

список использованных источников

1) Конспект лекций по дисциплине «ВП и МСАС».

2) Конспект лекций по дисциплине «ТА и МОПЗ».

3) Конспект лекций по дисциплине «Методы синтеза и оптимизации».

4) Методические указания к лабораторным и расчетно-графической работе по дисциплине «Вероятностные процессы и математическая статистика в автоматизированных системах» / Сост. :Г. Б. Билык, О. В. Веремей, В. И. Кравченко. — ДГМА, 2006. — 24 с. (файл VPLAB).

5) Применение математических методов и ЭВМ. Планирование и обработка результатов эксперимента / Под ред. А. Н. Останина. — Мн.: Выш. шк., 2005. — 218 с.

приложение

Листинг модуля Metod. pas — подпрограммы общего назначения

type mas=array[1. 3] of real;

var x: array[0. 9,1. 15] of real;

x2: array[1. 3,1. 15] of real;

x0,ix, xc, la, m, l, n, ml, nl,

xp1,xp2,xp3,xh, xlocmax, xlocmin: mas;

y, ys: array[1. 2,1. 20] of real;

x12,x23,x13,yc, ycs, s2u: array[1. 15] of real;

b, s2b, db: array[0. 9] of real;

kk: integer;

d, xc2, S2UMax, s2y, ycen, ylocmax, ylocmin: real;

{$R *. dfm}

function sx (l: integer):real;

var s: real; i: integer;

begin s: =0;

for i: =1 to 15 do

s: =s+sqr (x[l, i]);

sx: =s;

end;

function sxy (l: integer):real;

var s: real; i: integer;

begin s: =0;

for i: =1 to 15 do

s: =s+x[l, i]*yc[i];

sxy: =s;

end;

function f (l: integer):real;

var xx1, xx2,xx3: real;

begin

xx1: =x[1,l]; xx2: =x[2,l]; xx3: =x[3,l];

f: =b[0]+b[1]*xx1+b[2]*xx2+b[3]*xx3

+b[4]*xx1*xx2+b[5]*xx1*xx3+b[6]*xx2*xx3+

b[7]*xx1*xx1+b[8]*xx2*xx2+b[9]*xx2*xx2;

end;

function fy (xx1,xx2,xx3: real):real;

begin

fy: =b[0]+b[1]*xx1+b[2]*xx2+b[3]*xx3

+b[4]*xx1*xx2+b[5]*xx1*xx3+b[6]*xx2*xx3+

b[7]*xx1*xx1+b[8]*xx2*xx2+b[9]*xx2*xx2;

end;

function dlambda (lam: real):real;

begin dlambda: =(b[7]-lam)*((b[8]-lam)*(b[9]-lam)-0. 25*b[6]*b[6]) —

0. 5*b[4]*(0. 5*b[4]*(b[9]-lam)-0. 25*b[5]*b[6])+

0. 5*b[5]*(0. 25*b[4]*b[6]-0. 5*b[5]*(b[8]-lam))

end;

function findl (xa, xb: real):real;

var c: real;

begin

repeat

c: =(xa+xb)/2;

if dlambda (xa)*dlambda (c)<0 then xb: =c

else xa: =c;

until abs (dlambda (xa)-dlambda (xb))< =0. 001;

findl: =(xa+xb)/2;

end;

procedure maximminim;

var yt: array[1. 2,1. 2,1. 2] of real; i, j, w: integer;

minim, maxim: real;

begin minim: =fy (1,1,1);

maxim: =fy (1,1,1);

for i: =-10 to 10 do

for j: =-10 to 10 do

for w: =-10 to 10 do

begin if fy (i/10,j/10,w/10)> =maxim then begin

maxim: =fy (i/10,j/10,w/10); xlocmax[1]: =i/10;

xlocmax[2]: =j/10; xlocmax[3]: =w/10; end;

if fy (i/10,j/10,w/10)< =minim then begin

minim: =fy (i/10,j/10,w/10);xlocmin[1]:=i/10;

xlocmin[2]: =j/10; xlocmin[3]: =w/10; end;

end;

ylocmin: =minim;

ylocmax: =maxim;

end;

procedure minmax;

type arr=array [1. 3,1. 3] of real;

var d, d1, d2,d3: arr; i: integer; bd: mas;

function delta (a: arr):real;

begin delta: =a[1,1]*(a[2,2]*a[3,3]-a[2,3]*a[3,2]) —

a[1,2]*(a[2,1]*a[3,3]-a[2,3]*a[3,1])+

a[1,3]*(a[2,1]*a[3,2]-a[2,2]*a[3,1]); end;

begin d[1,1]: =2*b[7]; d[1,2]: =b[4]; d[1,3]: =b[5];

d[2,1]: =b[4]; d[2,2]: =2*b[8]; d[2,3]: =b[6];

d[3,1]: =b[5]; d[3,2]: =b[6]; d[3,3]: =2*b[9];

bd[1]: =-b[1]; bd[2]: =-b[2]; bd[3]: =-b[3];

for i: =1 to 3 do

begin d1[i, 2]: =d[i, 2]; d1[i, 3]: =d[i, 3];

d2[i, 1]: =d[i, 1]; d2[i, 3]: =d[i, 3];

d3[i, 2]: =d[i, 2]; d3[i, 1]: =d[i, 1];

d1[i, 1]: =bd[i];d2[i, 2]:=bd[i];d3[i, 3]:=bd[i]; end;

xc[1]: =delta (d1)/delta (d);

xc[2]: =delta (d2)/delta (d);

xc[3]: =delta (d3)/delta (d);

ycen: =fy (xc[1], xc[2], xc[3]);

la[1]: =findl (-6,-2);

la[2]: =findl (-2,2);

la[3]: =findl (2,6);

for i: =1 to 3 do begin

ml[i]: =(b[6]*(b[7]-la[i])-0. 5*b[4]*b[5])/(b[5]*(b[8]-la[i])-0. 5*b[4]*b[6]);

nl[i]: =(-2*(b[7]-la[i])*(b[8]-la[i])+0. 5*b[4]*b[4])/(b[5]*(b[8]-la[i])-0. 5*b[4]*b[6]);

l[i]: =1/sqrt (1+sqr (ml[i])+sqr (nl[i]));

m[i]: =ml[i]*l[i];

n[i]: =nl[i]*l[i];

maximminim; end; end;

procedure TForm1. FormCreate (Sender: TObject);

var i, j: integer;

begin

x0[1]: =1; x0[2]: =175; x0[3]: =4;

ix[1]: =0. 5; ix[2]: =25; ix[3]: =2;

y[1,1]: =24. 99; y[1,2]: =22. 61;y[1,3]:=26. 99; y[1,4]: =39. 61;

y[1,5]: =49. 8; y[1,6]: =37. 8; y[1,7]: =26. 61; y[1,8]: =28. 99;

y[1,9]: =35. 8; y[1,10]: =37. 61;y[1,11]:=27. 99;y[1,12]:=24. 18;

y[1,13]: =26. 8; y[1,14]: =34. 99;y[1,15]:=32. 8;

y[2,1]: =25. 51;y[2,2]:=23. 89; y[2,3]: =26. 89; y[2,4]: =39. 51;

y[2,5]: =53. 7; y[2,6]: =37. 51; y[2,7]: =26. 7; y[2,8]: =28. 7;

y[2,9]: =38. 89;y[2,10]:=37. 32;y[2,11]:=33. 51;y[2,12]:=28. 7;

y[2,13]: =30. 7; y[2,14]: =38. 7;y[2,15]:=31. 51;

xc2: =sqrt (8/15); d: =sqrt ((15*xc2−8)/2);

ys: =y;

sgcod. Cells[0,1]:='Ioeaaie o? iaaiu';

sgcod. Cells[0,2]:='Eioa?aae aa? ue?iaaiey';

sgcod. Cells[0,3]:='Ie?iee o? iaaiu';

sgcod. Cells[0,4]:='Aa?oiee o? iaaiu';

sgcod. Cells[0,5]:='Eiaiaia iaicia? aiea';

sgcod. Cells[1,0]:='Niaa??. Li,% ';

sgcod. Cells[2,0]:='T noa?., a?.N ';

sgcod. Cells[3,0]:=' t noa?., ?. ';

for i: =1 to 3 do

begin sgcod. Cells[i, 1]:=' '+floattostr (x0[i]);

sgcod. Cells[i, 2]:=' '+floattostr (ix[i]);

sgcod. Cells[i, 3]:=' '+floattostr (x0[i]-ix[i]);

sgcod. Cells[i, 4]:=' '+floattostr (x0[i]+ix[i]);

end;

sgcod. Cells[1,5]:=' x1';

sgcod. Cells[2,5]:=' x2';

sgcod. Cells[3,5]:=' x3';

sgplan. Cells[1,0]:=' x0'; sgplan. Cells[2,0]:=' x1';

sgplan. Cells[3,0]:=' x2'; sgplan. Cells[4,0]:=' x3';

sgplan. Cells[5,0]:='x12-'+floattostrf (xc2,fffixed, 3,2);

sgplan. Cells[6,0]:='x22-'+floattostrf (xc2,fffixed, 3,2);

sgplan. Cells[7,0]:='x32-'+floattostrf (xc2,fffixed, 3,2);

sgplan. Cells[8,0]:='x1x2'; sgplan. Cells[9,0]:='x1x3';

sgplan. Cells[10,0]:='x2x3'; sgplan. Cells[11,0]:=' y1';

sgplan. Cells[12,0]:=' y2'; sgplan. Cells[13,0]:=' yc';

for i: =1 to 15 do begin

if i< =8 then begin

if i mod 2 = 0 then x[1,i]: =1 else x[1,i]: =-1;

if ((i+1) div 2) mod 2 = 0 then x[2,i]: =1 else x[2,i]: =-1;

if ((i+3) div 4) mod 2 = 0 then x[3,i]: =1 else x[3,i]: =-1;

end

else begin

for j: =1 to 3 do

if i=7+2*j then x[j, i]: =-d

else if i=8+2*j then x[j, i]: =d

else x[j, i]: =0;

end;

x12[i]: =x[1,i]*x[2,i];

x23[i]: =x[2,i]*x[3,i];

x13[i]: =x[1,i]*x[3,i];

x[4,i]: =x12[i]; x[5,i]: =x13[i];

x[6,i]: =x23[i];

x[0,i]: =1;

for j: =1 to 3 do

x2[j, i]: =sqr (x[j, i])-xc2;

x[7,i]: =x2[1,i];

x[8,i]: =x2[2,i];

x[9,i]: =x2[3,i];

end;

for i: =1 to 15 do

begin sgplan. Cells[0,i]:=inttostr (i);

sgplan. Cells[1,i]:=' 1';

for j: =1 to 3 do begin

sgplan. Cells[j+1,i]:=' '+floattostr (x[j, i]);

sgplan. Cells[j+4,i]:=' '+floattostrf (x2[j, i], fffixed, 5,3); end;

sgplan. Cells[8,i]:=' '+floattostr (x12[i]);

sgplan. Cells[9,i]:=' '+floattostr (x13[i]);

sgplan. Cells[10,i]:=' '+floattostr (x23[i]);

end;

xh[1]: =-1; xh[2]: =-1; xh[3]: =-1;

kk: =0;

end;

procedure TForm1. Button2Click (Sender: TObject);

var i: integer;

begin

kk: =kk+1;

for i: =1 to 15 do

sgplan. Cells[10+kk, i]:=floattostr (ys[kk, i]);

if kk> =2 then begin button2. Enabled:=false;

for i: =1 to 15 do begin

yc[i]: =(y[1,i]+y[2,i])/2;

ycs[i]: =(y[1,i]+y[2,i])/2;

sgplan. Cells[13,i]:=floattostr (ycs[i]);

end;

end;

end;

procedure TForm1. Button1Click (Sender: TObject);

var k1, k2: integer; yk: real;

begin

randomize;

k1: =random (14)+1;

k2: =random (14)+1;

sgplan. Rows[16]:=sgplan. Rows[k1];

sgplan. Rows[k1]:=sgplan. Rows[k2];

sgplan. Rows[k2]:=sgplan. Rows[16];

yk: =ys[1,k1];

ys[1,k1]: =ys[1,k2];

ys[1,k2]: =yk;

yk: =ys[2,k1];

ys[2,k1]: =ys[2,k2];

ys[2,k2]: =yk;

end;

procedure TForm1. PageControl1Change (Sender: TObject);

var u, i, j, li: integer; sums, g, s2ad, fp, xx: real;

begin

if button2. Enabled=false then begin

sgvos. Cells[0,0]:=' u';

sgvos. Cells[1,0]:=' S2u';

sums: =0;

for u: =1 to 15 do

begin s2u[u]: =sqr (yc[u]-y[1,u])+sqr (yc[u]-y[2,u]);

sgvos. Cells[1,u]:=floattostrf (s2u[u], fffixed, 5,3);

sgvos. Cells[0,u]:=inttostr (u);

sums: =sums+s2u[u];

end;

s2umax: =s2u[1];

for i: =1 to 15 do

if s2u[i]> s2umax then s2umax: =s2u[i];

label5. Caption:=floattostrf (s2umax, fffixed, 7,3);

g: =s2umax/sums;

label7. Caption:=floattostrf (g, fffixed, 7,3);

label9. Caption:=floattostrf (0. 47, fffixed, 7,3);

if g< =0. 47 then begin

label10. Caption:=' Iiuou'+#13+'aini?iecaiaeiu';

s2y: =0;

for i: =1 to 15 do

s2y: =s2y+s2u[i]/15;

if b[0]=0 then begin

for i: =0 to 9 do

b[i]: =sxy (i)/sx (i);

sgb. Cells[i, 1]:=floattostrf (b[i], fffixed, 5,3);

for j: =1 to 3 do

b[0]: =b[0]-b[6+j]*xc2;

sgb. Cells[0,1]:=floattostrf (b[0], fffixed, 5,3);

sgb. Cells[0,0]:='b0'; sgb. Cells[1,0]:='b1';

sgb. Cells[2,0]:='b2'; sgb. Cells[3,0]:='b3';

sgb. Cells[4,0]:='b12'; sgb. Cells[5,0]:='b13';

sgb. Cells[6,0]:='b23'; sgb. Cells[7,0]:='b11';

sgb. Cells[8,0]:='b22'; sgb. Cells[9,0]:='b33';

for i: =0 to 9 do

begin s2b[i]: =s2y/(2*sx (i));

db[i]: =1. 76*s2b[i];

sgsb. Cells[i+1,1]:=floattostrf (s2b[i], fffixed, 7,3);

sgsb. Cells[i+1,2]:=floattostrf (db[i], fffixed, 7,3);

end;

sgsb. Cells[1,0]:='b0'; sgsb. Cells[2,0]:='b1';

sgsb. Cells[3,0]:='b2'; sgsb. Cells[4,0]:='b3';

sgsb. Cells[5,0]:='b12'; sgsb. Cells[6,0]:='b13';

sgsb. Cells[7,0]:='b23'; sgsb. Cells[8,0]:='b11';

sgsb. Cells[9,0]:='b22'; sgsb. Cells[10,0]:='b33';

sgsb. Cells[0,1]:='S2bi'; sgsb. Cells[0,2]:='|bi|';

label16. Caption:=floattostrf (s2y, fffixed, 7,3);

label18. Caption:=floattostrf (1. 76, fffixed, 7,3);

label21. Caption:='Iacia?eiua eiyooeoeaiou: ';

li: =0;

for i: =0 to 9 do

if abs (b[i])< =db[i] then begin

li: =li+1;

label21. Caption:=label21. Caption+' b['+

inttostr (i)+']='+floattostrf (b[i], fffixed, 7,4);

b[i]: =0;

end;

s2ad: =0;

for i: =1 to 15 do

s2ad: =s2ad+sqr (yc[i]-f (i))+2/(li*15);

fp: =s2ad/s2y;

label12. Caption:=floattostrf (s2y, fffixed, 7,3);

label20. Caption:=floattostrf (s2ad, fffixed, 7,3);

label25. Caption:=floattostrf (2. 96, fffixed, 7,3);

label26. Caption:=floattostrf (fp, fffixed, 7,3);

if fp< =2. 96 then

label27. Caption:=' Iiaaeu aaaeaaoia'

else

label27. Caption:=' Iiaaeu ia aaaeaaoia';

minmax;

memo2. lines. add ('Eii?aeieou oaio? a iiaa? oiinoe');

memo2. lines. add (' xc1='+floattostrf (xc[1], fffixed, 5,3)+

' xc2='+floattostrf (xc[2], fffixed, 5,3)+

' xc3='+floattostrf (xc[3], fffixed, 5,3)+

' yc='+floattostrf (ycen, fffixed, 5,3));

if ((la[1]< 0) and (la[2]< 0) and (la[3]< 0)) or

((la[1]> 0) and (la[2]> 0) and (la[3]> 0))

then memo2. lines. add (' Iiaa? oiinou, eia? uay yeno? aioi')

else memo2. lines. add (' Iiaa? oiinou oeia ieieiaena');

memo2. lines. add (' Eieaeuiue yeno? aioi');

memo2. lines. add (' xmax1='+floattostrf (xlocmax[1], fffixed, 5,1)+

' xmax2='+floattostrf (xlocmax[2], fffixed, 5,1)+

' xmax3='+floattostrf (xlocmax[3], fffixed, 5,1)+

' Ymax='+floattostrf (ylocmax, fffixed, 5,4));

memo2. lines. add (' xmin1='+floattostrf (xlocmin[1], fffixed, 5,1)+

' xmin2='+floattostrf (xlocmin[2], fffixed, 5,1)+

' xmin3='+floattostrf (xlocmin[3], fffixed, 5,1)+

' Ymin='+floattostrf (ylocmin, fffixed, 5,4));

end; end

else label10. Caption:=' Iiuou ia'+#13+'aini?iecaiaeiu';

for i: =0 to 9 do

sgb. Cells[i, 1]:=floattostrf (b[i], fffixed, 5,3);

end; end;

procedure TForm1. RadioGroup1Click (Sender: TObject);

var xxx: real;

begin series1. Clear; series2. Clear; series3. Clear;

case radiogroup1. ItemIndex of

0: begin groupbox7. Visible:=true;

label28. Caption:='x2='; label29. Caption:='x3=';

label30. Caption:='x2='; label31. Caption:='x3=';

label32. Caption:='x2='; label33. Caption:='x3=';

label34. Caption:='x1=';

xp2[1]: =strtofloat (edit1. text); xp3[1]: =strtofloat (edit2. text);

xp2[2]: =strtofloat (edit3. text); xp3[2]: =strtofloat (edit4. text);

xp2[3]: =strtofloat (edit5. text); xp3[3]: =strtofloat (edit6. text);

xxx: =-1;

while xxx< =1 do

begin series1. AddXY (xxx, fy (xxx, xp2[1], xp3[1]));

series2. AddXY (xxx, fy (xxx, xp2[2], xp3[2]));

series3. AddXY (xxx, fy (xxx, xp2[3], xp3[3]));

xxx: =xxx+0. 01; end;

memo3. Clear;

memo3. Lines. Add ('Eeiee ?aa?annee: ');

memo3. Lines. Add ('y= '+floattostrf (fy (0,xp2[1], xp3[1]), fffixed, 4,2)+

' + '+floattostrf (b[1]+b[4]*xp2[1]+b[5]*xp3[1], fffixed, 4,2)+

'*x1 + '+floattostrf (b[7], fffixed, 4,2)+'*x12');

memo3. Lines. Add ('y= '+floattostrf (fy (0,xp2[2], xp3[2]), fffixed, 4,2)+

' + '+floattostrf (b[1]+b[4]*xp2[2]+b[5]*xp3[2], fffixed, 4,2)+

'*x1 + '+floattostrf (b[7], fffixed, 4,2)+'*x12');

memo3. Lines. Add ('y= '+floattostrf (fy (0,xp2[3], xp3[3]), fffixed, 4,2)+

' + '+floattostrf (b[1]+b[4]*xp2[3]+b[5]*xp3[3], fffixed, 4,2)+

'*x1 + '+floattostrf (b[7], fffixed, 4,2)+'*x12');

end;

1: begin groupbox7. Visible:=true;

label28. Caption:='x1='; label29. Caption:='x3=';

label30. Caption:='x1='; label31. Caption:='x3=';

label32. Caption:='x1='; label33. Caption:='x3=';

label34. Caption:='x2=';

xp1[1]: =strtofloat (edit1. text); xp3[1]: =strtofloat (edit2. text);

xp1[2]: =strtofloat (edit3. text); xp3[2]: =strtofloat (edit4. text);

xp1[3]: =strtofloat (edit5. text); xp3[3]: =strtofloat (edit6. text);

xxx: =-1;

while xxx< =1 do

begin series1. AddXY (xxx, fy (xp1[1], xxx, xp3[1]));

series2. AddXY (xxx, fy (xp1[2], xxx, xp3[2]));

series3. AddXY (xxx, fy (xp1[3], xxx, xp3[3]));

xxx: =xxx+0. 01;

end;

memo3. Clear;

memo3. Lines. Add ('Eeiee ?aa?annee: ');

memo3. Lines. Add ('y= '+floattostrf (fy (xp1[1], 0, xp3[1]), fffixed, 4,2)+

' + '+floattostrf (b[2]+b[4]*xp1[1]+b[6]*xp3[1], fffixed, 4,2)+

'*x2 + '+floattostrf (b[8], fffixed, 4,2)+'*x22');

memo3. Lines. Add ('y= '+floattostrf (fy (xp1[2], 0, xp3[2]), fffixed, 4,2)+

' + '+floattostrf (b[2]+b[4]*xp1[2]+b[6]*xp3[2], fffixed, 4,2)+

'*x2 + '+floattostrf (b[8], fffixed, 4,2)+'*x22');

memo3. Lines. Add ('y= '+floattostrf (fy (xp1[3], 0, xp3[3]), fffixed, 4,2)+

' + '+floattostrf (b[2]+b[4]*xp1[3]+b[6]*xp3[3], fffixed, 4,2)+

'*x2 + '+floattostrf (b[8], fffixed, 4,2)+'*x22');

end;

2: begin groupbox7. Visible:=true;

label28. Caption:='x1='; label29. Caption:='x2=';

label30. Caption:='x1='; label31. Caption:='x2=';

label32. Caption:='x1='; label33. Caption:='x2=';

label34. Caption:='x3=';

xp1[1]: =strtofloat (edit1. text); xp2[1]: =strtofloat (edit2. text);

xp1[2]: =strtofloat (edit3. text); xp2[2]: =strtofloat (edit4. text);

xp1[3]: =strtofloat (edit5. text); xp2[3]: =strtofloat (edit6. text);

xxx: =-1;

while xxx< =1 do

begin series1. AddXY (xxx, fy (xp1[1], xp2[1], xxx));

series2. AddXY (xxx, fy (xp1[2], xp2[2], xxx));

series3. AddXY (xxx, fy (xp1[3], xp2[3], xxx));

xxx: =xxx+0. 01; end;

memo3. Clear;

memo3. Lines. Add ('Eeiee ?aa?annee: ');

memo3. Lines. Add ('y= '+floattostrf (fy (xp1[1], xp2[1], 0), fffixed, 4,2)+

'+'+floattostrf (b[3]+b[5]*xp1[1]+b[6]*xp2[1], fffixed, 4,2)+

x3 + '+floattostrf (b[9], fffixed, 4,2)+'*x32');

memo3. Lines. Add ('y= '+floattostrf (fy (xp1[2], xp2[2], 0), fffixed, 4,2)+

+ '+floattostrf (b[3]+b[5]*xp1[2]+b[6]*xp2[2], fffixed, 4,2)+

x3 + '+floattostrf (b[9], fffixed, 4,2)+'*x32');

memo3. Lines. Add ('y= '+floattostrf (fy (xp1[3], xp2[3], 0), fffixed, 4,2)+

' + '+floattostrf (b[3]+b[5]*xp1[3]+b[6]*xp2[3], fffixed, 4,2)+

'*x3 + '+floattostrf (b[9], fffixed, 4,2)+'*x32'); end;

else groupbox7. Visible:=false;

end;

end;

procedure TForm1. RadioGroup2Click (Sender: TObject);

var px, yy, ymax, ymin: real;

xxx, xmax, xmin: mas;

begin series4. Clear; series5. Clear; series6. Clear;

px: =strtofloat (edit13. Text);

case radiogroup2. ItemIndex of

0: begin yy: =10; ymax: =0; ymin: =48;

label40. Caption:='x3=';

label41. Caption:='x1min='; label42. Caption:='x2min=';

label44. Caption:='x1max='; label45. Caption:='x2max=';

while yy< =48 do

begin xxx[1]: =-1;

while xxx[1]< =1 do

begin xxx[2]: =-1;

while xxx[2]< =1 do

begin if abs (fy (xxx[1], xxx[2], px)-yy)< =0. 02

then series4. AddXY (xxx[1], xxx[2]);

if fy (xxx[1], xxx[2], px)< =ymin then

begin xmin[1]: =xxx[1]; xmin[2]: =xxx[2];

ymin: =fy (xxx[1], xxx[2], px);end;

if fy (xxx[1], xxx[2], px)> =ymax then

begin xmax[1]: =xxx[1]; xmax[2]: =xxx[2];

ymax: =fy (xxx[1], xxx[2], px);end;

xxx[2]: =xxx[2]+0. 005; end;

xxx[1]: =xxx[1]+0. 005; end;

yy: =yy+1. 5; end;

series5. AddXY (xmax[1], xmax[2]); series6. AddXY (xmin[1], xmin[2]);

edit14. Text:=floattostrf (xmin[1], fffixed, 5,2);

edit15. Text:=floattostrf (xmin[2], fffixed, 5,2);

edit16. Text:=floattostrf (ymin, fffixed, 5,2);

edit17. Text:=floattostrf (xmax[1], fffixed, 5,2);

edit18. Text:=floattostrf (xmax[2], fffixed, 5,2);

edit19. Text:=floattostrf (ymax, fffixed, 5,2); end;

1: begin yy: =10; ymax: =0; ymin: =48;

label40. Caption:='x2=';

label41. Caption:='x1min='; label42. Caption:='x3min=';

label44. Caption:='x1max='; label45. Caption:='x3max=';

while yy< =48 do

begin xxx[1]: =-1;

while xxx[1]< =1 do

begin xxx[3]: =-1;

while xxx[3]< =1 do

begin if abs (fy (xxx[1], px, xxx[3])-yy)< =0. 02

then series4. AddXY (xxx[1], xxx[3]);

if fy (xxx[1], px, xxx[3])< =ymin then

begin xmin[1]: =xxx[1]; xmin[3]: =xxx[3];

ymin: =fy (xxx[1], px, xxx[3]);end;

if fy (xxx[1], px, xxx[3])> =ymax then

begin xmax[1]: =xxx[1]; xmax[3]: =xxx[3];

ymax: =fy (xxx[1], px, xxx[3]);end;

xxx[3]: =xxx[3]+0. 005; end;

xxx[1]: =xxx[1]+0. 005; end;

yy: =yy+1. 5; end;

series5. AddXY (xmax[1], xmax[3]); series6. AddXY (xmin[1], xmin[3]);

edit14. Text:=floattostrf (xmin[1], fffixed, 5,2);

edit15. Text:=floattostrf (xmin[3], fffixed, 5,2);

edit16. Text:=floattostrf (ymin, fffixed, 5,2);

edit17. Text:=floattostrf (xmax[1], fffixed, 5,2);

edit18. Text:=floattostrf (xmax[3], fffixed, 5,2);

edit19. Text:=floattostrf (ymax, fffixed, 5,2); end;

2: begin yy: =10;

ymax: =0; ymin: =48;

label40. Caption:='x1=';

label41. Caption:='x2min='; label42. Caption:='x3min=';

label44. Caption:='x2max='; label45. Caption:='x3max=';

while yy< =48 do

begin xxx[2]: =-1; while xxx[2]< =1 do begin xxx[3]: =-1;

while xxx[3]< =1 do begin if abs (fy (px, xxx[2], xxx[3])-yy)< =0. 02

then series4. AddXY (xxx[2], xxx[3]);

if fy (px, xxx[2], xxx[3])< =ymin then

begin xmin[3]: =xxx[3];xmin[2]:=xxx[2];

ymin: =fy (px, xxx[2], xxx[3]);end;

if fy (px, xxx[2], xxx[3])> =ymax then

begin xmax[3]: =xxx[3]; xmax[2]: =xxx[2];

ymax: =fy (px, xxx[2], xxx[3]);end;

xxx[3]: =xxx[3]+0. 005; end;

xxx[2]: =xxx[2]+0. 005; end;

yy: =yy+1. 5; end;

series5. AddXY (xmax[2], xmax[3]); series6. AddXY (xmin[2], xmin[3]);

edit14. Text:=floattostrf (xmin[2], fffixed, 5,2);

edit15. Text:=floattostrf (xmin[3], fffixed, 5,2);

edit16. Text:=floattostrf (ymin, fffixed, 5,2);

edit17. Text:=floattostrf (xmax[2], fffixed, 5,2);

edit18. Text:=floattostrf (xmax[3], fffixed, 5,2);

edit19. Text:=floattostrf (ymax, fffixed, 5,2);

end; end; end;

procedure TForm1. Button3Click (Sender: TObject);

var i: integer; max, min: mas;

maxy, miny: real;

begin series7. Clear;

for i: =1 to 3 do

xh[i]: =xh[i]+0. 02;

max[1]: =series1. MaxYValue;max[2]:=series2. MaxYValue;

max[3]: =series3. MaxYValue; min[1]: =series1. MinYValue;

min[2]: =series2. MinYValue; min[3]: =series3. MinYValue;

maxy: =max[1]; miny: =min[1];

for i: =2 to 3 do begin

if max[i]> =maxy then maxy: =max[i];

if min[i]< =miny then miny: =min[i];

end;

case radiogroup1. ItemIndex of

0: begin

edit9. Text:=floattostr (xh[1]);

edit10. Text:=floattostr (fy (xh[1], strtofloat (edit1. Text), strtofloat (edit2. Text)));

edit11. Text:=floattostr (fy (xh[1], strtofloat (edit3. Text), strtofloat (edit4. Text)));

edit12. Text:=floattostr (fy (xh[1], strtofloat (edit5. Text), strtofloat (edit6. Text)));

series7. AddXY (xh[1], maxy); series7. AddXY (xh[1], miny); end;

1: begin

series7. AddXY (xh[2], maxy); series7. AddXY (xh[2], miny);

edit9. Text:=floattostr (xh[2]);

edit10. Text:=floattostr (fy (strtofloat (edit1. Text), xh[2], strtofloat (edit2. Text)));

edit11. Text:=floattostr (fy (strtofloat (edit3. Text), xh[2], strtofloat (edit4. Text)));

edit12. Text:=floattostr (fy (strtofloat (edit5. Text), xh[2], strtofloat (edit6. Text))) end;

2: begin series7. AddXY (xh[3], maxy); series7. AddXY (xh[3], miny);

edit9. Text:=floattostr (xh[3]);

edit10. Text:=floattostr (fy (strtofloat (edit1. Text), strtofloat (edit2. Text), xh[3]));

edit11. Text:=floattostr (fy (strtofloat (edit3. Text), strtofloat (edit4. Text), xh[3]));

edit12. Text:=floattostr (fy (strtofloat (edit5. Text), strtofloat (edit6. Text), xh[3]))

end; end; end;

procedure TForm1. Button4Click (Sender: TObject);

var i: integer; max, min: mas;

maxy, miny: real;

begin series7. Clear;

for i: =1 to 3 do

xh[i]: =xh[i]-0. 02;

max[1]: =series1. MaxYValue; max[2]: =series2. MaxYValue;

max[3]: =series3. MaxYValue; min[1]: =series1. MinYValue;

min[2]: =series2. MinYValue; min[3]: =series3. MinYValue;

maxy: =max[1]; miny: =min[1];

for i: =2 to 3 do begin

if max[i]> =maxy then maxy: =max[i];

if min[i]< =miny then miny: =min[i]; end;

case radiogroup1. ItemIndex of

0: begin edit9. Text:=floattostr (xh[1]);

edit10. Text:=floattostr (fy (xh[1], strtofloat (edit1. Text), strtofloat (edit2. Text)));

edit11. Text:=floattostr (fy (xh[1], strtofloat (edit3. Text), strtofloat (edit4. Text)));

edit12. Text:=floattostr (fy (xh[1], strtofloat (edit5. Text), strtofloat (edit6. Text)));

series7. AddXY (xh[1], maxy); series7. AddXY (xh[1], miny); end;

1: begin series7. AddXY (xh[2], maxy); series7. AddXY (xh[2], miny);

edit9. Text:=floattostr (xh[2]);

edit10. Text:=floattostr (fy (strtofloat (edit1. Text), xh[2], strtofloat (edit2. Text)));

edit11. Text:=floattostr (fy (strtofloat (edit3. Text), xh[2], strtofloat (edit4. Text)));

edit12. Text:=floattostr (fy (strtofloat (edit5. Text), xh[2], strtofloat (edit6. Text))) end;

2: begin series7. AddXY (xh[3], maxy); series7. AddXY (xh[3], miny);

edit9. Text:=floattostr (xh[3]);

edit10. Text:=floattostr (fy (strtofloat (edit1. Text), strtofloat (edit2. Text), xh[3]));

edit11. Text:=floattostr (fy (strtofloat (edit3. Text), strtofloat (edit4. Text), xh[3]));

edit12. Text:=floattostr (fy (strtofloat (edit5. Text), strtofloat (edit6. Text), xh[3])) end; end; end;

end.

ПоказатьСвернуть
Заполнить форму текущей работой