И другие программы этой серии
Примеры:
A=
1
1
1
1
-3
1
-4
1
1
0
-5
1
-1
2
3
0
>> [u,t] = schur(A)
u=
-0.4883
-0.6416
-0.5757
0.1362
-0.5289
0.7465
-0.3986
-0.0646
-0.1403
-0.1528
0.0583
-0.9765
-0.6798
-0.0884
0.7115
0.1540
t=
1.2036
-2.7670
-0.8023
-0.0842
1.9478
2.3183
1.5080
2.6513
0
0
-0.6449
-2.9694
0
0
0.0000
-5.8771
>> [U,T] = rsf2csf(u,t)
U=
-0.3226 – 0.3631i 0.4318 + 0.4771i
-0.5757
0.1362
0.5771 – 0.3933i 0.2027 – 0.5551i
-0.3986
-0.0646
-0.0724 – 0.1044i 0.1183 + 0.1136i
0.0583
-0.9765
0.0682 – 0.5056i 0.4532 + 0.0657i
0.7115
0.1540
T=
1.7610 + 2.2536i
0
0
0
0.5003 – 1.2897i 1.1168 + 0.5967i 1.7196 + 0.0626i
1.7610 – 2.2536i 0.2383 + 1.1215i -0.4335 + 1.9717i
0
-0.6449
-2.9694
0
0
-5.8771
-8.0577
24.2131
-13.5058
0
8.8958
-8.1984
-4.3894
3.2744
6.1595
2.1241
-7.8918
-1.8237
4.5. О скорости выполнения
матричных операций
4.5.1. О повышении скорости вычислений
в старых версиях MATLAB
В литературе по устаревшим версиям системы MATLAB отмечаются факты резко
го ускорения выполнения матричных операций при переходе от обычных арифме
тических операций с элементами матриц (например, +, –, *, /, ^) к «параллельным»
поэлементным операциям (например, .+, .–, .*, ./, .^). Постараемся прояснить этот
вопрос применительно к использованию новых версий системы MATLAB.
4.5.2. Ситуация со скоростью вычислений
в MATLAB 7.*
В новых реализациях MATLAB благодаря применению ускорителя времени ис
полнения (JIT) такое увеличение стало мифическим. Покажем это на примере
выполнения операции поэлементного возведения элемента матрицы A в степень
элемента матрицы B, используя для этого следующие m файлы (программы):
Файл test1
Файл test2
A=rand(1000,1000);
B=rand(1000,1000);
for i=1:1000
for j=1:1000
A(i,j)=A(i,j)^B(i,j);
end
end
A=rand(1000,1000);
B=rand(1000,1000);
A=A.^B
• H = hess(A) находит H, верхнюю форму Хессенберга для матрицы A;
• [P,H] = hess(A) возвращает матрицу Хессенберга H и унитарную матри
цу преобразований P, такую что A=P*H*P\' и P\'*P=eye(size(A)).