You are on page 1of 9

Bài 6. Cho khoảng chia theo là , khoảng chia theo là .

Viết
chương trình Mathlab tính gần đúng và so sánh với nghiệm chính xác
của các bài toán sau, trong đó đạo hàm cấp 1 theo biến thời gian được xấp xỉ bằng công
thức sai phân trung tâm

b)

Đặt

· Cho . Chia đoạn thành đoạn bằng nhau bởi điểm chia

, với

· Chia đoạn thành đoạn bằng nhau bởi điểm chia

, với

· Gọi là giá trị gần đúng của nghiệm tại các điểm nút

Từ , ta có

Từ ,ta có

Từ để xấp xỉ đạo hàm cấp 2 theo biến và tại


điểm nút , ta dùng công thức sai phân trung tâm
Ta có:

(1)

Với

Từ , ta có

Từ , ta sử dụng công thức sai phân trung tâm cho đạo hàm cấp 1

Ta được
(2)
Từ (1), với , ta có

(3)
Thay (2) và (3), ta được

Như vậy ta viết lại bài toán dưới dạng sai phân hữu hạn

Tìm nghiệm chính xác ucx (x,t)

Xét

Tìm được nghiệm dưới dạng:


,
Ta có
Thay vào , ta được

Do đó, ta có

Từ ,
Ta được:

Xét bài toán

Áp dụng bảng 8.1, ta có:

Tìm nghiệm của bài toán ban đầu dưới dạng

Ta có
Thay vào , ta có

Khai triển Fourier theo biến trên , ta có

, với

Ta được
Khi đó,
Với , , ta giải bài toán

Xét phương trình thuần nhất


Ta có phương trình đặc trưng

Vậy phương trình thuần nhất vừa xét có nghiệm tổng quát là

Với là hằng số tuỳ ý.


Sử dụng phương pháp hệ số bất định
Ta tìm nghiệm đặc biệt của phương trình không thuần nhất
Với với . Nên , vậy nghiệm đặc
biệt của phương trình thuần nhất có dạng

Tìm và
Ta có:
Thay và vào , ta được

Đồng nhất các hệ số tương ứng, ta được:

Suy ra
Vậy nghiệm tổng quảt của phương trình

Tìm

Từ

Suy ra
Vậy nghiệm của bài toán ban đầu là

Viết chương trình Mathlab


%Tạo file f.m
function a=f(x,t)
a=sin(2*pi*x)*sin(2*pi*t);
%Tao ham p.m
function a=p(t)
a=0;
%Tao file q.m
function a=q(t)
a=0;
%Tao file phi6b.m
function a=phi(x)
a=0;
%Tao file psi6b.m
function a=psi(x)
a=0;
%Tao file ucx.m
function a=ucx(x,t)
a=(((1/(8*(pi^2)))*sin(2*pi*t)-(t/(4*pi))*cos(2*pi*t))*sin(2*pi*x));
%Tao file bt6b.m
clc
clear all
M=20;
N=40;
h=1/M;
k=1/N;
c=1;
lamda=(c*c*k*k)/(h*h);
%Tao cac diem nut
X=[0:M]*h;
T=[0:N]*k;
U=zeros(M+1,N+1);
%Tu dieu kien bien
for j=2:(N+1)
U(1,j)=p(T(j));
U(M+1,j)=q(T(j));
end
%Tu dieu kien dau
for i=1:(M+1)
U(i,1)=phi(X(i));
end
for i=2:M
U(i,2)=(lamda/2)*U(i-1,1)+(1-lamda)*U(i,1)+(lamda/2)*U(i+1,1)+((k^2)/
2)*sin(2*pi*X(i))*sin(2*pi*T(1));
end
%Tinh gan dung u(x,1)
for j=2:(N+1)
for i=2:M
U(i,j+1)=(lamda)*U(i-1,j)+2*(1-lamda)*U(i,j)+(lamda)*U(i+1,j)-U(i,j- 1)+
(k^2)*sin(2*pi*X(i))*sin(2*pi*T(j));
end
end
%Tao ma tran tam V
V=zeros(M+1,1);
for i=1:(M+1)
V(i)=U(i,N+1);
end
%Xuat cac gia tri gan dung u(x,1)
V
%Xuat cac gia tri cua nghiem chinh xac ucx(x,1)
Ucx=zeros(M+1,1);
for i=1:(M+1)
Ucx(i)=ucx(X(i),1);
end
Ucx
L=abs(V-Ucx)
%Ve V, Ucx
plot(X,V,'b',X,Ucx,'r');
xlabel('x');

You might also like