Я работаю над переводом некоторого кода MATLAB на Python, чтобы я мог лучше изучить MATLAB (сначала пытаюсь мыслить на языке Python), и я немного озадачен тем, что делает этот блок кода.
n = length(a);
S = zeros(n+1,n+1);
S(1,1) = sqrt(1/b(1));
S(2,:) = (S(1,:)-[0,a(1)*S(1,1:end-1)])/sqrt(b(2));
S(3,:) = (S(2,:)-[0,a(2)*S(2,1:end-1)]-[0,0,sqrt(b(2))*S(1,1:end-2)])/sqrt(b(3));
S(4,:) = (S(3,:)-[0,a(3)*S(3,1:end-1)]-[0,0,sqrt(b(3))*S(2,1:end-2)])/sqrt(b(4));
Я понимаю первые 2 строки (создайте матрицу n + 1 по n + 1 S), но у меня возникают проблемы с пониманием следующих 3.
Из того, что я понимаю(n:m)
- матричная поисковая запись.Таким образом, S(1, 1)
означает значение в 1-й строке первого столбца, которое установлено на 1/math.sqrt(b[0])
в терминах Python.Это означало бы, что в нашей матрице S первая строка - это массив, который 1/math.sqrt(b[0])
, а остальные - 0, верно?
Для 4-й строки у меня действительно возникают проблемы с пониманием vode.Мы говорим, что 2-я строка - это 1-я строка без массива от 0 до a(1)*S(1,1:end-1)
?Что именно представляет a(1)*S(1,1:end-1)
здесь?
Я вижу, что следующие 2 строки являются рекуррентным отношением, основанным на j-1-й и j-2-й строке для некоторого j> = 3 (2, если Python), но яимеют очень мало представления о том, что такое вычисление рекуррентного отношения.
Любая помощь в «переводе» этого кода на Python (с точки зрения псевдокода для понимания, а не реального жесткого кода) была бы чрезвычайно полезной, так как изучение MATLAB для меня было довольно сложно до сих пор.Спасибо.