Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function [V,G_inv] = soliton2(V,z,eigs,c,x,t)
- % eigs = [1i; 2 + 3i]; c = [2.3; 5.7];
- c = c.*exp(2i*eigs*x);
- N = numel(eigs);
- A = 1./(eigs - eigs'); B = -A.';
- u = (eye(N) - B*A)\(-conj(c));
- v = (eye(N) - B*A)\(B*c);
- s = (eye(N) - A*B)\c;
- r = (eye(N) - A*B)\(-A*conj(c));
- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- % z0 = 2-3i;
- %
- % R = .01;
- % N = 100; h = 2*pi/N;
- %
- % t = (0:h:2*pi-h).';
- %
- % z = z0 + R*exp(1i*t);
- % dz = R*1i*exp(1i*t);
- %
- % f = zeros(N,1);
- G = zeros(numel(z),2,2); G_inv = zeros(numel(z),2,2);
- for i = 1:numel(z)
- z1 = 1./(z(i)-eigs); z2 = 1./(z(i)-conj(eigs));
- G(i,1,1) = 1 + dot(r,z1);
- G(i,2,1) = dot(s,z1);
- G(i,1,2) = dot(u,z2);
- G(i,2,2) = 1 + dot(v,z2);
- G_inv(i,:,:) = inv(squeeze(G(i,:,:)));
- end
- % compute f = G * V
- f11 = G(:,1,1).*V(:,1,1) + G(:,1,2).*V(:,2,1);
- f12 = G(:,1,1).*V(:,1,2) + G(:,1,2).*V(:,2,2);
- f21 = G(:,2,1).*V(:,1,1) + G(:,2,2).*V(:,2,1);
- f22 = G(:,2,1).*V(:,1,2) + G(:,2,2).*V(:,2,2);
- % compute f * G^-1 = G*V*G^-1
- V(:,1,1) = f11.*G_inv(:,1,1) + f12.*G_inv(:,2,1);
- V(:,1,2) = f11.*G_inv(:,1,2) + f12.*G_inv(:,2,2);
- V(:,2,1) = f21.*G_inv(:,1,1) + f22.*G_inv(:,2,1);
- V(:,2,2) = f21.*G_inv(:,1,2) + f22.*G_inv(:,2,2);
- %
- % residue = 1/(2i*pi)*sum(f.*dz*h)
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement