Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Подбор емкостей.doc
Скачиваний:
1
Добавлен:
20.08.2019
Размер:
338.94 Кб
Скачать

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

Данная программа предназначена для решения задач 1-5.

Среда разработки: Delphi 6.0.

Интерфейс программы представляет собой форму, содержащую:

- поля ввода частоты 1-й гармоники в Гц и рад/с, а также сдвига напряжения в градусах и радианах 1-й гармоники;

- диаграмма, на которой отображаются графики фазовых напряжений 1-й гармоники и суммарных;

- группа из 6 флажков, определяющих видимость каждого графика на диаграмме.

- элемент q задания степени точности определения х;

- флажок all, определяющий, все ли конденсаторы должны быть задействованы при решении задач. При его установке решаются задачи 2 и 4, при сбросе - задачи 3 и 5.

- на вкладке “Основное” таблицу ввода амплитуд гармоник с номером 6*к ± 1, где к=1,…6. В этой же таблице отображаются найденные отношения емкостей для каждой гармоники и их найденные приближенные выражения рациональной дробью, а также циклические частоты гармоник.

- на вкладке “Разные ёмкости и стоимости” находится таблица cap ввода емкостей конденсаторов и их стоимостей, а также таблица comb, в которой отображается найденное оптимальное количество конденсаторов каждой ёмкости в числителе и знаменателе каждого отношения емкостей из х1,…х6. В ячейку выводится запись формата m--n, где m – числитель, n – знаменатель. В нижней строке этой таблицы выведено общее требуемое количество конденсаторов каждой ёмкости. Кроме того, на этой вкладке находится элемент numc задания количества различных емкостей от 1 до 10.

Программа содержит переменные:

Целые числа.

I, j, k, - параметры циклов;

L – число емкостей при решении задач 2 и 3; номер рассматриваемой группы с общим делителем при решении 4 и 5.

N – номер дешевейшего набора при решении задачи 4;

Qu – количество выполненных итераций в процедуре norel. Характеризует временную сложность задачи.

Вещественные числа.

W – циклическая частота 1-й гармоноки;

E – сдвиг напряжения

U – минимальное недопустимое отклонение найденного отношения емкостей числителя и знаменателя от требуемого Х.

R – наименьшая разница значений требуемого и реального знаменателя из всех рассмотренных комбинаций его емкостей в функции Norel;

Mn – наименьшая стоимость конденсаотра;

G, h – нижняя и верхняя границы стоимости рассматриваемых на данном шаге наборов.

Co - стоимость дешевейшего набора(задача 4)или объединения наборов(задача 5);

Cp – суммарная ёмкость конденсаторов данного набора;

Ca – требуемая ёмкость в знаменателе для данных ср и Х;

Логические: v – используется в различных алгоритмах;

Al – в процедуре findkit определяет, все ли компоненты х могут быть представлены данным набором;

Ye – найден набор, для которого истинно al. Условие окончания цикла изменения g и h при решении задачи 4.

Массивы.

А[0..12] – амплитуды гармоник;

Х[1..6] – отношения емкостей, обеспечивающие сглаживание соответствующих гармоник;

с, р – ёмкости и стоимости конденсаторов;

kit – массив целочисленных массивов – наборы емкостей, дающие нужные комбинации числителя и знаменателя;

cd, cdf – количества емкостей в знаменателе данного и наилучшего на данном этапе наборов соответственного;

b – массив, содержащий суммарные стоимости С и ёмкости Ср наборов в kit.

cb – дешевейшее объединение наборов задачи 5. Находится в процедуре findc;

cpn – количества всех имеющихся емкостей в рассматриваемом наборе;

sort – номера емкостей введённого массива в отсортированном массиве;

nkit – массив[1..6]целочисленных массивов. Номера наборов, дающих комбинацию для каждой компоненты х;

nk – целочисленный [1..6]. Номера наборов оптимального их объединения;

gr – массив целочисленных массивов – номера емкостей, входящих в соответствующие группы с общим делителем;

grn – номера группы, соответствующие каждой ёмкости;

nod – объявлен в процедуре findpsi. Для каждого конденсатора НОД всех емкостей его группы, стоящих по порядку до него включительно;

psi – сначала f, а затем Ψ от всех указанных емкостей для каждого конденсатора;

Используемые подпрограммы:

Процедура init – установка начальных значений при запуске программы;

Процедуры fchan, wchan – при задании соответственно частоты и циклической частоты 1-й гармоники пользователем. Перестраиваются графики(outgra);

Процедуры echan, degchan – при задании радианной и градусной меры сдвига Е;

Процедура outgra – вывод графиков фазовых напряжений;

Процедура fraccount– Решение задач 2, 4 или 3, 5;

Процедура showhide – показ или скрытие графика по желанию пользователя;

Процедура voltage – при задании амплитуд гармоник. Проверка корректности ввода и вызов outgra;

Процедура findpsi – нахождение массива psi;

Процедура findkit(n:integer;cost,cap:real) – рекурсивный поиск наборов, дающих требуемые отношения емкостей. Заполнение массивов b, kit, nkit, а при решении задачи 4 - и cdf. Параметры: n – номер элемента массива С, изменяемого на данном уровне рекурсии, cost, cap – суммарная стоимость и ёмкость на данном шаге;

Функция findr(m:integer):boolean – поиск подходящей комбинации в знаменателе данного набора, истинное значение, если такая найдена;

Функция norel(m,n:integer;cap,hi,lo:real):boolean – Перебор количества n-ых емкостей в знаменателе. Вызывает себя, если n<numc.value-1, где numc.value – количество емкостей. Возвращает истину, если не найдена комбинация в знаменателе, у которой суммарная ёмкость сар отличается больше, чем на r от требуемого для хm; hi, lo – границы в пределах которых находятся суммарные ёмкости знаменателя на рекурсиях, вложенных в данную, т.е, с большим значением n;

Функция findc(n:integer;kt:arn):boolean – рекурсивный поиск дешевейшего объединения наборов, номера которых хранятся в nkit. Объединение включает хотя по 1 набору, входящему в каждый 1-мерный массив в nkit. Уровень вложенности равен номеру рассматриваемого 1-мерного массива в nkit. Вызывается при решении задачи 5;

Процедура numcChan – при задании количества емкостей. Если добавлена новая, то она становится в 1.5 раза больше предыдущей, а её стоимость равной 1. Вызывается сарexit;

Процедура capExit – при задании емкостей и их стоимостей. После проверки корректности вызывается fraccount;