1. Trang chủ
  2. » Luận Văn - Báo Cáo

báo cáo bài tập lớn môn học đại số tuyến tính phương pháp successive over relaxation

11 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Báo cáo bài tập lớn môn học: Đại số tuyến tính phương pháp successive over-relaxation
Tác giả Nguyễn Quang Khánh, Hồ Thị Diệu Linh, Lê Hoàng Minh, Nguyễn Ngọc Hải
Người hướng dẫn GVHD: Đặng Văn Vinh
Trường học Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Đại số tuyến tính
Thể loại báo cáo
Năm xuất bản 2022 - 2023
Thành phố Tp.HCM
Định dạng
Số trang 11
Dung lượng 1,1 MB

Nội dung

Định nghĩaTrong đại số tuyến tính , phương pháp hồi quy liên tiếp SOR là phương pháp khái quát hơn của phương pháp Gauss–Seidel để giải một hệ phương trình tuyến tính, dẫn đến sự hội tụ

Trang 1

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC ỨNG DỤNG 2022 - 2023

-o0o -BÁO CÁO BÀI TẬP LỚN

MÔN HỌC: ĐẠI SỐ TUYẾN TÍNH

PHƯƠNG PHÁP SUCCESSIVE OVER-RELAXATION

Nhóm: 4 – ANO1 GVHD: ĐẶNG VĂN VINH

Tp.HCM, tháng 12 năm 2022

Trang 2

DANH SÁCH NHÓM 4

Mục lục 1.CƠ SỞ LÝ THUYẾT 2.ĐIỀU KIỆN HỘI TỤ

3 CHƯƠNG TRÌNH SỬ DỤNG THUẬT TOÁN

Trang 3

CƠ SỞ LÝ THUYẾT

I Định nghĩa

Trong đại số tuyến tính , phương pháp hồi quy liên tiếp (SOR) là phương pháp khái quát hơn của phương pháp Gauss–Seidel để giải một hệ phương trình tuyến tính, dẫn đến sự hội tụ nhanh hơn Là một phương pháp tương tự

có thể được sử dụng cho bất kỳ quá trình lặp lại hội tụ chậm nào

SOR được phát triển bằng cách sửa đổi mô hình lặp Gauss-Seidel Mô hình Gauss-Seidel dựa trên các bước sau

II Cơ sở lý thuyết

SOR là một phương pháp giải hệ phương trình tuyến tính thu được bằng cách ngoại suy phương pháp Gauss-Seidel Phép ngoại suy này có dạng trung bình có trọng số giữa lần lặp trước và lần lặp Gauss-Seidel được tính toán liên tiếp cho mỗi thành phần

trong đó biểu thị một phép lặp Gauss-Seidel và là hệ số ngoại suy Ý tưởng là chọn một giá trị cho điều đó sẽ đẩy nhanh tốc độ hội tụ của các lần lặp lại cho giải pháp

Theo thuật ngữ ma trận, thuật toán SOR có thể được viết là

trong đó các ma trận D, -L, và -U tương ứng biểu thị các phần đường chéo, tam giác dưới và tam giác trên của A

Nếu =1, phương pháp SOR đơn giản hóa thành phương pháp Gauss-Seidel Một lý do do Kahan (1958) chỉ ra rằng SOR không hội tụ nếu nằm ngoài khoảng (0,2)

Nói chung, không thể tính toán trước giá trị sẽ tối đa hóa tốc độ hội tụ của SOR Thông thường, một số ước tính heuristic được sử dụng, chẳng hạn như

=2-O(h) tại h là khoảng cách lưới của sự rời rạc của miền vật lý cơ bản

Trang 4

ĐIỀU KIỆN HỘI TỤ

Điều kiện cần để phương pháp SOR hội tụ là Vì vậy thì sẽ dẫn đến

Tỷ lệ hội tụ :

Tốc độ hội tụ cho phương pháp SOR có thể được phân tích Người ta cần giả định như sau

 tham số thư giãn là phù hợp:

Sau đó, tốc độ hội tụ có thể được biểu thị bằng

trong đó tham số thư giãn tối ưu được đưa ra bởi

Giả thiết cuối cùng được thỏa mãn đối với ma trận tam giác

các mục

Trang 5

CHƯƠNG TRÌNH SỬ DỤNG THUẬT

TOÁN

Sau đó, A có thể được phân tách thành một thành phần đường chéo D và các thành phần tam giác trên và dưới L và U :

Phương pháp giản quá mức liên tiếp là một kỹ thuật lặp giải quyết phía bên trái của biểu thức này cho x , sử dụng giá trị trước đó cho x ở phía bên tay phải Về mặt phân tích, điều này có thể được viết là:

ở đâu là xấp xỉ hoặc lần lặp thứ k của là lần lặp tiếp theo hoặc + 1 của X Tuy nhiên, bằng cách tận dụng dạng k tam giác của ( + ), các phần tử của D ωL x ( k +1) có thể được tính tuần tự bằng cách ể :

Trang 6

2.THUẬT TOÁN

Vì các phần tử có thể bị ghi đè khi chúng được tính toán trong thuật toán này nên chỉ cần một vectơ lưu trữ và việc lập chỉ mục vectơ được bỏ qua Thuật toán diễn ra như sau:

Inputs: , , A b ω

Output: φ

Choose an initial guess to the solutionφ

repeat until convergence

for ifrom until 1 ndo

set to 0σ

for jfrom until 1 ndo

≠ ifj ithen

set to σ σ + a ij φ j

end if

end ( -loop)j

set to φ i (1 − ω)φ i + ω(b i − ) / σ a ii

end ( -loop)i

check if convergence is reached

end (repeat)

Ghi chú

cũng có thể được viết ,

do đó tiết kiệm được một phép nhân trong mỗi lần lặp của vòng lặp - bên ngoài for

1.Chương trình 1

function [ x, err, iter, flag ] = sor(A, x, b, w, max_it, tol)

%

% [ x, err, iter, flag ] = sor(A, x, b, w, max_it, tol)

%

% SOR Successive Over-Relaxation Method

% This function solves linear equation systems such as Ax=b using SOR

Trang 7

% method (Successive Over-Relaxation).

% When the relaxation scalar w=1, the method used is Gauss-Seidel

%

% Input:

% A - input matrix

% x - inicial vector

% b - vector b

% w - relaxation scalar

% max_it - maximum number of iterations

% tol - tolerance

%

% Output:

% x - solution vector

% err - norm err estimate

% iter - nu,ber of performed iterations

% flag - 0 = a solution was found / 1 = no convergence for max_it

%

% Example:

% [ x, err, iter, flag ] = sor( [.5 125; 125 25], zeros(2,1),

% ones(2,1), 5, 1e4, 1e-4 )

%

% Author: Tashi Ravach

% Date: 08/06/2006

%

if nargin == 3

w = 5;

max_it = 1e4;

tol = 1e-4;

elseif nargin == 4

max_it = 1e4;

tol = 1e-4;

elseif nargin == 5

tol = 1e-4;

elseif nargin ~= 6

error('sor: invalid input parameters'); end

flag = 0;

Trang 8

iter = 0;

norma2_b = norm(b);

if (norma2_b == 0.0)

norma2_b = 1.0;

end

r = b - A * x;

err = norm(r) / norma2_b;

if (err < tol)

return

end

% separate A into several matrix for SOR/Gauss-Seidel

[ M, N, b ] = matsep(A, b, w, 2);

for iter = 1 : max_it

x_1 = x;

x = M \ (N * x + b); % adjust the aproximation %err = norm(x - x_1) / norm(x); % compute error

err = norm(x_1 - x, 1); % compute error

if (err <= tol) % check for convergence break

end

end

b = b / w; % vector b

if (err > tol) % no convergence

flag = 1;

end

end

function [ M, N, b ] = matsep(A, b, w, flag)

%

% [ M, N, b ] = matsep(A, b, w, flag)

%

% MATSEP Matrix Separation

% Input matrix is splitted into several others in diferent ways depending

% on the method to be used: Jacobi and SOR (Gauss-Seidel when w = 1)

%

% Input:

% A - input matrix

% x - inicial vector

Trang 9

% b - vector b

% flag - 1 = Jacobi / 2 = SOR

%

% Output:

% M - matrix M

% N - matrix N

% b - vector b (modified for SOR)

%

% Author: Tashi Ravach

% Date: 08/06/2006

%

if nargin ~= 4

error('matsep: invalid input parameters'); end

[ m, n ] = size(A);

if m ~= n

error('matsep: input matrix A must have dimension nXn');

end

[ l, o ] = size(b);

if l ~= n && o ~= 1

error('matsep: input matrix b must have dimension nX1');

end

if (flag == 1) % separation for Jacobi

M = diag(diag(A));

N = diag(diag(A)) - A;

elseif (flag == 2) % separation for SOR/Gauss-Seidel

b = w * b;

M = w * tril(A, -1) + diag(diag(A));

N = -w * triu(A, 1) + (1.0 - w) * diag(diag(A)); end

end

2.Chương trình 2

format short

clear all

clc

% slove the problem

% 2x1 -x2 = 7

Trang 10

% x p x ban đ u là (0,0,0)

A = [2 -1 0; -1 2 -1; 0 1 -2];

b = [7;1;1];

x = [0;0;0];

maxiter = 150;

err = 1e-5;

maxerr = input('enter the error allowed: ');

w = input('enter the relaxtion parmeter: ');

if size(A,1) ~= size(A,2)

disp('ERROR: MATRIX A SHOULD BE A SQUARE ') return

end

if size(b,1) ~= size(A,1) || size(b,2) ~= 1

disp('ERROR:input error please re-input data ') return

end

if size(x,1) ~= size(A,1) || size(x,2) ~= 1

disp('ERROR: please check input ')

return

end

D = diag(diag(A));

L = tril(A) - D;

U = triu(A) - D;

H = inv(D+w*L)*((1-w)*D-w*U);

C = w*inv(D+w*L)*b;

e = max(eig(H));

iter = 1;

y(1,:) = x;

if e<1

while sum(abs(err) <= maxerr) ~= size(A,1) xnew = H*x+C;

err = xnew-x;

x = xnew;

iter = iter+1;

y(iter,:) = x

if iter==maxiter

break

end

end

else

disp('NOT CONVERGED');

end

fprintf(' solution obtain after iteration is \n',iter) disp(x)

Được trích dẫn từ :

https://sites.google.com/site/harishg58iitr/?pli=1 (Dr Harish Garg)

https://en.wikipedia.org/wiki/Successive_over-relaxation

https://www.wolframalpha.com/input?

i=successive+overrelaxation+method&assumption=%22ClashPrefs

%22+-%3E+%7B%22MathWorld%22%2C+

%22SuccessiveOverrelaxationMethod%22%7D

Trang 11

Barrett, R.; Berry, M.; Chan, T F.; Demmel, J.; Donato, J.; Dongarra, J.; Eijkhout, V.; Pozo, R.; Romine, C.; and van der Vorst, H Templates for the Solution of Linear Systems:

Building Blocks for Iterative Methods, 2nd ed Philadelphia, PA: SIAM,

Young, D Applied Iterative Methods New York: Academic Press, 1981.Kahan, W Gauss-Seidel Methods of Solving Large Systems of Linear Equations Ph.D thesis Toronto,

Canada, University of Toronto, 1958.Press, W H.; Flannery, B P.; Teukolsky, S A.; and Vetterling, W T "Successive Overrelaxation (SOR)." Numerical Recipes in FORTRAN: The Art of Scientific Computing, 2nd ed Cambridge, England: Cambridge University Press,

pp 866-869, 1992.Varga, R Matrix Iterative Analysis Englewood Cliffs, NJ: Prentice-Hall, 1962.Young, D Iterative Solutions of Large Linear Systems New York: Academic Press, 1971.

Ngày đăng: 20/04/2024, 09:34

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w