45
Trong trường hợp này Matlab đã cho
0
z =
, thực tế
z
có thể nhận giá trị bất kỳ.
Với một hệ phương trình có vô số nghiệm, thì ta có thể tìm được một nghiệm có độ
dài nhỏ nhất chẳng hạn. Công thức của nghiệm có độ dài nhỏ nhất như sau
†
1
[
]
T
T −
=
=
x
A b
A AA
b .
Ma trận
†
1
[
]
T
T −
=
A
A AA
được gọi là ma trận tựa nghịch đảo trái của ma trận
A
.
Trong Matlab đã sẵn có một hàm để tính ma trận tựa nghịch đảo này, đó là
pinv(A). Như thế nghiệm có chuẩn nhỏ nhất (tối ưu) của hệ trên được tính là
>> A= [3 2 -1; 0 4 1]; b = [7; 2];
>> x=pinv(A)*b
x =
1.6667
0.6667
-0.6667
Hãy thử lại với
>> x=A'*inv(A*A')*b
x =
1.6667
0.6667
-0.6667
Khi tính toán với các đại lượng, ta cần phải lưu ý đến thứ tự ưu tiên các phép toán,
ví dụ khi giải hệ phương trình đại số tuyến tính
1
0.5
0.5
−
=
⇒
=
Kx
b
x
K b
Sau đây sẽ tính trong Matlab với các kiểu viết khác nhau
>> K=[2 2 3; 4 5 6; 7 8 9]; b=[2 3 4]';
>> x=0.5*K\b % cho ket qua sai
x = 0
-2.0000
2.6667
>> x=0.5*(K\b) % cho ket qua dung
x = 0
-0.5000
0.6667
>> x=0.5*inv(K)*b
x =
0.0000
-0.5000
0.6667