function KdV=KdVFunc(t,U) global m; e = ones(m,1); % Diskretisering gitt i boka, orden 2 % B = spdiags([-1*e 2*e 0*e -2*e e],-2:2,m,m); % B(m,1) = -2; % B(m,2) = 1; % B(m-1,1) = 1; % B(1,m) = 2; % B(1,m-1) = -1; % B(2,m) = -1; % Diskretisering med bare tidligere punkt, funnet ved fdcoeffV % B = spdiags([-e,3*e,-3*e,e],-3:0,m,m); % B(1,m) = -3; % B(1,m-1) = 3; % B(1,m-2) = -1; % B(2,m) = 3; % B(2,m-1) = -1; % B(3,m) = -3; % Diskretisering gitt på nett, orden 4 B = spdiags([e -8*e +13*e 0*e -13*e 8*e -e],-3:3,m,m); B(1,m) = 13; B(1,m-1) = -8; B(1,m-2) = 1; B(2,m) = -8; B(2,m-1) = 1; B(3,m) = 1; B(m-2,1) = -1; B(m-1,1) = 8; B(m-1,2) = -1; B(m,1) = -13; B(m,2) = 8; B(m,3) = -1; % Bakoverdifferanse, orden h % KdV = zeros(m,1); % KdV(1) = (-6*m/60)*U(1).*(U(1)-U(m)); % KdV(2:m) = (-6*m/60)*U(2:m).*(U(2:m)-U(1:m-1)); % Sentraldifferansen, orden h^2 KdV = zeros(m,1); KdV(1) = (-3*(m/60))*U(1).*(U(2)-U(m)); KdV(2:m-1) = (-3*(m/60))*U(2:m-1).*(U(3:m)-U(1:m-2)); KdV(m) = (-3*(m/60))*U(m).*(U(1) - U(m-1)); %Multipliserer til slutt med diskretiseringen av tredjederiverte KdV = KdV - 0.125*(m/60)^3*B*U; end