Môn phương pháp số (Numerical methods) hay còn gọi là Giải tích số (Numerical analysí), Phương pháp tính (Computational methods) và rộng hơn là Toán học tính toán (Computational mathematics, Numerical mathematics) là một khoa học nghiên cứu cách giải gần đúng, mà chủ yếu là giải bằng số ( nói gọn là giải số) các phương trình, các bài toán xấp xỉ hàm số và các bài toán tối ưu hóa ( Theo Bách khoa toàn thư về khoa học và kỹ thuật, NXB Mc.graw Hill 1992).
Nói cách khác để thể hiện bản chất hơn, như trong lời giới thiệu bộ sách “Cẩm nang giải tích số” (Handbook of Numerical analysis) gồm 3 tập do các chuyên gia hàng đầu thế giới viết từ 1989 đến 1994 (Cỉalet P.G và Lión J.L chủ biên), Giải tích số là một phần của tóan học mô tả và phân tích các lược đồ số được sử dụng trên máy vi tính. Mục tiêu của nó là nhận được biểu diễn rõ ràng, chính xác và trung thực tất cả các thông tin chữa đựng trong các mô hình toán học. Nó là sự mở rộng tự nhiên của các công cụ cổ điển như lời giải giải tích, các biến đổi đặc biệt, giải tích hàm cũng như giải tích ổn định và tiệm cận.
Nói có thể gọn hơn môn phương pháp số nghiên cứu các phương pháp giải các bài toán bắng số trên máy tính. Với mục tiêu và nhiệm vụ như vậy, phương pháp số và máy tính là một công cụ đắc lực trong việc nghiên cứu các đối tượng, các quá trình tự nhiên và xã hội.
Như ta biết, để nghiên cứu các hiện tượng tự nhiên và xã hội, chẳng hạn các hiện tượng như mây, mưa, gió, nhiệt độ, áp suất, các quá trình thủy văn như dòng chảy, lũ lụt .; hiện tượng biến dạng, nứt nẻ của vật rắn .thay vì các mô hình vật lý, người ta xây dựng mô hình toán học của các hiện tượng này và nghiên cứu nó. Chính giải tích số hay phương pháp số thực hiện công đoạn nghiên cứu các phương pháp, thuật toán sử lý các mô hình toán học trên máy tính. Chính nó là cơ sở để xây dựng các phần mềm khoa học – mô phỏng máy tính của các đối tượng vật lý.
20 trang |
Chia sẻ: tuandn | Lượt xem: 4656 | Lượt tải: 1
Bạn đang xem nội dung tài liệu Đề tài Ứng dụng của phương pháp GAUSS, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Khoa Công Nghệ Thông Tin – Đại Học Thái Nguyên
Bộ môn khoa học máy tính.
***********0^0**********
BÀI TẬP LỚN MÔN PHƯƠNG PHÁP SỐ
Bài số 6: Ứng dụng của phương pháp Gauss, Hãy lập trình chương trình tìm ma trận nghịch đảo. (Lưu ý: Yêu cầu sinh viên xử lý cả trường hợp phần tự trụ xấp xỉ hoặc bằng 0)
Sinh viên thực hiện: Lưu Anh Tuấn.
Lớp : K6A
Thái Nguyên, Tháng 11 năm 2008.
MỤC LỤC
Trang
Mở đầu…………………………………………………………………….3
Chương I: Cơ sở lý thuyết………………………………………………..7
Chương II: Ví dụ minh họa………………………….……..…………….10
Chương III: Cài đặt thuật toán……………………………………..…….13
MỞ ĐẦU
Phương pháp số là gì?
Môn phương pháp số (Numerical methods) hay còn gọi là Giải tích số (Numerical analysí), Phương pháp tính (Computational methods) và rộng hơn là Toán học tính toán (Computational mathematics, Numerical mathematics) là một khoa học nghiên cứu cách giải gần đúng, mà chủ yếu là giải bằng số ( nói gọn là giải số) các phương trình, các bài toán xấp xỉ hàm số và các bài toán tối ưu hóa ( Theo Bách khoa toàn thư về khoa học và kỹ thuật, NXB Mc.graw Hill 1992).
Nói cách khác để thể hiện bản chất hơn, như trong lời giới thiệu bộ sách “Cẩm nang giải tích số” (Handbook of Numerical analysis) gồm 3 tập do các chuyên gia hàng đầu thế giới viết từ 1989 đến 1994 (Cỉalet P.G và Lión J.L chủ biên), Giải tích số là một phần của tóan học mô tả và phân tích các lược đồ số được sử dụng trên máy vi tính. Mục tiêu của nó là nhận được biểu diễn rõ ràng, chính xác và trung thực tất cả các thông tin chữa đựng trong các mô hình toán học. Nó là sự mở rộng tự nhiên của các công cụ cổ điển như lời giải giải tích, các biến đổi đặc biệt, giải tích hàm cũng như giải tích ổn định và tiệm cận.
Nói có thể gọn hơn môn phương pháp số nghiên cứu các phương pháp giải các bài toán bắng số trên máy tính. Với mục tiêu và nhiệm vụ như vậy, phương pháp số và máy tính là một công cụ đắc lực trong việc nghiên cứu các đối tượng, các quá trình tự nhiên và xã hội.
Như ta biết, để nghiên cứu các hiện tượng tự nhiên và xã hội, chẳng hạn các hiện tượng như mây, mưa, gió, nhiệt độ, áp suất, các quá trình thủy văn như dòng chảy, lũ lụt….; hiện tượng biến dạng, nứt nẻ của vật rắn….thay vì các mô hình vật lý, người ta xây dựng mô hình toán học của các hiện tượng này và nghiên cứu nó. Chính giải tích số hay phương pháp số thực hiện công đoạn nghiên cứu các phương pháp, thuật toán sử lý các mô hình toán học trên máy tính. Chính nó là cơ sở để xây dựng các phần mềm khoa học – mô phỏng máy tính của các đối tượng vật lý.
Sự khác biệt của toán tính với toán lý thuyết.
Khi nghiên cứu một bài toán, một mô hình toán học các nhà toán học lý thuyết thường chỉ quan tâm đến các vấn đề định tính của các bài toán như vấn đề tồn tại, duy nhất và các tính chất của nghiệm của bài toán, còn các nhà toán tính thì quan tâm đến việc xây dựng phương pháp, thuật toán để tìm nghiệm trên máy tính.
Vì thế các vấn đề đặt ra là: Tính khả thi và tính hiệu quả của thuật toán.
Ở đây, một thuật toán được gọi là khả thi nếu nó có thể thực hiện được trên hệ thống tính toán hiện có hoặc trong tương lại. Còn hiệu quả của thuật toán ám chỉ chi phí về tài nguyên máy tính, thời gian thực hiện để có được lời giải với độ chính xác cho trước. Điều kiện cần có cho tính chất trên là sự ổn định của thuật toán.
Có thể hiểu một cách nôm na, một thuật toán được gọi là ổn định nếu số tính toán ( do máy tính làm tròn số) không bị khuếch đại trong quá trình tính.
Để hiểu rõ những điều nêu trên, ta xét một ví dụ sau:
Thí dụ 1: ( Tính ổn định) giả sử phân tích tích phân
Tích phân từng phần ta đựơc:
Ngoài ra ta có:
Như vậy, để tính ta thu được công thức truy hồi
Đến đây, về mặt lý thuyết dường như bài tóan đã được giải quyết và có thể tính với n bất kỳ lớn hơn 1 trên máy tính. Nhưng thực tế tính trên máy tính lại không cho ta kết quả mong muốn khi n lớn. Cụ thể là tính trên máy tính với n=25 ta được bảng có kết qủa sau (liệt kê theo từng hàng)
0.3679
0.2642
0.2073
0.1709
0.1455
0.1368
0.1124
0.1009
0.0916
0.0839
0.0774
0.0718
0.0669
0.0627
0.0590
0.0555
0.0572
-0.0295
1.5596
-30.1924
635.0403
-13969.8864
321308.3881
-7711400.3133
192785008.8325
Nhìn vào bảng trên ta thấy kết quả giảm dần từ 0.3679 (khi n=1) đến 0.0555 (khi n=16), sau đó kết quả thay đổi thất thường và giá trị tuyệt đối tăng rất nhanh. Điều này hoàn toàn không phù hợp với lý thuyết vì theo lý thuyết thì
Do
Hiện tượng kết quả tính toán nêu trên là sự không ổn định của thuật toán: sai số ban đầu khi tính đã bị khuyếch đại trong quá trình tính. Điều này có thể lý giải như sau:
Thay vì ta thu được trong đó là sai số.
Giả sử các tính toán tiếp theo không mắc phải sai số. Thế thì khi tính cho n=2 ta được . Như vậy ta thu được với sai số . Lập luận tương tự ta có thể chứng tỏ rằng ở bứơc thứ n thay cho giá trị đúng ta thu được giá trị gần đúng với sai số . Do đó, dù có bé thì n đủ lớn sai số vẫn đủ lớn và ta không thể nhận được giá trị chấp nhận được là gần đúng cho .
Thí dụ 2 (tính khả thi). Cho hệ phương trình đại số tuyến tính
Ax=b (1)
Trong đó A là ma trận vuông cấp n với định thức khác 0. Về lý thuyết có thể giải hệ bằng công thức Cramer
(i=1,…,n) (2)
Trong đó , còn nhận được từ do việc thay đổi cột thứ I bởi cột tự do b. Nhưng việc tính toán ra nghiệm bằng số cụ thể lại là một việc không dơn giản.
Theo công thức (2) cần phải tính n+1 định thức cấp n. Mỗi định thức là tổng n! số hạng, mỗi số hạng là tích của n thừa số. Do vậy, để tính mỗi số hạng cần thực hiện n-1 phép nhân. Như vậy, tất cả số phép tính nhân cần thực hiện trong (2) là Q=N!(n+1)(n-1).
Giả sử n=20. Khi đó . Nếu tốc độ máy tính là 100 triệu phép tính/giây thì thời gian thực hiện khối lượng tính toán trên là 2.6965* giờ bằng 3.0782* năm. Một thời gian vô cùng lớn. Và như vậy, thuật toán nêu trên là hoàn toàn không khả thi dù máy tính có tăng tốc độ lên gấp hàng nghìn, hàng vạn lần.
Ở trên ta mới chỉ xét việc giải một hệ cỡ 20, mà thực tế khoa học và công nghệ đòi hỏi phải giải các hệ phương trình đại số tuyến tính cỡ hàng vạn, hàng triệu hoặc hơn thế nữa. Vì thế, cần phải nghiên cứu đề xuất các phương pháp hiệu quả để có thể giải được các hệ thống phương trình cỡ lớn. Đó là một trong các nhiệm vụ của ngành phương pháp số.
3.Phương pháp số, các phần mềm toán học và tính toán khoa học.
Thông thường các thuật toán cơ bản của giải tích đại số được tổ chức thành các thư viện chương trình với các tên gọi là các Package, Toolbox,lib… Chúng được đưa vào các phần mềm toán học như Mathematica, Maple và đặc biệt là MATLAB-một môi trường tính toán kĩ thuật và đồ họa nhanh được sử dụng rất rộng rãi, phục vụ cho nghiên cứu và tính toán kỹ thuật. Ngoài ra, các phương pháp số giải các lớp bài toán khác nhau của khoa học và công nghệ cũng đã được lập trình thành các phần mềm chuyên phục vụ giải các lớp bài toán khác nhau, chẳng hạn bộ chương trình phần tử hữu hạn để giải các bài toán cơ học, bộ chương trình tính toán thuỷ lực, bộ chương trình tính toán ôi nhiễm khí quyển,… Các phần mềm trên có tên gọi chung là phần mềm tính toán khoa học.
CHƯƠNG I. CƠ SỞ LÝ THUYẾT
1.Thuật toán khử gauss trong giải hệ phương trình tuyến tính
Lịch sử phát triển của loài người đã cho thấy rằng, con người luôn mong muốn tìm ra những phương pháp và công cụ, để phục vụ cho công việc tính toán đầy “cực khổ” của mình. Và con người đã thực sự đạt được những thành tựu to lớn. Nhà toán học người Pháp Laplace đã nói rằng: “việc phát minh ra Lôgarit (bảng Lôgarit) đã kéo dài tuổi thọ của các nhà tính toán”. Nhưng mãi cho đến khi phát minh ra máy tính điện tử, con người mới thật sự có được một công cụ hỗ trợ tính toán đắc lực và hiệu quả. Ngày nay hầu hết các công việc tính toán phức tạp trong khoa học kỹ thuật đều do máy tính đảm nhiệm. Do đó việc tìm ra và cài đặt cho máy tính những thuật toán tốt là một yêu cầu thực tế. Một trong những tính toán cơ bản và hay gặp là giải hệ phương trình tuyến tính (HPTTT).
Một HPTTT được định nghĩa là hệ gồm m phương trình đại số bậc nhất đối với n ẩn số có dạng như sau:
Hệ phương trình (I) còn được viết dưới dạng ma trận như là:AX=B (II)
Trong đó ma trận A được gọi là ma trận Hệ Số, ma trận B được gọi là ma trận vế phải, còn ma trận X là ma trận ẩn. Khi số phương trình bằng số ẩn (m=n) và định thức của ma trận hệ số ,ta gọi hệ phương trình trên là hệ Cramer. Thông thường chúng ta hay làm việc với hệ Cramer, nên ở đây ta chỉ quan tâm đến hệ Cramer và nói đến HPTTT ta mặc định hiểu là hệ Cramer.
Để giải HPTTT chúng ta có nhiều phương pháp, được chia làm hai loại. Các phương pháp trực tiếp hay phương pháp giải chính xác và các phươngpháp gián tiếp hay phương pháp lặp. Thuật toán khử Gauss là một phương pháp giải HPTTT trực tiếp và hẳn là đã rất quen thuộc với mỗi chúng ta. Nó là một phương pháp tốt, thích hợp để cài đặt trên máy tính, được khám phá ra cách đây khoảng 160 năm. Khử Gauss là một thuật toán đã được cài đặt sẵn trongcác thư viện chương trìnhcủa hầu hết các ngôn ngữ lập trình bậc cao phổ dụng như APL hay BASIC. Với các HPTTT có số phương trình nhỏ, con người có thể áp dụng thuật toán Gauss và cho ra kết quả. Nhưng với những HPTTT có số phương trình lớn hoặc rất lớn rõ ràng con người cần đến sự trợ giúp của Máy Tính. Bây giờ chúng ta sẽ tìm hiểu cách cài đặt thuật toán khử Gauss trên ngôn ngữ lập trình MATLAB. Với mục đích tạo ra một chương trình giải các HPTTT lớn phục vụ cho học tập và nghiên cứu, và quan trọng hơn là rèn luyện kỹ năng cài đặt các thuật toán toán học. Tư tưởng chính của thuật toán Gauss là bằng các phép biến đổi tương đương:
1) Nhân hai vế một phương trình của HPTTT với cùng một số khác 0.
2) Cộng một phương trình với phương trình khác sau khi nhân phương trình đó với một số.
3) Đổi vị trí hai phương trình trong HPTTT cho nhau.
Đưa HPTTT đã cho về hệ tam giác trên, rồi giải HPTTT tam giác trên.
2.Áp dụng phương pháp gauss để tính ma trận nghịch đảo.
Muốn tính ma trận nghịch đảo của ma trận vuông A = [aij], theo định lý: “Nếu khả đảo tức là có nghị đảo thì ”
Ta chỉ cần tìm ma trận B = [bij] sao cho AB = I, khi đó để đơn giản cách viết ta xét trường hợp ma trận cấp ba:
Ta phải tìm ma trận
Sao cho:
.=
Trong đó: I = là ma trận đơn vị
Đó là ba hệ đại số tuyến tính có chung ma trận hệ số là A. Ta sẽ giải chúng bằng phương pháp Gauss trong cùng một bảng.
Quy tắc thực hành: Muốn tính ma trận nghịch đảo của ma trận A bằng phép biến đổi sơ cấp về hàng ta làm như sau:
Viết ma trận đơn vị I bên cạnh ma trận A.
Áp dụng các phép biến đổi sơ cấp về hàng để đưa dần ma trận A về ma trận đơn vị I, tác động đồng thời phép biến đổi sơ cấp vào cột ma trận I.
Khi A đã được biến đổi thành I thì I trở thành ma trận nghịch đảo .
Lưu ý: Các phần tử ( i = 1,n) là các phần tử trụ, nếu = 0 thì hệ suy biến.
CHƯƠNG II: VÍ DỤ ÁP DỤNG
VÍ DỤ 1: Tìm ma trận nghịch đảo bằng phương pháp gauss
Giải:
1 2 3
2 5 3
1 0 8
1 0 0
0 1 0
0 0 1
L1
L2
L3
1 2 3
0 1 -3
0 -2 5
1 0 0
-2 1 0
-1 0 1
L1 à L1
-2L1 + L2 à L2
-1L1 + L3 à L3
1 2 3
0 1 -3
0 0 -1
1 0 0
-2 1 0
-5 2 1
L1 à L1
L2 à L2
2L2 + L3 à L3
1 2 3
0 1 -3
0 0 1
1 0 0
-2 1 0
5 -2 -1
-1L3 à L3
L2 à L2
L3 à L3
1 2 0
0 1 0
0 0 1
-14 6 3
13 -5 -3
5 -2 -1
-3L3 + L1 à L1
3L3 + L2 à L2
L3à L3
1 0 0
0 1 0
0 0 1
-40 16 9
13 -5 -3
5 -2 -1
-2L2 + L1 à L1
L2 à L2
L3 àL3
Vậy:
VD 2: Dùng phương pháp Gauss tìm ma trận nghịch đảo của:
Giải:
1 1 2
2 3 2
1 3 -1
1 0 0
0 1 0
0 0 1
L1
L2
L3
1 1 2
0 1 -2
0 2 -3
1 0 0
-2 1 0
-1 0 1
L1 à L1
L2 - 2L1à L2
L3 – L1 à L3
1 1 2
0 1 -2
0 0 1
1 0 0
-2 1 0
3 -2 1
L1 à L1
L2 à L2
L3 -2L2 à L3
1 1 0
0 1 0
0 0 1
-5 4 -2
4 -3 2
3 -2 1
L1 – 2L3 à L1
L2 +2L3 àL2
L3 à L3
1 0 0
0 1 0
0 0 1
-9 7 -4
4 -3 2
3 -2 1
L1 – L2 à L1
L2 à L2
L3 à L3
Vậy:
VD3: Tìm ma trận nghịch đảo bằng phương pháp gauss:
Giải:
1 3 -5 7
0 1 2 -3
0 0 1 2
0 0 0 1
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
L1
L2
L3
L4
1 3 -5 0
0 1 2 0
0 0 1 0
0 0 0 1
1 0 0 -7
0 1 0 3
0 0 1 -2
0 0 0 1
L1 – 7L4 à L1
L2 + 3L4 àL2
L3 – 2L4 à L3
L4 à L4
1 3 0 0
0 1 0 0
0 0 1 0
0 0 0 1
1 0 5 -17
0 1 -2 7
0 0 1 -2
0 0 0 1
L1 + 5L2 à L1
L2 – 2L2 à L2
L3 à L3
L4 à L4
1 0 0 0
0 1 0 0
0 0 1 0
0 0 0 1
1 -3 11 -38
0 1 -2 7
0 0 1 -2
0 0 0 1
L1 -3L2 à L1
L2 à L2
L3 à L3
L4 à L4
Vậy:
CHƯƠNG III: CÀI ĐẶT THUẬT TOÁN
Giao diện chương trình:
Mã nguồn:
function varargout = gaussltimmatrandao(varargin)
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @gaussltimmatrandao_OpeningFcn, ...
'gui_OutputFcn', @gaussltimmatrandao_OutputFcn, ...
'gui_LayoutFcn', [] , ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
function gaussltimmatrandao_OpeningFcn(hObject, eventdata, handles, varargin)
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
function varargout = gaussltimmatrandao_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
function giai_Callback(hObject, eventdata, handles)
a=get(handles.matran, 'string'); %gan gia tri o o nhap matran vao bien a
n=get(handles.soN, 'string');
a=str2num(a); % doi ki tu string ra so
n=str2num(n);
clc; %xoa man hinh
fprintf('Ma tran da cho: ');
a %in ma tran a
b=eye(n); %b la ma tran don vi
c=zeros(n); %c la ma tran 0
d=zeros(n); %d la ma tran 0
fprintf('Bai giai');
z=[a b] %in ra z la ma tran a va ma tran don vi b
for i=1:n
if a(i,i)==0 %xet xem he co suy bien hay ko?
fprintf('He suy bien');
msgbox('He suy bien, ko tinh duoc','Bao Cao')
break %thoat vo dieu kien neu he suy bien
end
aii=a(i,i);
for j=1:n
a(i,j)=a(i,j)/aii; %chia ca phan tu cua a o hang thu i cho aii
b(i,j)=b(i,j)/aii; %chia ca phan tu cua b o hang thu i cho aii
c(j)=a(i,j); %luu lai gia tri cac phan tu cua ma tran a
%o hang thu i vao ma tran c hang thu i
d(j)=b(i,j); %luu lai gia tri cac phan tu cua ma tran b
o hang thu i vao ma tran d hang thu i
end
for ii=i+1:n
heso=-a(ii,i); %lay he so de nhan
for j=1:n
a(ii,j)=a(ii,j)+c(j)*heso; %bien doi he so cua a(i+1,j)
b(ii,j)=b(ii,j)+d(j)*heso; %bien doi he so cua a(i+1,j)
end
end
z=[a b] %in ra ma tran z sau moi lan bien doi
end
%sau khi tinh xong o tren, ma tran a chuyen thanh ma tran tam giac
%tren,ma tran b chua tinh den ket qua.
%----------------------
% Bat dau qua trinh tinh ben doi ma tran a ve ma tran don vi
%---------------------------------------
i=n;
c=zeros(n);
d=zeros(n);
while i>=1 %vi ko dung duoc vong lap for tu so lon den so be
%nen ta phai dung vong lap while
%qua trinh tinh toan tuong tu
j=n;
while j>=1
c(j)=a(i,j);
d(j)=b(i,j);
j=j-1;
end
ii=i-1;
while ii>=1
heso=-a(ii,i);
j=n;
while j>=1
a(ii,j)=a(ii,j)+c(j)*heso;
b(ii,j)=b(ii,j)+d(j)*heso;
j=j-1;
end
ii=ii-1;
end
z=[a b]
i=i-1;
end
fprintf('Ma tran nghich dao la ');
x=b %ket qua ma tran nghich dao la ma tran b.
set(handles.kq,'string', num2str(x));
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
close
function soN_Callback(hObject, eventdata, handles)
function soN_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
function matran_Callback(hObject, eventdata, handles)
function matran_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
Ví dụ minh họa:
VD1: Tìm ma trận nghịch đảo:
Nhập giá trị cho ma trận A: [1 2 3;2 5 3;1 0 8]
Nhập giá trị cho n: 3
Tính, Kết quả hiện ra:
Quá trình tính trong matlab:
Ma tran da cho:
a =
1 2 3
2 5 3
1 0 8
Bai giai
z =
1 2 3 1 0 0
2 5 3 0 1 0
1 0 8 0 0 1
z =
1 2 3 1 0 0
0 1 -3 -2 1 0
0 -2 5 -1 0 1
z =
1 2 3 1 0 0
0 1 -3 -2 1 0
0 0 -1 -5 2 1
z =
1 2 3 1 0 0
0 1 -3 -2 1 0
0 0 1 5 -2 -1
z =
1 2 0 -14 6 3
0 1 0 13 -5 -3
0 0 1 5 -2 -1
z =
1 0 0 -40 16 9
0 1 0 13 -5 -3
0 0 1 5 -2 -1
z =
1 0 0 -40 16 9
0 1 0 13 -5 -3
0 0 1 5 -2 -1
Ma tran nghich dao la
x =
-40 16 9
13 -5 -3
5 -2 -1
VD2: Tìm ma trận nghịc đảo bằng phương pháp Gauss:
Nhập giá trị cho A: [2 3 5 6;4 5 2 1;6 3 5 7;4 5 6 2]
Nhập giá trị cho n: 4
Tính, kết quả:
Quá trình giải trong matlab.
Ma tran da cho:
a =
2 3 5 6
4 5 2 1
6 3 5 7
4 5 6 2
Bai giai
z =
2 3 5 6 1 0 0 0
4 5 2 1 0 1 0 0
6 3 5 7 0 0 1 0
4 5 6 2 0 0 0 1
z =
1.0000 1.5000 2.5000 3.0000 0.5000 0 0 0
0 -1.0000 -8.0000 -11.0000 -2.0000 1.0000 0 0
0 -6.0000 -10.0000 -11.0000 -3.0000 0 1.0000 0
0 -1.0000 -4.0000 -10.0000 -2.0000 0 0 1.0000
z =
1.0000 1.5000 2.5000 3.0000 0.5000 0 0 0
0 1.0000 8.0000 11.0000 2.0000 -1.0000 0 0
0 0 38.0000 55.0000 9.0000 -6.0000 1.0000 0
0 0 4.0000 1.0000 0 -1.0000 0 1.0000
z =
1.0000 1.5000 2.5000 3.0000 0.5000 0 0 0
0 1.0000 8.0000 11.0000 2.0000 -1.0000 0 0
0 0 1.0000 1.4474 0.2368 -0.1579 0.0263 0
0 0 0 -4.7895 -0.9474 -0.3684 -0.1053 1.0000
z =
1.0000 1.5000 2.5000 3.0000 0.5000 0 0 0
0 1.0000 8.0000 11.0000 2.0000 -1.0000 0 0
0 0 1.0000 1.4474 0.2368 -0.1579 0.0263 0
0 0 0 1.0000 0.1978 0.0769 0.0220 -0.2088
z =
1.0000 1.5000 2.5000 0 -0.0934 -0.2308 -0.0659 0.6264
0 1.0000 8.0000 0 -0.1758 -1.8462 -0.2418 2.2967
0 0 1.0000 0 -0.0495 -0.2692 -0.0055 0.3022
0 0 0 1.0000 0.1978 0.0769 0.0220 -0.2088
z =
1.0000 1.5000 0 0 0.0302 0.4423 -0.0522 -0.1291
0 1.0000 0 0 0.2198 0.3077 -0.1978 -0.1209
0 0 1.0000 0 -0.0495 -0.2692 -0.0055 0.3022
0 0 0 1.0000 0.1978 0.0769 0.0220 -0.2088
z =
1.0000 0 0 0 -0.2995 -0.0192 0.2445 0.0522
0 1.0000 0 0 0.2198 0.3077 -0.1978 -0.1209
0 0 1.0000 0 -0.0495 -0.2692 -0.0055 0.3022
0 0 0 1.0000 0.1978 0.0769 0.0220 -0.2088
z =
1.0000 0 0 0 -0.2995 -0.0192 0.2445 0.0522
0 1.0000 0 0 0.2198 0.3077 -0.1978 -0.1209
0 0 1.0000 0 -0.0495 -0.2692 -0.0055 0.3022
0 0 0 1.0000 0.1978 0.0769 0.0220 -0.2088
Ma tran nghich dao la
x =
-0.2995 -0.0192 0.2445 0.0522
0.2198 0.3077 -0.1978 -0.1209
-0.0495 -0.2692 -0.0055 0.3022
0.1978 0.0769 0.0220 -0.2088
>>
VD3: trường hợp phần tử trụ bằng 0:
Nhập A: [0 2 3;5 0 2;3 2 0]
Nhập n: 3
Kết quả:
Hệ suy biến không tính được.