Mercurial > repos > public > sbplib
comparison +sbp/+implementations/d2_2.m @ 267:f7ac3cd6eeaa operator_remake
Sparsified all implementation files, removed all matlab warnings, fixed small bugs on minimum grid points.
author | Martin Almquist <martin.almquist@it.uu.se> |
---|---|
date | Fri, 09 Sep 2016 14:53:41 +0200 |
parents | bfa130b7abf6 |
children | 8b8672134be8 |
comparison
equal
deleted
inserted
replaced
266:bfa130b7abf6 | 267:f7ac3cd6eeaa |
---|---|
3 BP = 1; | 3 BP = 1; |
4 if(m<2*BP) | 4 if(m<2*BP) |
5 error(['Operator requires at least ' num2str(2*BP) ' grid points']); | 5 error(['Operator requires at least ' num2str(2*BP) ' grid points']); |
6 end | 6 end |
7 | 7 |
8 e_1=zeros(m,1);e_1(1)=1; | 8 e_1=sparse(m,1);e_1(1)=1; |
9 e_m=zeros(m,1);e_m(m)=1; | 9 e_m=sparse(m,1);e_m(m)=1; |
10 | 10 |
11 H=(eye(m,m));H(1,1)=0.5;H(m,m)=0.5; | 11 H=(speye(m,m));H(1,1)=0.5;H(m,m)=0.5; |
12 H=h*H; | 12 H=h*H; |
13 HI=inv(H); | 13 HI=inv(H); |
14 | 14 |
15 D1=((.5*diag(ones(m-1,1),1)-.5*diag(ones(m-1,1),-1))); | 15 diags = -1:1; |
16 stencil = [-1/2 0 1/2]; | |
17 D1 = stripeMatrix(stencil, diags, m); | |
18 | |
16 D1(1,1)=-1;D1(1,2)=1;D1(m,m-1)=-1;D1(m,m)=1; | 19 D1(1,1)=-1;D1(1,2)=1;D1(m,m-1)=-1;D1(m,m)=1; |
17 D1(m,m-1)=-1;D1(m,m)=1; | 20 D1(m,m-1)=-1;D1(m,m)=1; |
18 D1=D1/h; | 21 D1=D1/h; |
19 | 22 |
20 Q=H*D1 + 1/2*e_1*e_1' - 1/2*e_m*e_m'; | 23 Q=H*D1 + 1/2*(e_1*e_1') - 1/2*(e_m*e_m'); |
21 | 24 |
22 D2=((diag(ones(m-1,1),1)+diag(ones(m-1,1),-1)-2*diag(ones(m,1),0))); | 25 diags = -1:1; |
26 stencil = [1 -2 1]; | |
27 D2 = stripeMatrix(stencil, diags, m); | |
28 | |
23 D2(1,1)=1;D2(1,2)=-2;D2(1,3)=1; | 29 D2(1,1)=1;D2(1,2)=-2;D2(1,3)=1; |
24 D2(m,m-2)=1;D2(m,m-1)=-2;D2(m,m)=1; | 30 D2(m,m-2)=1;D2(m,m-1)=-2;D2(m,m)=1; |
25 D2=D2/h^2; | 31 D2=D2/h^2; |
26 | 32 |
27 S_U=[-3/2, 2, -1/2]/h; | 33 S_U=[-3/2, 2, -1/2]/h; |
28 S_1=zeros(1,m); | 34 S_1=sparse(1,m); |
29 S_1(1:3)=S_U; | 35 S_1(1:3)=S_U; |
30 S_m=zeros(1,m); | 36 S_m=sparse(1,m); |
31 S_m(m-2:m)=fliplr(-S_U); | 37 S_m(m-2:m)=fliplr(-S_U); |
32 | 38 |
33 | 39 |
34 M=-H*D2-e_1*S_1+e_m*S_m; | 40 M=-H*D2-e_1*S_1+e_m*S_m; |
35 S_1 = S_1'; | 41 S_1 = S_1'; |