Giải bài toán Cauchy cho phương trình Burger bằng Maple

Xét bài toán Cauchy cho phương trình Burger sau:

$$\begin{cases}u_t+uu_x &=0 \text{ khi } x\in\mathbb R, t>0, \\ u(x, 0) &=u_0(x)  \text{ khi } x\in\mathbb R.\end{cases} $$

Dưới đây ta sẽ giải bài toán Cauchy cho phương trình tổng quát hơn một chút

$$u_t+f(u)u_x=0, x\in\mathbb R, t>0,$$

bằng Maple.

Để cụ thể ta lấy bài 1, đề 3 giữa kỳ lớp CH16-18,

https://bomongiaitich.files.wordpress.com/2017/01/degk_ch16_18_3.pdf

Nhập hàm $f$

> f(u):=1-u^(2): 

rồi nhập điều kiện ban đầu

> u0(x):=piecewise(x<0, 0, 0<x<1, 1, x>=1, 2):

Các đường đặc trưng có phương trình

$$x(t)=tf(u_0(\xi))+\xi$$

và được vẽ nhờ Maple

> data := [];

> for n from -10 to 15 do data := [op(data), [t*f(u0((1/5)*n))+(1/5)*n, t, t = 0 .. 1]] end do;

> plot(data);

Ta có hình vẽ:

Các đường đặc trưng

Từ đây ta giải được nghiệm ở miền chỉ có một đường đặc trưng đi qua

$$u(x, t)=\begin{cases} 0 \text{ khi } x<\min\{0, 1-3t\}, t>0, \\ 1 \text{ khi } t<x<1-3t, t>0, \\ 2 \text{ khi } x>\max\{1, t\}, t>0.\end{cases}$$

Vùng chỉ có một đường đặc trưng đi qua

Ta có các điểm bắt đầu xuất hiện sốc $(0, 0), (1, 0).$ Điều kiện Rankine-Hugoniot được tính qua các bước

> F(u):=int(f(x), x=0..u);      

> a(u, v):=(F(u)-F(v))/(u-v);

Sốc bắt đầu tại $(0, 0)$ do giao giữa vùng $u=0$ bên trái và $u=1$ bên phải nên ta có đường sốc từ điểm này

> s0(t):=a(0, 1)*(t-0)+0;

Sốc bắt đầu tại $(1, 0)$ do giao giữa vùng $u=1$ bên trái và $u=2$ bên phải nên ta có đường sốc từ điểm này

> s1(t):=a(1, 2)*(t-0)+1;

Hai đường sốc này giao nhau tại thời điểm

> Student:-Calculus1:-Roots(s0(t)-s1(t), numeric);
                         [0.5000000000]

Giao hai đường sốc

Ta giải được nghiệm trước thời điểm có giao $t=1/2$

> u(x, t):=piecewise(x<s0(t), 0, s0(t)<x<s1(t), 1, x>s1(t), 2):

> plot3d(u(x, t), x = -2 .. 2, t = 0 .. 1/2);

> animate(plot, [u(x, t), x = -2 .. 2], t = 0 .. 1/2)

Nghiệm trước 0.5Nghiệm trước 0.5

Sau $t=1/2$ các đường đặc trưng xuất phát $(x, 0), x<0,$ và xuất phát $(x, 0), x>1$ lại gây ra sốc, còn các đường đặc trưng xuất phát $(x, 0), 0<x<1,$ bị chặn lại bởi các đường sốc $s0(t), s1(t)$. Sốc này xuất phát tại điểm $(s0(1/2), 1/2)$ giữa miền $u=0$ bên trái và $u=2$ bên phải nên có đường sốc

> s2(t):=a(0, 2)*(t-1/(2))+s0(1/2);

Ta có nghiệm sau $t=1/2$:

> u(x, t):=piecewise(x<s2(t), 0, x>s2(t), 2);

Hình ảnh của nghiệm

NghiệmNghiem

Quay trở lại phương trình Burger ở đầu bài, các bạn thử xem các bước ở trên thay đổi như nào với điều kiện ban đầu cụ thể

$$u_0(x)=\begin{cases}2 \text{ khi } x<0,\\ 1 \text{ khi } 0<x<1, \\ 0 \text{ khi } x>1.\end{cases}$$

 

Tags: 
PDEs
Maple