Свет на ситуацию пролила бы теорема, которая бы давала ограничения в виде неравенств на то, какими станут (как сильно изменятся) сингулярные значения у матрицы A, если в ней занулить/вычеркнуть одну или несколько строк. Поэтому вопрос: кто-нибудь знает какую-нибудь теорему в этом духе?
Решил подойти к этой проблеме численно в самом простейшем случае: алгоритмом Нелдера-Мида подбираю матрицу 3x3 с фиксированным числом обусловленности так, чтобы в матрице, получаемой вычёркиванием/занулением строки, исправленное число обусловленности было максимально (худший случай) или минимально (лучший). Матрица
A ищется как сингулярное разложение специального вида

Здесь
U — это матрица общего вращения 3-мерного пространства, сингулярное число
p фиксировано и задаёт число обусловленности исходной матрицы
A, а сингулярное число
s вместе с матрицей вращения подбирается алгоритмом. Матрицу
V сингулярного разложения общего вида я положил равной единичной матрице, потому что она не на что не влияет при занулении строк, зато уменьшается число оптимизируемых параметров. Код алгоритма ниже.
Файл
find_worst_case_3d.m. Знак переменной
m задаёт что ищется — наилучший (минус) или наихудший случай:
% dxdy.ru/topic160345-15.html
% B@R5uk, 2025, May
clc
clearvars
format compact
%format long
format short
p = 3;
m = -1;
run_flag = 1;
while run_flag
w0 = randn (1, 3);
w0 = w0 / sqrt (sum (w0 .^ 2));
w0 = w0 * rand ^ (1 / 3);
w0 = 2 * pi * [rand, w0];
fmso = optimset ('fminsearch');
fmso = optimset (fmso, 'Display', 'off', 'TolFun', 1e-17, 'TolX', 1e-17, ...
'MaxIter', 20000, 'MaxFunEvals', 10000);
w = fminsearch (@(w) m * find_worst_case_3d_func (w, p), w0, fmso);
a = build_matrix_3d (w, p);
b = a;
b ([1 5 9]) = 0;
if 0.01 < sum (abs (b (:)))
run_flag = 0;
end
end
a
[u s v] = svd (a)
b = a;
b (3, :) = 0;
disp (' ')
[uu ss vv] = svd (b)
disp (' ')
disp (ss (1) / ss (5))
Файл
find_worst_case_3d_func.m:
function res = find_worst_case_3d_func (w, p)
a = build_matrix_3d (w, p);
a (3, :) = 0;
s = svd (a);
res = s (2) / s (1);
end
Файл
build_matrix_3d.m:
function a = build_matrix_3d (w, p)
u = rotation_matrix_3d (w (2 : 4));
s = 1 + (p - 1) * acos (cos (w (1))) / pi;
s = diag ([p s 1]);
a =u * s;
end
Файл
rotation_matrix_3d.m:
function mat = rotation_matrix_3d (vector)
if isequal ([1 3], size (vector))
vector = vector';
elseif ~isequal ([3 1], size (vector))
error ('Input must be 3-element vector')
end
v_len = sqrt (sum (vector .^ 2));
if 0 == v_len
mat = eye (3);
else
vector = vector / v_len;
cl = cos (v_len);
mat = cl * eye (3) + (1 - cl) * vector * vector' + sin (v_len) * ...
[0 -vector(3) vector(2);vector(3) 0 -vector(1);-vector(2) vector(1) 0];
end
end
Понятно, что даже не смотря на случайную генерацию начального приближения статистическая представительность выдаваемых этим алгоритмом решений вызывает сомнение. Потому что, если рассматривать процесс оптимизации как нелинейный оператор проектирования из всего пространства параметров в пространство допустимых параметров (являющихся решением задачи), то нигде не гарантируется, что область значений этого проектора будет совпадать с всей областью допустимых параметров. Или даже что заполнение самой области значений будет равномерным. Другими словами, алгоритм
может находить примеры и контр-примеры, но даже многократное его применение
не может доказать их отсутствие.
Тем не менее, не смотря на эту оговорку получаются интересные результаты. Например, алгоритм ни разу не выдал 3x3 матрицу, после вычёркивания строки в которой число обусловленности ухудшилось. Сразу возникает
гипотеза: при вычёркивании строк матрицы её число обусловленности может только улучшаться. Это явно претендует на роль важной теоремы или хотя бы призывает найти контр-пример. Получающиеся матрицы имеют довольно интересный специальный вид (2-х типов), но он не так важен, как сама гипотеза.
(Оффтоп)
Вот бы пришёл добрый самаритянин, шарящий в линале, и ткнул бы меня носом в книжку, в которой это или что-то подобное доказывается. Потому что я даже не знаю, какие ключевые слова гуглить.
Далее, другими интересными результатами являются случаи, когда результирующая матрица имеет минимально возможное число обусловленности. Оно, очевидно, будет 1, так как не сложно привести пример:

в котором при вычёркивании последней строки число обусловленности улучшается с 10 до 1. Но интерес представляет вопрос,
в каких ещё случаях такое происходит. И программа такие интересные случаи находит. Все эти случаи характеризуются двумя фактами:
- среднее сингулярное значение s может быть произвольным,
- в удаляемой строке в матрице U в столбце, соответствующему этому сингулярному значению, стоит 0
- элемент матрицы U в удаляемой строке в последнем столбце может быть как больше других элементов столбца (по модулю), так и меньше.
То есть, выдвинутая мной ранее гипотеза, что наилучшее значение числа обусловленности получается при удалении строки с наибольшим по модулю элементом последнего столбца матрицы
U, нуждается в ревизии. Надо сравнивать не просто величину элемента для строки-кандидата, а величину этого элемента
относительно других элементов соответствующей строки матрицы
U. Каких именно и в каком виде — вопрос. Возможно, там вообще никаких закономерностей выловить не удастся, и ранее предложенный критерий максимальности модуля элемента последнего столбца — это лучшее, на что можно ориентироваться.
Чтобы пролить ещё чуть-чуть света на проблему, я думаю провернуть точно такой же эксперимент для матриц 4x4. Но пока застопорился на поиске формулы для матрицы поворота общего вида в 4-мерном пространстве. Я знаю, что там 6 степеней свободы, и видел кой-какие формулы, но они мне не нравятся из-за сложности и/или непонятности и/или отсутствия неограниченности параметров. Формула должна удовлетворять условиям непрерывности от оптимизируемых параметров, быть более-менее хорошо обусловленной для всех областей параметров и не иметь ограничений на параметры в виде неравенств. В этом случае алгоритм численной оптимизации будет иметь значительно меньше проблем со сходимостью и вырожденностью области значений при его рассмотрении как оператора нелинейного проектирования.
Combat Zone, озвучил в этом посте два вопроса, которые меня сейчас больше всего интересуют. Первый вопрос — в цитате в начале поста (с идущей далее попыткой его численного решения в частном случае, второй — выделенная жирным гипотеза ближе к концу поста. Буду очень благодарен, если поможете в решении и/или посоветуете литературу/статьи, где эти два вопроса обсуждаются. Извиняюсь, что вам приходится читать весь мой поток сознания, выражение мысли письменно помогает мне лучше разобраться в вопросе.