Mercurial > repos > public > sbplib
diff +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 |
line wrap: on
line diff
--- a/+sbp/+implementations/d2_2.m Fri Sep 09 11:03:13 2016 +0200 +++ b/+sbp/+implementations/d2_2.m Fri Sep 09 14:53:41 2016 +0200 @@ -5,29 +5,35 @@ error(['Operator requires at least ' num2str(2*BP) ' grid points']); end - e_1=zeros(m,1);e_1(1)=1; - e_m=zeros(m,1);e_m(m)=1; + e_1=sparse(m,1);e_1(1)=1; + e_m=sparse(m,1);e_m(m)=1; - H=(eye(m,m));H(1,1)=0.5;H(m,m)=0.5; + H=(speye(m,m));H(1,1)=0.5;H(m,m)=0.5; H=h*H; HI=inv(H); - - D1=((.5*diag(ones(m-1,1),1)-.5*diag(ones(m-1,1),-1))); + + diags = -1:1; + stencil = [-1/2 0 1/2]; + D1 = stripeMatrix(stencil, diags, m); + D1(1,1)=-1;D1(1,2)=1;D1(m,m-1)=-1;D1(m,m)=1; D1(m,m-1)=-1;D1(m,m)=1; D1=D1/h; - Q=H*D1 + 1/2*e_1*e_1' - 1/2*e_m*e_m'; + Q=H*D1 + 1/2*(e_1*e_1') - 1/2*(e_m*e_m'); - D2=((diag(ones(m-1,1),1)+diag(ones(m-1,1),-1)-2*diag(ones(m,1),0))); + diags = -1:1; + stencil = [1 -2 1]; + D2 = stripeMatrix(stencil, diags, m); + D2(1,1)=1;D2(1,2)=-2;D2(1,3)=1; D2(m,m-2)=1;D2(m,m-1)=-2;D2(m,m)=1; D2=D2/h^2; S_U=[-3/2, 2, -1/2]/h; - S_1=zeros(1,m); + S_1=sparse(1,m); S_1(1:3)=S_U; - S_m=zeros(1,m); + S_m=sparse(1,m); S_m(m-2:m)=fliplr(-S_U);