Метод решения сложных задач



Сложными являются такие задачи, которые не могут иметь правила для их однозначного решения. Например -" как выбирать правильный ход в шахматах, чтобы всегда выигрывать". Как то же самое делать в жизни. . Слово метод означает путь. Общий подход к решению сложных задач состоит в составлении математического описания системы и последующего решения уравнений, связывающих понятия ( переменные) системы. В системы уравнений входят и выбираемые при решении коэффициенты. В процессе решения сложных задач ищут не наилучшее решения ( это невозможно) а приемлемое решение. Уравнения эти для сложных систем получаются сложными, и всегда при составлении этих уравнений возникает задача оценки допустимого времени для составления таких уравнений. То есть даст ли возможное решение этих уравнений положительный эффект , превосходящий потери времени на их создание.
То есть практикой сложные задачи оцениваются как "нерешаемые". Поэтому очень ценятся частные пути ( методы) , которые лишь могут достоверно решать только часть задачи в предположении, что окончательное решения может увидеть только мозг человека, опирающийся на выявленный прогноз частного пути. Такого рода частные пути ( методы) на практике всегда являются ценными находками. И далее мы будем говорить о конкретном найденном пути ( методе). И демонстрировать и объяснять его примером решения практической задачи жизни. Назовём наш метод "просчёт вариантов".

Надо сразу заметить, что практическое значение этот метод имеет только, когда существует удобный инструмент применения этого пути. Поэтому будем говорить и о инструменте. Сложные задачи возникают при создании моделей реальных физических систем. При этом заранее известно, что создаваемая модель всегда по определению проще модели реальной физической. И требуется всегда, чтобы создаваемая компактная модель прогнозировала бы поведение реальной физической системы достаточно точно. Если такие модели обнаруживаются, то они оказываются ценными. В процессе поиска такой модели рассмотриваются различные варианты её построения. И после предположительного варианта модели всегда сразу необходимо проверить её на реальность прогнозирования. Вот здесь и требуется быстрый количесивенный просчёт вариантов решений.
В общем случае, при решении сложной задачи есть неразрывное целое, состоящее из осмысливания задачи и дальнейшего просчёта вариантов. Если нет осмысливания или просчёта вариантов, то сложная задача не решается. В результате осмысливания всегда должны появляться уравнения будущей модели. И по возможности их должно быть мало. Просчёт вариантов для будущей модели всегда должен быть быстрым и простым. Иначе говоря средство такого просчёта всегда должно быть " в кармане" и наготове. То есть в домашнем компьютере. Это средство должно обладать не только широкими возможностями по решению уравнений, но и широкими возможностями по представлению результатов решений в виде графиков. О таком средстве просмотра далее и будем говорить. И всегда будем иметь ввиду, что просчитать надо не в принципе, а конкретно, чтобы иметь возможность по полученным цифрам сразу строить физическую установку если необходимо.

Далее мы рассмотрим в деталях .в качестве примера такую сложную задачу - как штатным фотоприёмником (видеокамерой) увидеть изображение кинокадра 8 миллиметровой киноплёнки. Размер изображения здесь слишком мал для штатных возможностей видеокамеры. Такая задача возникает всегда при желании получить фотоснимок из прошлого. Готовых решений этой задачи не существует в виде рецепта действий.Мы сейчас не рассмотриваем обходные варианты, когда кинопроектор проецирует изображение кинокадра на экран и видеокамера видит изображение на экране. У этого способа есть много недостатков , из за которых от него на практике всегда отказываются.. И нас интересует вариант, при котором на матрице видеокамеры сразу ( без экрана) образуется изображение кинокадра. Здесь изображение надо получить без потерь качества изображения.

Первой догадкой в решении задачи является идея установить линзу между кинопроектором и видеокамерой. Линза в принципе преобразует расходящийся пучок лучей кинопроектора в требуемый сходящийся пучок лучей для видеокамеры. Но куда и как её поставить. Практика метода "научного экспериментального тыка" успеха не приносит. Пробуйте убедитсь. Нужно уметь рассчитать это. Готовых расчётных формул именно для этой задачи вы не найдёте. Придётся их составлять самому. И здесь нам повезло, что в физике существуют, созданы, формулы для геометрической оптики. Иначе нам бы пришлось их тоже изобретать, то есть открывать заново.Обратившись к физике мы найдём там понятие микропроекции. Это разглядывание не визуализированного изображения (от обычной проекции) сзади через окуляр. То есть мы не ставим экран для визуализации изображения, а рассматриваем его ( существующее в пространстве, но невидимое глазом) сзади. И это принцип работы всякого микроскопа. И теперь задача наша - так расположить кинопроектор, не визуализированное изображение, окуляр и видеокамеру, чтобы образовался требуемый нам угол схождения лучей для видеокамеры То есть, чтобы изображение кинокадра было растянуто на весь экран формата.. Как определить все эти расстояния и какую применить линзу окуляр? Это надо рассчитать.

.

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

Рис 1 Ход лучей в первой системе.

Здесь Х это половина диагонали не визуализированного изображения ( формата 3х4 вписанного в конусный поток лучей проектора) на выходе первой системы. А H это тоже самое на входе системы. FP - это фокусное расстояние линзы кинопроектора. Остальное понятно из рисунка. Нам удобно будет оперировать с шириной получаемого изображения b и шириной исходного изображения bk. Будем измерять их в сантиметрах.
Для этой простой системы можно получить формулы связей параметров из школьной формулы линзы. Но заменив там некоторые пременные. Получим следующее:
LI = FP* (bk+b)/bk [1 ]
LPI = LI+d = LI*(1+bk/b) [2]
X = 0.625* b [3]
Здесь звёздочка есть знак умножения.
Выразим alfa ( это половина телесного угла хода лучей проектора) через аргумент b
alfa = (b*0.625/LI) [4]
Здесь мы углы alfa и далее beta измеряем не в градусах, а значением их тангенса. То есть alfa =X/LI
Согласно этим формулам мы можем задать требуемое нам b и вычислить для этого X, LPI, и alfa. Здесь bk и FP коэффициенты. Выходные параметры первой системы X, b , alfa являются входными параметрами для второй системы. В ней реализуется ход лучей лупы, то есть образуется мнимое изображение, которое и видит видеокамера. Для получения мнимого изображения принципиально необходимо располагать оптический центр лупы ( линзы) ближе её фокусного расстояния. Ход лучей во второй системе приведён на рис 2

Рис 2 Ход лучей в системе 2.









Здесь видеокамера из точки О9 видит увеличенное изображение конца вектора X в точке О5. То есть видит вектор p. Согласно правилам построения изображений линзы нетрудно вычислить связи параметров для этой схемы, рассмотрев соответствующие треугольники. Получим следующие формулы:
y=FO*(G-1)/(G). [5]
Здесь "y" есть расстояние между оптической осью лупы и не визуализированным изображением X. А G есть увеличение лупы ( G=p/X) . FO есть фокусное расстояние линзы лупы
M=FO*(G-1) .[6]
beta= (X/FO)- alfa/G.[7]
. Beta здесь половина телесного угла видения видеокамеры . То есть beta= p/(v+m)
Далее V = (X+a*F*(G-1)/G)*F*G/(X*G-a*F) .[8]
Это расстояние от оптического центра видеокамеры до оптического центра лупы.
Теперь согласно формулам [5] [6] [7] [8] выбрав параметры окуляра FO и G, можно по входным X и alfa вычислить требуемые beta, М, V. Таким образом мы получили 8 совместных уравнений для расчёта системы.

На практике для пользования этими формулами нужно иметь инструмент в виде математической программы, куда нужно бы записать эти формулы и попросить программу нарисовать графики интересных нам переменных как функцию любой другой переменной. Далее надо бы заставить сканировать важный для нас параметр b - ширину не визуализированного изображения в некоторых пределах. Связанные с ним другие параметры также будут изменяться при этом. И мы можем сразу попросить систему нарисовать нам графики. Например beta=f(b) и v= f(b). А также вывести график LPI от b. Давайте осознаем, что при сканировании b мы ожидаем роста beta. И нас интересует такое b, при котором величина beta равна требуемой. Для видеокамер величина beta изменяется трансфокатором и может лежать в пределах 0.22 и менее. Здесь надо вспомнить, что от beta зависит требуемая минимальная длина оптического тракта, при котором возможно фокусирование. При выборе beta малого значения требуемая минимальная длина для реализации фокусировки быстро возрастает. А эта длина в конструкции не должна быть слишком длинной или короткой. Порог определяется экспериментально. У меня получилось пороговое значение beta=0.1. То есть при проектировании оптической системы следует выбирать beta в интервале приблизительно 0.12- 0.2. При beta менее 0.1 реализация оптической системы невозможна ( в нашей задаче) так как невозможно получить фокусировку изображения.
Рассматривая далее на графиках рост beta с ростом b и LPI мы должны выбрать значение для beta, в котором будем строить систему. Количественные данные полученых графиков могут сразу нас устроить и тогда решение задачи получено. Но в общем случае для получения удовлетворяющего нас решения нужно подобрать коэффициенты в уравнениях. В данном случае это bk, FP, G ,FO. Делается это методом подбора. Изменяем параметр, нажимаем кнопку "выполнить" в программе расчёта и сразу получаем результат. Таким образом возможно выявить крутизну влияния данного параметра на нашу оценку и выбрать значение переметра.

При выборе необходимой нам программы нас ожидает приятный сюрприз. Оказывается существует программа Microcap для схемотехнического моделирования радиотехнических устройств. И она довольно распространённая. Её ценность в том, что её разработчики позволили пользователям создавать в текстовом виде любые системы для анализа, то есть не имеющие отношения к радиотехнике. В ней мы на практике и можем решить нашу сложную задачу. Наверно не только в ней, но в ней максимально всё просто получается. А вот другие системы может и могут решить сложную задачу, но ещё надо посмотреть с какими неудобствами это возможно.

Пришло время объяснить как в программе Microcap можно вводить свои переменные. Нужно создать новый схемотехнический, но пустой файл. Откроется окно графического редактора, в котором можно писать рисовать и вставлять готовые радиотехнические элементы. Далее нужно нажать на экране кнопку "Т" (текст). Откроется окно для ввода текста. Первый знак должен быть "." - точка, и затем сразу слово define. Это означает "определить или ввести новую переменую". Далее через пробел пишем имя новой переменой английскими буквами. Придуманное имя не должно совпадать с уже имеющимися в программе именами. Ещё далее через пробел пишем значение этого параметра в виде формулы или значения уже существующей переменной.
Приведём пример. Допустим мы хотим определить именем bk ширину исходного изображения на киноплёнке. Тогда сначала устанавливаем в удобную точку значок радиотехнической батареи и задаём её "напряжение" например 0.5 . Для радиотехнческой схемы это будет в вольтах. Но не для радиотехнической схемы (в нашем случае) цифра 0.5 означают для нас сантиметры. Появляется значок батареи с напряжением V1 равным 0.5. Надо задать и заземление минусовому концу батареи. Далее нажимаем кнопку "Т" и вводим текст " .define bk v(1) " без кавычек. Слово define начинается с точки! Мы такой записью создали новую переменную в системе, называющуюся символической. Теперь у нас появляется возможность при анализе просить вывести эту функцию bk как зависимость от другой переменной. То есть для задания нашей системы функций необходимо сделать текстовые записи для каждой вводимой переменной. И только.
На рисунке 2 показаны установленные батареи и все сделанные надписи в файле программы в окне графического редактора. Сам рисунок 2 есть фотоснимок с экрана монитора файла программы. Но давайте подробнее и медленнее.

Итак. для введения первой оптической системы в программу надо записать следующее:
( ввод каждой строки надо начинать с нажатия кнопки "Т".)
.define LI FP*((bk+t)/bk) здесь и далее звёздочка есть знак умножения, а наша переменная b заменена на t ("время")
.define LPI LI*(1+(bk)/t)
.define alfa (t*0.625)/(LI)
.define bk v(1)
.define FP v(2)
Предварительно надо установить батарею v(1) со значением 0.5 ( сантиметра, такова ширина изображение на 8мм киноплёнке). И надо установить батарею v(2) со значением 1.8 ( сантиметра, таково фокусное расстояние объектива кинопроектора "Русь").
В этих формулах наша переменная b -ширина не визуализированного изображения, заменена переменной t, которая в системе уже существует. Благодаря этому мы можем воспользоваться режимом расчёта переходных характеристик Transient Analisis, в котором задаётся программой сканирование времени t в любых пределах, то есть теперь уже задаётся сканирование нашей переименованной переменной b. Так мы "оживляем" нашу систему уравнений. Это стандартный приём, до которого ещё надо было додуматься.

Для введения уравнений второй оптической системы нужно записать:
.define X t*0.625
.define y FO*(G-1)/(G)
.define beta (X/FO)- alfa/G
.define V (X+alfa*FO*(G-1)/G)*FO*G/(X*G-alfa*FO)
.define M FO*(G-1)
.define FO v(3)
.define G v(4)
И ввести батареи v(3) для значения фокусного расстояния лупы, и батареи v(4) для значения усиления лупы.

И вот только теперь мы можем перейти в режим анализа Transient Analisis . Все требуемые записи на фотографии вы видите. Файл рабочий, то есть без ошибок -работает.
При входе в режим анализа изменяется интерфейс программы и появляется окно заданий на моделирование . В нём надо указать требуемый диапазон изменения времени - 35, 15. именно в этом порядке, сначала большая цифра потом меньшая. Подразумевается что в секундах, но в нашей задаче в сантиметрах будет изменяться величина b.
Далее надо указать в задании какие графики нам нужны и какие имена переменных откладывать по оси абсцисс и по оси ординат. В конце нажимаем кнопку "выполнить" и получаем графики. Полезно потом нажать F8 и на графиках появятся два перемещаемые курсора. Правый перемещается при нажатой правой кнопки мыши. Левый перемещается при нажатой левой кнопки мыши. Курсоры снимают цифровые показания с кривых полученных функций с виде чисел, показываемых под графиком. Что удобно. Обратно вернуться в исходное окно программы можно нажав F3.
Такова вкратце технология пользования программой. Надо заметить, что возможности программы неизмеримо шире, отмеченных здесь. Поэтому полезно отдельно с ними познакомиться. Для старта в этой программе это можно сделать здесь.

Теперь подведём итог решения объявленной сложной задачи. Сначала было осмысление задачи, в результате чего появились уравнения системы. Затем потребовалось создать новый файл в программе Microcap и ввести в него полученные уравнения посредством команды .define . Затем потребовалось перейти в режим анализа несколько раз для подбора коэффициентов и выявления количественных данных решения. При наличии готового файла в программе Microcap на решение данной задачи просчёта модели системы потребуется менее получаса времени. Таким образом задача просчёта уравнений при решении сложных задач упростилась предельно. Появилась возможность коллекционировать файлы решений разных сложных задач в публичной библиотеке. То есть готовый файл этой задачи в программе Microcap представляет ценность и поэтому имеет смысл его поместить в публичную библиотеку. Так как он пригоден для расчёта любой системы микропроекции, любого микроскопа. Для другой сложной задачи потребуется новая система уравнений и для просчёта её опять потребуется программа Microcap Таким образом данный метод просчёта в совокупности с осмыслением задачи является методом решения всякой конкретной сложной задачи.
А освоенный способ работы с программой Microcap является неотъемлемой частью решения любой сложной задачи ( в совокупности с осмыслением). И, действительно, в программу Microcap можно вписать уравения любой сложной задачи и просчётом найти решения. При этом для каждой задачи создаётся крохотный по размеру текстовый файл. Для рассмотренной задачи файл оказался размеров в 17 килобайт и то только потому, что в файл дополнительно были введены рисунки хода лучей для памяти имён переменных.

В заключение изложим практические выводы полученные при анализе. Эти выводы полностью подтвердились при изготовлении системы "в железе". Была создана установка , на которой были оцифрованы все мои 8 мм киноплёнки.
Были выбраны коэффициенты b=2.5см , LPI = 13см, G= 1.5 ( усиление лупы) при этом отрезок y=2см, bk=0.5см, FP= 1,8см, была применена линза в качестве лупы с F0= 6см. Диаметр этой линзы лупы также 6см. Потребовалось расстояние от оптического центра видеокамеры до оптического центра лупы v=11.3см . Величина beta составила 0.163 Все эти цифры получены за один раз из семи кривых на трёх графиках. При реализации в железе всё совпало с расчётом. Повторный расчёт этих цифр в программе Microcap через полгода после создания файла занял 1 минуту времени. Собственно сам расчёт и вычерчивание графиков занимают доли секунды. Практически мгновенно получается результат.

Кондратьев Е.Л .......28 октября 2012г.