12
http://bkcar.net/ Trang 1 Câu 1 : Viết chương trình tìm nghim ca hPhương trình ñại stuyến tính Ax=b bng phương pháp nhân tLU (SGK,trang 44-48).áp dng ñối vi hphương trình có ma trn A=(a ij ) cp n=50 vi Gii 1. Phân tích bài toán Theo ñề bài ta thy ma trn A chính là ma trn 5 ñường chéo.ta áp dng công thc Để thhin thut toán Doolittle trong trường hp ma trn hscó dng ba ñường chéo,thay vì ñưa vào ma trn A,ta ñưa vào 5 vecto :a cha các phn ttrên ñường chéo chính ca A,b là ñường chéo nm trên ñường chéo chính và c là ñường chéo nm dưới ñường chéo chính , d là ñường chéo nm trên ñường chéo b, e là ñường chéo nm dưới ñường chéo c và mt vecto tdo là k. 2. Sdng MATLAB function[x]=matran5duongcheo(N,a,b,c,d,e,k) if nargin<7,error('ham co toi thieu 7 doi so');end; u(1)=a(1);v(1)=b(1);r(1)=d(1);l(1)=c(1)/u(1);t(1)=e(1)/u(1);y(1)=k(1); u(2)=a(2)-(l(1)*v(1));y(2)=k(2)-(l(1)*y(1)); t(2)=e(2)/u(2); r(2)=d(2); l(2)=(c(2)-(t(1)*v(1)))/u(2); v(2)=b(2)-(l(1)*r(1)); for i=3:N-2 u(i)=a(i)-(t(i-2)*r(i-2))-(l(i-1)*v(i-1)); t(i)=e(i)/u(i); r(i)=d(i); l(i)=(c(i)-(t(i-1)*v(i-1)))/u(i); v(i)=b(i)-(l(i-1)*r(i-1)); y(i)=k(i)-(l(i-1)*y(i-1))-(t(i-2)*y(i-2)); end;

ppt- nhom 2

Embed Size (px)

Citation preview

Page 1: ppt- nhom 2

http://bkcar.net/

Trang 1

Câu 1: Viết chương trình tìm nghiệm của hệ Phương trình ñại số tuyến tính Ax=b bằng phương pháp nhân tử LU (SGK,trang 44-48).áp dụng ñối với hệ phương trình có ma trận A=(aij) cấp n=50 với

Giải

1. Phân tích bài toán Theo ñề bài ta thấy ma trận A chính là ma trận 5 ñường chéo.ta áp dụng công thức

Để thể hiện thuật toán Doolittle trong trường hợp ma trận hệ số có dạng ba ñường chéo,thay vì ñưa vào ma trận A,ta ñưa vào 5 vecto :a chứa các phần tử trên ñường chéo chính của A,b là ñường chéo nằm trên ñường chéo chính và c là ñường chéo nằm dưới ñường chéo chính , d là ñường chéo nằm trên ñường chéo b, e là ñường chéo nằm dưới ñường chéo c và một vecto tự do là k.

2. Sử dụng MATLAB

function [x]=matran5duongcheo(N,a,b,c,d,e,k) if nargin<7,error( 'ham co toi thieu 7 doi so' ); end ; u(1)=a(1);v(1)=b(1);r(1)=d(1);l(1)=c(1)/u(1);t(1)=e (1)/u(1);y(1)=k(1); u(2)=a(2)-(l(1)*v(1));y(2)=k(2)-(l(1)*y(1)); t(2)=e(2)/u(2); r(2)=d(2); l(2)=(c(2)-(t(1)*v(1)))/u(2); v(2)=b(2)-(l(1)*r(1)); for i=3:N-2 u(i)=a(i)-(t(i-2)*r(i-2))-(l(i-1)*v(i-1)); t(i)=e(i)/u(i); r(i)=d(i); l(i)=(c(i)-(t(i-1)*v(i-1)))/u(i); v(i)=b(i)-(l(i-1)*r(i-1)); y(i)=k(i)-(l(i-1)*y(i-1))-(t(i-2)*y(i-2)); end ;

Page 2: ppt- nhom 2

http://bkcar.net/

Trang 2

v(N-1)=b(N-1)-(l(N-2)*r(N-2)); u(N-1)=a(N-1)-(t(N-3)*r(N-3))-(l(N-2)*v(N-2)); l(N-1)=(c(N-1)-(t(N-2)*v(N-2)))/u(N-1); y(N-1)=k(N-1)-(l(N-2)*y(N-2))-(t(N-3)*y(N-3)); u(N)=a(N)-(t(N-2)*r(N-2))-(l(N-1)*v(N-1)); y(N)=k(N)-(l(N-1)*y(N-1))-(t(N-2)*y(N-2)); x(N)=y(N)/u(N) x(N-1)=(y(N-1)-(v(N-1)*x(N)))/u(N-1); for i=N-2:-1:1 x(i)=(y(i)-(r(i)*x(i+2))-(v(i)*x(i+1)))/u(i); end ;

CHẠY CHƯƠNG TRÌNH

>>N=50;

>> a=linspace(4,4,50);

>> b=linspace(-1,-1,49);

>> c=linspace(-1,-1,49);

>> d=linspace(-1,-1,48);

>> e=linspace(-1,-1,48);

>> k=linspace(1,1,50);

>> x=matran5duongcheo(N,a,b,c,d,e,k)

x =

Columns 1 through 9

6.9862 11.0276 15.9173 20.2067 24.4489 28.4328 32.2389 35.8366 39.2375

Columns 10 through 18

42.4371 45.4373 48.2372 50.8372 53.2372 55.4372 57.4372 59.2372 60.8372

Columns 19 through 27

62.2372 63.4372 64.4372 65.2372 65.8372 66.2372 66.4372 66.4372 66.2372

Columns 28 through 36

65.8372 65.2372 64.4372 63.4372 62.2372 60.8372 59.2372 57.4372 55.4372

Page 3: ppt- nhom 2

http://bkcar.net/

Trang 3

Columns 37 through 45

53.2372 50.8372 48.2372 45.4373 42.4371 39.2375 35.8366 32.2389 28.4328

Columns 46 through 50

24.4489 20.2067 15.9173 11.0276 6.9862

Page 4: ppt- nhom 2

http://bkcar.net/

Trang 4

Câu 2: cho hệ phương trình vi phân cấp một:

Sử dụng phương pháp runge – kutta bậc 4,hãy xấp xỉ các hàm x(t),y(t) trong [0,1] với bước h=0.1.vẽ ñồ thị của các hàm x(t) và y(t) trên cùng một hệ trục tọa ñộ.

Giải

1. Phân tích cách giải và công thức tổng quát

ñây là hệ phương trình vi phân cấp 1.ta dung phép biến ñổi sau ñể ñưa về dạng quen làm

Hệ phương trình sẽ có dạng:

Với các thong số h=0.1,khoảng xấp xỉ nghiệm [0,1],ta dùng công thức runge – kutta như sau:

2. Sử dụng MATLAB

function [x,y1,y2]= Kutta4(a,b,y1a,y2a,n) x=[];x=[x,a];h=(b-a)/n; for i=1:n,x(i+1)=x(i)+h; end; %tinh cac gia tri cua x1 den xn y1=[];y1=[y1,y1a]; %dua y1 ra dang ma tran

Page 5: ppt- nhom 2

http://bkcar.net/

Trang 5

y2=[];y2=[y2,y2a]; % dua y2 ra dang ma tran for i=1:n k11=h*f(x(i),y1(i),y2(i)); k12=h*g(x(i),y1(i),y2(i)); k21=h*f(x(i)+h/2,y1(i)+k11/2,y2(i)+k12/2); k22=h*g(x(i)+h/2,y1(i)+k11/2,y2(i)+k12/2); k31=h*f(x(i)+h/2,y1(i)+k21/2,y2(i)+k22/2); k32=h*g(x(i)+h/2,y1(i)+k21/2,y2(i)+k22/2); k41=h*f(x(i)+h,y1(i)+k31,y2(i)+k32); y1(i+1)=y1(i)+(k11+2*k21+2*k31+k41)/6; %gia tri y1 k42=h*g(x(i)+h,y1(i)+k31,y2(i)+k32); y2(i+1)=y2(i)+(k12+2*k22+2*k32+k42)/6; %gia tri y2 end; % Vong lap tinh cac gia tri cua y1(1) va y2(1) den y1(n) va y2(n) function [f1] = f(x,y1,y2) %ham f1 f1=(x+1)*y1+y2-0.2*x ; function [f2] = g(x,y1,y2) %ham f2 f2= y1-sin(x)*y2+x*cos(x); Chạy chương trình

ta dùng lệnh inline cho hàm f1,f2.

>> a=0;

>> b=1;

>> y1a=0;

>> y2a=0;

>> n=10;

>> f1=inline('(x+1)*y1+y2-0.2*x','x');

>> f2=inline('y1-(sinx)*y2+x*cosx','x');

>> [x,y1,y2]= Kutta4(a,b,y1a,y2a,n)

Page 6: ppt- nhom 2

http://bkcar.net/

Trang 6

x =

0 0.1000 0.2000 0.3000 0.4000 0.5000 0.6000 0.7000 0.8000 0.9000 1.0000

y1 =

0 -0.0009 -0.0029 -0.0054 -0.0076 -0.0088 -0.0084 -0.0059 -0.0006 0.0078 0.0197

y2 =

0 0.0049 0.0194 0.0424 0.0726 0.1083 0.1475 0.1883 0.2285 0.2662 0.2997

3. Vẽ ñồ thị

Ta dùng lệnh plot ñể vẽ ñồ thị

>> plot(x,y1,x,y2)

Page 7: ppt- nhom 2

http://bkcar.net/

Trang 7

Câu 3: Hàm y(x) là nghiệm của bài toán biên tuyến tính cấp hai:

1. Sử dụng phương pháp sai phân hữu hạn,tìm nghiệm gần ñúng hàm y(x) trong ñoạn [0,100] với bước h=0.1

2. Với kết quả vừa tìm ñược,hãy vẽ ñồ thị của hàm

Giải:

1. Sử dụng MATLAB

1, M-file 1:

function [x]=c3tridiag(N,a,b,c,d) % chuong trinh giai he pt 3 duong cheo theo pp Doolittle

if nargin<5, error('Ham phai co toi thieu 5 doi so');

end;

u(1)=a(1);v(1)=b(1);l(1)=c(1)/u(1); y(1)=d(1);

% tu Ly=B suy ra y

for i=2:N-1

u(i)=a(i)-l(i-1)*v(i-1);

v(i)=b(i);

l(i)=c(i)/u(i);

y(i)=d(i)-l(i-1)*y(i-1);

end;

% tinh gia tri x(N)

u(N)=a(N)-l(N-1)*v(N-1);

y(N)=d(N)-l(N-1)*y(N-1);

x(N)=y(N)/u(N);

Page 8: ppt- nhom 2

http://bkcar.net/

Trang 8

% tinh gia tri x con lai (Ux=y suy ra x=y/U) for i=N-1:-1:1 x(i)=(y(i)-v(i)*x(i+1))/u(i); end ;

2, M-file 2:

function [y]=bientuyentinh(p,q,r,f,a,b,n,alpha,beta)

if nargin<9, error('Ham co it nhat 9 doi so');

end;

h=(b-a)/n;

for i=1:n+1, x(i)=a+(i-1)*h;

end;

% gan cac gia tri bien

y(1)=alpha;

y(n+1)=beta;

% vecto duong cheo chinh

for i=1:n-1,

A(i)=r(x(i+1))-2*p(x(i+1))/h/h;

end;

% vecto nam tren duong cheo chinh

for i=1:n-2,

B(i)=p(x(i+1))/h/h+q(x(i+1))/2/h;

end;

% vecto nam duoi duong cheo chinh

for i=1:n-2,

C(i)=p(x(i+2))/h/h-q(x(i+2))/2/h;

Page 9: ppt- nhom 2

http://bkcar.net/

Trang 9

end;

% vecto tu do

for i=1:n-1,

D(i)=f(x(i+1));

end;

D(1)=D(1)-(p(x(2))/h/h-q(x(2))/2/h)*alpha;

D(n-1)=D(n-1)-(p(x(n))/h/h+q(x(n))/2/h)*beta;

% chay chuong tring giai he voi cac vecto tren

[Y]=c3tridiag(n-1,A,B,C,D);

% gan lai gia tri Y

for i=1:n-1,

y(i+1)=Y(i);

end;

3,Chạy chương trình:

Ta dùng câu lệnh inline ñể nhập hàm cho p,q,r,f.

>> p=inline('x*x','x');

>> q=inline('x+1','x');

>> r=inline('(x*x-2.5)','x');

>> f=inline('x*(sqrt(x+1))','x');

>> a=0;

>> b=100;

>> alpha=0;

>> beta=0;

>> n=1000;

>> y=bientuyentinh(p,q,r,f,a,b,n,alpha,beta)

Page 10: ppt- nhom 2

http://bkcar.net/

Trang 10

y =

Columns 1 through 6

0 0.1433 0.1151 0.1710 0.2287 0.2951

Columns 7 through 12

0.3701 0.4531 0.5433 0.6397 0.7416 0.8479

Columns 13 through 18

0.9577 1.0700 1.1836 1.2977 1.4111 1.5228

Columns 19 through 24

1.6318 1.7371 1.8378 1.9328 2.0215 2.1029

Columns 25 through 30

2.1762 2.2409 2.2962 2.3417 2.3769 2.4014

Columns 31 through 36

2.4149 2.4173 2.4085 2.3885 2.3574 2.3154

Columns 37 through 42

2.2627 2.1998 2.1271 2.0452 1.9546 1.8560

Columns 43 through 48

1.7503 1.6382 1.5205 1.3983 1.2724 1.1437

Columns 49 through 54

1.0134 0.8823 0.7515 0.6219 0.4946 0.3705

Columns 55 through 60

0.2504 0.1354 0.0261 -0.0766 -0.1719 -0.2594

Columns 61 through 66

-0.3383 -0.4083 -0.4688 -0.5196 -0.5603 -0.5909

……

Page 11: ppt- nhom 2

http://bkcar.net/

Trang 11

Columns 937 through 942

0.0292 0.0045 -0.0191 -0.0415 -0.0624 -0.0816

Columns 943 through 948

-0.0990 -0.1143 -0.1274 -0.1382 -0.1465 -0.1524

Columns 949 through 954

-0.1557 -0.1564 -0.1545 -0.1500 -0.1431 -0.1336

Columns 955 through 960

-0.1218 -0.1078 -0.0917 -0.0736 -0.0539 -0.0325

Columns 961 through 966

-0.0099 0.0139 0.0385 0.0638 0.0893 0.1150

Columns 967 through 972

0.1406 0.1657 0.1902 0.2138 0.2362 0.2573

Columns 973 through 978

0.2768 0.2945 0.3103 0.3240 0.3354 0.3445

Columns 979 through 984

0.3512 0.3553 0.3570 0.3561 0.3526 0.3466

Columns 985 through 990

0.3382 0.3274 0.3144 0.2993 0.2822 0.2633

Columns 991 through 996

0.2428 0.2209 0.1978 0.1738 0.1491 0.1239

Columns 997 through 1001

0.0985 0.0732 0.0482 0.0237 0

Page 12: ppt- nhom 2

http://bkcar.net/

Trang 12

2. Dùng hàm plot ñể vẽ ñồ thị:

>> plot(y)