Новогодняя отгадка

Jan 03, 2019 22:02

На предновогоднюю загадку.

Мы пытались понять: какое право мы имеем, решая систему линейных уравнений, сравнивать между собой омы, безразмерные коэффициенты и сименсы (обратные омы), и как же всё-таки решать её правильно?

Ну и вдогонку - почему, выбрав в качестве единиц измерения вольты и миллиамперы, мы умудрились настолько криво решить систему уравнений, хоть и делали всё "по науке", и та же самая "наука" сказала нам, что всё хорошо, число обусловленности 2.61, значит, от слабого изменения коэффициентов хоть в матрице, хоть в векторе ответ не должен принципиально поменяться! (Выбирая самый большой элемент на главную диагональ, мы вроде как гарантируем внесение малых погрешностей в коэффициенты, а значит - численно устойчивый ответ).

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


В системе из N уравнений с N неизвестными

Ax = b

мы можем определить эвклидову норму векторов (l2):



или "прямоугольную" норму (расстояние городских кварталов, манхэттенская норма, l1)



или норму Чебышева (l∞):



Всё выглядит очень строго и логично.

Затем мы вводим норму матрицы A, подчинённую норме вектора. Это означает, что всегда будет выполняться условие



причём для некоторых векторов x обязано достигаться равенство.

Спектральная норма матрицы является подчинённой эвклидовой норме вектора:



(корень из наибольшего собственного числа от матрицы, помноженной на гильбертово сопряжение)

именно её мы посчитали в своём примере, получив около 1,61.

Подчинённой к прямоугольной норме является такая:



(суммируем элементы по столбцам, по абсолютной величине, выбираем максимальную сумму)

И наконец, подчинённой к Чебышевской норме является следующая норма матрицы:



Далее вводится величина μ(A) - число обусловленности матрицы,


Всё это ради одной теоремы. Рассмотрим две системы уравнений:


- исходное уравнение,


- с искажёнными коэффициентами.

Пусть x* - решение уравнения (1), а x* + Δx - решение уравнения (2).

Если "всё хорошо" (матрица A обратима и
), то можно оценить ошибку:



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



Эту оценку затем объясняют словами: если относительная ошибка в исходных данных 1%, значит относительная ошибка в решении уравнения - 1% помноженный на число обусловленности. Выглядит всё очень здорово.

Но тут-то и зарыта собака. Если у нас вектор b = (1 ампер ; 2 вольта), то именно при взятии нормы наши величины должны "обезразмериться". Если мы решили работать в СИ, то получаем вектор (1; 2), его эвклидова норма: около 2,23. Если мы маленько ошиблись и вместо 2 вольт вписали 2,2 вольта (а с амперами не ошиблись), то норма ошибки 0,2, и относительная погрешность составит 0,2 / 2,23 = 9%. Похоже на правду.

Но если мы решим работать с вольтами и миллиамперами, то получим исходный вектор (1000; 2), его эвклидова норма примерно 1000, и при той ошибке на 0,2 вольта мы получим относительную погрешность 0,02%.

И когда мы получим правильный ответ (999; 1) и неправильный ответ (1000; 0), окажется, что относительная ошибка составляет всего-то навсего 0,14%, и нам грех жаловаться, ведь такой неверный ответ получился из-за того, что мы ограничились 3 значащими цифрами при вычислениях, а это и есть точность в 0,1%.

Никакого противоречия с точки зрения математики у нас не возникает. Если забыть, что в уравнении

U + I = 1000,
U + I / 1000 = 2

у нас напряжение в вольтах, а ток в миллиамперах, и посмотреть на результаты решения, мы сочтём, что всё нормально.

По сути, взяв такие величины, мы согласились, что ошибка в 1 вольт для нас столь же страшна, как ошибка в 1 миллиампер, и далее компьютер действовал соответствующе!

Причём, во многих приложениях так и есть. Если мы возьмём какую-нибудь мощную рентгеновскую трубку с током под ампер, а напряжением в десятки киловольт, то действительно ошибка в 1 вольт - это полный пустяк, сравнимый с ошибкой на миллиампер :)

Просто мы уже привыкли к неким характерным значениям: ток в бытовых приборах редко превышает 10 ампер, а напряжение - 220 вольт, вот мы и провели "знак равенства" между вольтом и ампером.

Ну и проглядывается ответ на вопрос "что делать", как корректно решать уравнения с размерными величинами.

Обезразмериваем мы их так, чтобы ошибка на единицу в каждой из искомых величин была сопоставима для рассматриваемой задачи. Тем самым мы добиваемся того, что весь формализм нормы векторов и подчинённой нормы матриц действительно работает так, как надо в нашей задаче.

Именно вычисление нормы - тот момент, где неявным образом сбрасывались размерности с наших величин, где мы пытались сложить вольты с амперами. Задавая допустимые ошибки по каждой из величин, например

σU = 1 мВ,
σI = 1 мА,

мы наконец-то вводим норму корректно, например:


Можно брать вместо допустимых ошибок максимально возможные (ожидаемые в данной задаче) значения величин. Если мы заранее знаем, что ток не может превысить 2 ампер (иначе предохранитель расплавится), а напряжение - 25 вольт (иначе конденсатор вздуется), то можно и их задать для нашей нормы:

σU = 25 В,
σI = 2 А,

Ну и всё: любые попавшиеся напряжения мы делим на 25 В, любые попавшиеся токи - на 2 А, приходя тем самым к безразмерной системе уравнений. И тогда можно ожидать, что всё у нас будет решено в наилучшем виде!

математика, physunitcalc

Previous post Next post
Up