В предыдущей статье мы познакомились с анализом влияния разброса параметров компонентов схемы на ее работу, что позволяют делать некоторые программы-симуляторы. Для этого использовался метод Монте-Карло, который позволяет анализировать вероятностные системы слишком сложные для использования аналитических методов анализа. По сути, это "метод экспериментов", разновидность численных методов. Он дает не точный, а вероятностный, результат. Позволяет получить представление о поведении системы как некий "набросок", а не как идеальную картинку.
Однако, оказалось, что у некоторых читателей этот метод анализа вызывает сомнения в достоверности и применимости. Особенно с учетом небольшого (я использовал всего 100) количества шагов (итераций). Больше всего затруднений у читателей вызывала математическая статистика и теория вероятностей, на которых и основан метод Монте-Карло. Причем не просто как математика, а при практическом применении теории к практике анализа электронных схем.
Объяснению, с чисто практической точки зрения, но не без оглядки на теорию, и посвящена сегодняшняя статья.
Параметры компонентов схемы с точки зрения математики
В предыдущей статье я рассказывал о неизбежном, и естественном, разбросе параметров компонентов, который носит случайный характер. Но видимо объяснения оказались недостаточно подробными, поэтому давайте уделим параметрам еще немного внимания.
Большинство компонентов, не только электронных, которые используются в электрических и электронных схемах, изготавливаются с заданными параметрами. Во всяком случае, производители стараются выстроить технологические процессы, что бы получать наиболее близкое приближение к требуемым значениям параметров. Просто суровая реальность не позволяет получить точные значения. Наш реальный мир не является идеальным.
И мы можем представить значение любого реального параметра изготовленного компонента в таком, всем прекрасно знакомом, виде
Заданное значение параметра является неизменным, константой. Величина отклонения, погрешность параметра, изготовленного компонента является величиной случайной. Причем характер распределения этой случайной величины носит определенный характер. Обычно считают, что погрешность описывается нормальным распределением (или близким к нему). Плотность вероятности нормального распределения можно представить графически
Не сомневаюсь, что всем читателям это хорошо знакомо. Но все таки отмечу основные важные для нас, с чисто практической точки зрения, моменты:
- Заданное значение параметра расположено в середине диапазона возможных значений.
- Границы диапазона определяются максимальной величиной отклонения значения параметра от заданного значения.
- Максимальная величина отклонения не охватывает весь возможный диапазон значений. Границы интервала охватывают значения параметра, сумма вероятностей которых "значима". Чаще всего это 95%. То есть, сумма вероятностей всех значений в интервале равна 95%.
- Значения выходящие за границы диапазона считаются "браком".
Пока это теория. Давайте посмотрим, как она соотносится с практикой. Для примера возьмем самый обычный резистор. Пусть требуется изготовить резистор с сопротивлением 1000 Ом. После изготовления производитель измерил сопротивления резисторов и получил, например, такие результаты
Мы видим, что с точки зрения производителя неидеальность технологических процессов привела к разбросу параметров, который можно описать нормальным распределением случайных чисел. Если требовалось обеспечить погрешность сопротивления не более 1%, производитель будет весьма расстроен и поймет, что нужно совершенствовать технологии. Но обычно произведенная продукция просто рассортировывается на несколько групп. В данном случае, по величине погрешности. Я показал три группы (1%, 5%, 10%) разными цветами. Все три группы можно отправить заказчикам в соответствии с их требования. Цены мы обсуждать не будем.
Может показаться, что такая сортировка приведет тому, что в партии резисторов, например, с погрешностью 5% не будет резисторов с малым отклонением сопротивления. То есть, распределение значений сопротивления у потребителя будет существенно отличаться от нормального. Однако, это не так. Дело в том, что производитель обычно проводит выборочный контроль, а не 100%, в изготовленной партии. И по результатам этого контроля вся партия будет отнесена к одной из групп по точности. Таким образом, и с точки зрения потребителя характер распределения останется нормальным. Это очень важно для нас.
Однако, все это верно для очень больших партий. А размер реальных партий обычно не столь велик. Это приводит к тому, что что значение параметра будет иметь и систематическую погрешность, и случайную. Например, среднее значение параметра (математическое ожидание) в партии будет немного отличаться от заданного (Х0), что и является систематической погрешностью. При этом сохранится разброс параметров (дисперсия) от этого среднего значения.
Однако, отклонения все равно не должны превышать установленные значения. Напомню, что не "абсолютно не должны", а "с вероятностью 95% не должны". В типовом случае, если не говорить о прецизионных компонентах. То есть, вершина кривой плотности вероятности может оказаться немного смещенной, но вот основание остается на своем месте. Это оказывает незначительное влияние, которое можно не принимать во внимание при инженерных расчетах.
Таким образом, мы действительно можем считать, что каждый параметр компонента схемы имеет некоторое "типовое" значение и некоторый разброс. И описывается все это нормальным распределением случайных величин. То есть, вероятность значения параметра будет тем выше, чем ближе оно к "типовому" значению. А границы диапазона возможных значений не являются абсолютными, они лишь вероятностные.
Независимые случайные величины и степени свободы
Величина отклонения каждого параметра каждого элемента схемы является случайной величиной. Но эти случайные величины являются еще и независимыми друг от друга! Величина и знак отклонения значения каждого параметра каждого компонента могут быть любыми (в заданных границах, конечно). Например, два одинаковых резистора, стоящих рядом на плате, могут иметь разные отклонения. Они независимы друг от друга.
Давайте рассмотрим это на примере делителя напряжения из двух "идентичных" резисторов. Просто зададим погрешность их сопротивлений 5% (максимальное значение отклонения)
Да, мы опять видим нормальное распределение. Выходное напряжение, которое измеряет вольтметр, может находиться в диапазоне от 2.375 В до 2.625 В. Но наиболее вероятно, что напряжение будет близким к 2.5 В. Различные значения выходного напряжение не равновероятны.
Такую простую схему мы смогли проанализировать математически (аналитически). Однако, мы не получили точного результата. Мы получили вероятностный результат. Причина кроется в вероятностном характере расчетных параметров - величин сопротивления резисторов. Мы не знаем из точных значений, но знаем математическое ожидание ("типовое" значение), характер распределения, границы доверительного интервала.
Можно сказать, что математическая модель нашего делителя напряжения является моделью с двумя степенями свободы. Ведь отклонения значений сопротивлений независимы. Если у нас есть результаты измерения сопротивлений конкретных резисторов, то мы можем подставить их в формулу и получить точный результат. А если результатов измерений нет? Если мы просто анализируем схему делителя напряжения? Как мы можем провести расчет? Только для типовых значений сопротивлений? Мы узнаем "ожидаемое", наиболее вероятное значение выходного напряжения, но это может отличаться от измеренного в реальном устройстве.
Мы можем провести анализ выбирая случайным образом две величины (со знаком!) отклонений, для каждого резистора своя. У нас же две "степени свободы". Провести расчет и получить некий результат, который так же имеет право отличаться от реально измеренного. Но если мы проведем много расчетов, каждый раз задавая для каждого резистора случайное отклонение сопротивления, то получит множество значений выходного напряжения. А построив из этих значений график плотности вероятности (например, как гистограмму) увидим тот самый результат, который я показал на последней иллюстрации. Вероятностный результат.
Давайте вспомним схему модели из предыдущей статьи, я повторю ее здесь
Здесь у нас есть 4 резистора, которые влияют на работу схемы, как по постоянному току, так и по переменному. И есть транзистор, для которого мы рассматривали лишь один из множества параметров - коэффициент передачи тока базы в схеме с общим эмиттером. Конденсаторы и резисторы R5 и R6 нас не интересовали. Таким образом, у нас есть 5 независимых параметров - 5 степеней свободы. И анализ этой схемы, модели, уже более сложный. Но ведь это далеко не предел. Часто приходится моделировать куда более сложные функциональные узлы.
Количество степеней свободы может достигать сотен и даже тысяч. Провести точный анализ таких моделей очень сложно, если вообще возможно. Да и выходных параметров может быть несколько. А характер распределения результатов уже может сильно отличаться от нормального, ведь он складывается из множества параметров. И это проблема.
Для делителя мы могли получить границы, в которых находится результат, просто задав крайние значения для сопротивлений резисторов. Но чем больше степеней свободы, тем большее количество вариантов просто для крайних значений параметров компонентов. А нас ведь может интересовать поведение результата (как контролируемого параметра), а не просто его граничные значения. Поэтому решение "в лоб", просто перебором четко заданных вариантов, нас не устраивает.
Перестановки, сочетания, дискретность и непрерывность
В комментариях читатели писали, что 100 итераций моделирования недостаточно и указывали конкретное число шагов для "схемы из 5 компонентов". И они ошибались. Да, с точки зрения комбинаторики это выглядит логичным. Только вот комбинаторика здесь, в чистом виде, неприменима. Почему?
Дело в том, что значения параметров компонентов не являются дискретными величинами. Функция, которая описывает значения параметров, причем с учетом их вероятностного характера, является непрерывной. Таким образом, у нас просто нет множества значений любого параметра. Количество значений бесконечно. Даже для одного параметра. Тем более, бесконечно количество возможных состояний системы с большим числом степеней свободы. Мы можем описать такие системы аналитически, но это описание будет излишне сложным для инженерных расчетов.
Поэтому разумным выглядит введение дискретности значений параметров, что исключает бесконечность. Но для систем с большим числом степеней свободы количество возможных состояний, тут комбинаторика уже применима, все равно будет слишком большим. Более того, возникает другая проблема - как вводить дискретность? Просто разбивать диапазон возможных значений на равное количество частей? Или использовать нелинейное разбиение. Впрочем, эта проблема не так страшна на фоне огромного количества возможных состояний систем с большим числом степеней свободы.
Спасение в случайности. Метод Монте-Карло
Случайность значений параметров, вместе с их независимостью, создают для нас проблему, преодолеть которую кажется чрезвычайно сложно. Во всяком случае, потребуются ЭВМ очень высокого быстродействия, которые не каждый может себе позволить. Но давайте задумаемся, а так ли нам нужен точный анализ? Ведь даже при абсолютной точности результат будет лишь вероятностным. Мы все равно не получим точного соответствия результата моделирования работе реального устройства.
Значит мы можем попробовать уменьшить сложность моделирования "реальности" схемы, влияния разброса параметров. Но как? Нужно ведь сохранить достоверность, иначе моделирование будет бесполезным. И здесь нам на помощь приходит та самая случайность, которая и определяет вероятностный характер значений параметров компонентов и, как следствие, результата моделирования.
Мы можем не перебирать все возможные значения каждого параметра, а задавать их случайные отклонения. Независимо для каждого параметра. И проводить расчет модели для этих случайных значений. Причем этот подход уже был описан чуть выше. Алгоритм действий будет таким:
- Задаем случайные отклонения независимо для каждого параметра каждого компонента модели. Таким образом мы получим набор входных параметров для очередного расчета модели.
- Для сформированного набора данных выполняется расчет модели. Таким образом мы получим некоторое значение результата, которое помещается в множество результатов моделирования.
- Если требуемые параметры точности (детальности) не достигнуты, возвращаемся к пункту 1.
Именно так и работает метод Монте-Карло. Мы выбираем случайные значения параметров и производим расчет. В результате получаем очередной элемент множества результатов. Множество результатов и является тем самым вероятностным результатом. На основе этого множества мы можем определить и границы диапазона возможных значений результата, и характер распределения, и какие-либо характерные особенности. Но почему это вообще работает?
Предположим, у нас есть некая плоская полностью прозрачная плоская фигура. Мы не можем ее видеть, поскольку коэффициент преломления у материала, из которого она изготовлена, равен коэффициенту преломления среды. Как мы можем определить, что из себя эта фигура представляет? Например, мы можем "ощупывать". Чтобы результат стал зрительно видимым, разместим за фигурой лист бумаги соответствующего размера и обведем фигуру карандашом по контуру.
Вы уверены, что это хороший способ? А если фигура большая? А если внутри нее есть отверстия, причем сложной формы, о которых мы не подозреваем? Мы должны будем не только пройтись по контуру, но и по всем точкам внутри этого контура, чтобы обнаружить все возможные отверстия. Точки автоматически задают дискретность, а этот метод будет примерно аналогичен методу полного расчета всех состояний системы.
Но ведь есть и другой способ. Давайте просто будем стрелять шариками для пейнтбола на фигуру и размещенный за ней лист бумаги. Пусть шарики будут не с краской, а с реактивом, который окрашивается лишь при контакте с бумагой. Стрелять будем не прицельно, а просто "в направлении фигуры". Через некоторое количество выстрелов мы увидим на листе бумаги "смутный контур" фигуры и отверстий. Этот контур не будет четким, но мы уже сможем составить представление о фигуре. Причем количество выстрелов будет гораздо меньше количества точек, которые мы бы перебирали в предыдущем случае.
Другой аналогией может быть бросание "горсти камушков или песка". Это помогает быстрее и легче получить представление о фигуре, но за счет потери точности. Мы используем случайность, так как каждый выстрел шариком или траектория полета каждого камушка случайны. Мы не сможем построить чертеж фигуры, но зато быстро сможем составить о ней представление.
Но ведь именно это нам и нужно от расчета по вероятностной модели, которая используется для анализа влияния разброса параметров элементов схемы. Нам не нужно точное соответствие результата каждой итерации реальному измерению. Нам нужно предсказать, какие результаты будут "в общем и целом". А это позволить понять, нужно ли предпринимать какие-либо действия для доработки схемы. Или она будет укладываться в заданные параметры.
Сложно сказать, почему именно этот метод получил название Монте-Карло. Возможно из-за многочисленных казино Монте Карло, где правит бал случайность, а азартные игроки пытаются найти закономерность в системах с множеством степеней свободы, надеясь, что эти системы не являются истинно случайными.
Нам же важно, что использование случайных входных данных и многократное повторение расчетов позволяет получить представление о поведении схемы гораздо быстрее, без выполнения полного перебора всех состояний системы. Причем для этого действительно будет достаточно относительно небольшого количества шагов, например, 100, что я и использовал. Для более точно определения границ за одно моделирование можно использовать больше итераций. Но для зрительной оценки плотности распределения результатов большое количество итерации скорее вредно, так как снижает наглядность, так как кривые просто сливаются.
Когда моделирование реальности не требует использования метода Монте-Карло
Значения параметров, которые мы рассматривали ранее, были независимыми случайными величинами. Но всегда ли это так? Давайте посмотрим, нужно ли нам использование метода Монте-Карло, например, для оценки влияния температуры на работу схемы.
Во первых, мы сразу замечаем, что влияние температуры на параметры компонентов схемы не является независимым. Во многих случаях можно принять, что температура всех элементов в корпусе устройства примерно одинакова. Да, не во всех, но во многих. А значит, что параметры компонентов схемы по прежнему не являются постоянными, но теперь их изменения зависимы. Не друг от друга, в этом они остаются независимыми, но от единого параметра - температура в корпусе устройства.
Таким образом, наша система, с точки зрения анализа влияние температуры, будет иметь лишь одну степень свободы. Значения всех параметров компонентов стали не случайными, а расчетными величинами, которые зависят от температуры. С одним существенным ограничением - нам не требуется одновременно анализировать и влияние разброса параметров, и температуры. То есть, значения параметров типовые, без учета разброса, но с учетом влияния температуры.
И нам не нужно использовать метод Монте-Карло. Достаточно просто задать несколько дискретных значений температуры. Сложность такого моделирования гораздо ниже. Но если нужно проанализировать влияние температуры с учетом разброса параметров компонентов, то без Монте-Карло уже не обойтись.
Заключение
Метод Монте-Карло, который позволяет моделировать вероятностное поведение систем с большим числом степеней свободы, это лишь инструмент. Один из многих, которые используют при разработке электронных устройств. Он не дает точного результата, но позволяет предсказать, как будет вести себя реальное устройство, собранное из реальных компонентов.
Метод Монте-Карло позволяет свести сложную задачу многофакторного анализа к достаточно простому перебору нескольких случайных вариантов. Это все равно требует заметно больше времени, чем одиночный расчет для "типовых" значений параметров. Но время не будет чрезмерно большим даже для обычных домашних или офисных ПК. Конечно, при разумном размере модели.
Как и любой другой инструмент, метод Монте-Карло должен применяться там, где он действительно полезен. Причем с полным пониманием, как этот инструмент работает. Ну а нужно ли его использовать для решения конкретной задачи уже решает человек, который разрабатывает электронную схему. Для единичного устройства "для себя любимого", скорее всего использовать метод Монте-Карло нет необходимости. Для подготовки устройства к серийному производству, в большинстве случаев, использование этого инструмента будет весьма полезным.