双曲型差分(二维)数值例子
![图片](https://i-blog.csdnimg.cn/blog_migrate/9af943fe49c865b53cc1aa00d59bf43a.png)
![图片](https://i-blog.csdnimg.cn/blog_migrate/ce51b984be294f87fbbc11c5bff2dbd7.png)
![图片](https://i-blog.csdnimg.cn/blog_migrate/8c6eacd9c736e7dcf9374c6e341a6718.png)
![图片](https://i-blog.csdnimg.cn/blog_migrate/1c41cac293bf1e118c3bc72bdaaf30bb.png)
![图片](https://i-blog.csdnimg.cn/blog_migrate/4fb1a2687e54d5fd428fa364328a193a.png)
![图片](https://i-blog.csdnimg.cn/blog_migrate/429549decbc401bcf71d53a3d4a2eeb4.png)
数值解:
![图片](https://i-blog.csdnimg.cn/blog_migrate/3d9bee95c61f0b5302129e41c1619dc2.png)
精确解:
![图片](https://i-blog.csdnimg.cn/blog_migrate/15beffda5f63041ebdc7da18425fa391.png)
// scilab code
//精确解
t =linspace(0,1,100);
t = t';
x = linspace(0,1,100);
z = cos( 4 * 3.14159 * t ) * sin( 4 * 3.14159 * x) + ( sin( 8 * 3.14159 * t) * sin( 8 * 3.14159 * x) / 8 / 3.14159);
plot3d(t,x,z);
figure
//模拟解
pi_ = 3.14159265;
count =100;
t = linspace(0, 1, 2 * count);
x = linspace(0, 1, count);
h = x(2) - x(1);
tao = t(2) - t(1);
r = tao / h;
u_n_0 = sin( 4 * pi_ * x);
u_n_1 = sin( 4 * pi_ * x) + tao * sin( 8 * pi_ * x);
A = zeros(2 * count, count);
for i = 1: 2 * count
if i == 1 then
A(i,:) = u_n_0;
elseif i == 2 then
A(i,:) = u_n_1;
else
A(i,[2 : count - 1 ]) = r * r * ( u_n_1(1:count - 2) + u_n_1(3:count)) + 2 * ( 1 - r * r) * u_n_1(2:count - 1)- u_n_0(2:count - 1);
A(i,1) = 0;
A(i, count) = 0;
u_n_0 = A(i-1,:);
u_n_1 = A(i,:);
end
end
plot3d(t,x,A);