I would start by simplifying the problem a bit.
Step 1 - for a fixed x1,x2, how could I calculate the integral?
For this, you can actually use the quad function (you don't need ode45). Let's assume x1 = 7 and x2 = 3. I could create a function that would return the value of the integrand for any particular L
integrand = @(L) log(7.^2+(3-L).^2);
integrand(14)
I can then use this function to do the integral numerically
So, we've solve step 1! :)
Step 2 - Repeat process for a bunch of x1,x2 combos
Well, this is fairly straightforward now that we solved step 1. We just use a loop.
lambda = 1;
x1 = 1:0.1:2;
x2 = 1:0.1:2;
[X1,X2] = meshgrid(x1,x2);
phi = zeros(size(X1));
for i = 1:numel(X1)
fixedx1x2 = @(L) log(X1(i).^2+(X2(i)-L).^2);
phi(i) = (lambda / 4*pi) * quad(fixedx1x2,-5,5);
end
surf(X1,X2,phi)
Note that here we are using meshgrid to calculate a range of x1,x2 values over a grid, and then for each x1 and x2 we are repeating the quad call
Hope this helps!