Инженер - интересная и творческая профессия, но решая интересные задачи, часто приходится сталкиваться с рутинной однообразной работой, в частности с обработкой большого массива данных. Вспомогательные программы и алгоритмы для расчётов помогают инженеру сэкономить время и нервы.
В этой статье я хочу поделиться, как с помощью электронной таблицы типа Microsoft Exel (или аналогов вроде WPS Office) и логической функции "ЕСЛИ", можно составить алгоритм для быстрого расчёта полуширины светофильтра.
Светофильтр — устройство, которое служит для подавления (выделения) части спектра электромагнитного излучения.
Готовый файл в формате "*.xlsx" могу скинуть любому желающему по запросу в комментариях, абсолютно бесплатно (либо за небольшой символический донат, если захотите поблагодарить и поддержать автора).
Для тех, кто хочет попробовать написать данную программку сам, читайте далее, буду рассказывать, как я составил алгоритм.
Итак, известно, что узкополосные и полосовые светофильтры характеризуются такими параметрами, как положение максимума и полуширина. Чем меньше шаг, с которым записан спектр светофильтра, тем точнее полуширину определить. Определение полуширины вручную занимает достаточно много времени, и если вам нужно посчитать параметры большого количества светофильтров (десяти, ста, тысячи, например, при входном контроле на производстве), то стоит заморочиться с автоматизацией данных расчётов.
Вот так выглядит моя "программа":
Первые два столбца - соответственно, длина волны, в нанометрах и пропускание светофильтра. Справа сверху - таблица с результатами расчёта. Столбцы с 3 по 7 - служебные, в них забиты формулы. О них как раз и поговорим ниже.
Самое простое - это "научить" Эксель определять максимальное значение пропускания (Tmax, смотри фото ниже), с помощью функции "МАКС".
С определением положения максимума сложнее. Чтобы определить длину волны, соответствующую максимальному пропусканию, нужно сослаться на содержимое первого столбца соответствующей строки. Для этого используем функцию "ЕСЛИ". В третьем столбце вводим следующую формулу, и "протягиваем вниз":
Буквально, это команда означает следующее:
Если значение пропускания в текущей строке равно значению "Tmax", выводим содержание первого столбца данной строки, в противном случае "пишем" ноль (0).
Далее в таблице результатов пишем формулу для определения максимального значения третьего столбца. Это и будет положение максимума:
Следующий, четвёртый столбец, задействуем для определения коротковолновой границы полуширины. Предварительно делим максимальное значение Tmax пополам и выводим результат в отдельную ячейку. Вводим следующую команду:
Эта команда означает следующее:
Если значение пропускания в данной строке меньше значения 0,5*Tmax, выводим какое-нибудь очень большое число (например 10000000000), в противном случае выводим значение длины волны в данной строке.
Далее, в таблице результатов с помощью команды "МИН" выводим минимальное значение в четвёртом столбце. Это и будет коротковолновая граница полуширины.
Следующий, пятый столбец, задействуем для определения длинноволновой границы полуширины. Вводим следующую команду:
Эта команда означает следующее:
Если значение пропускания в данной строке меньше значения 0,5*Tmax, выводим ноль (0), в противном случае выводим значение длины волны в данной строке.
Далее, в таблице результатов с помощью команды "МАКС" выводим максимальное значение в пятом столбце. Это и будет длинноволновая граница полуширины.
По аналогии, можно научить нашу программу определять коротковолновую и длинноволновую границы пропускания светофильтра на уровне 0,1*Tmax.
Для наглядности, можно построить график коэффициента пропускания светофильтра. Итоговая "программа" у меня выглядит следующим образом:
При желании, можно сделать "защиту от дурака", и скрыть содержание 3-7 столбцов, защитив их от нежелательного редактирования оператором.
Ну вот и всё на сегодня, дорогие собратья инженеры, хорошего вам настроения и побольше вдохновения на работе.
Всем добра)