MATLAB: Bvp with constant vector in function definition

bvp4c

My problem seems simple: U''(r)=-4*pi*r*n(r) where n(r) is a constant 1d-vector In addition I have the boundary conditions: U(0)=0 and U(r_max)=c, where c is a constant.
I've tried the following:
f = @(r,U) [ U(2); -4*pi.*r.*n];
g = @(ya,yb) [ya(1); yb(1)-c];
solinit=bvpinit(linspace(0,r_max,10),[0 0]);
sol = bvp4c(f,g,solinit);
In case n is just a number it works… For n being a vector it doesn't and i get the error:
Error using vertcat Dimensions of matrices being concatenated are not consistent.
Is there any way to include vectors in my function definition?
Thanks in advance.

Best Answer

function main
rinter = ...;
ninter = ...;
c= ...;
g = @(ya,yb) [ya(1); yb(1)-c];
solinit=bvpinit(linspace(0,r_max,10),[0 0]);
sol = bvp4c(@(r,U)f(r,U,rinter,ninter),g,solinit);
function dUdr = f(r,U,rinter,ninter)
nr = interp1(rinter,ninter,r);
dUdr = zeros(2,1);
dUdr(1) = U(2);
dUdr(2) = -4*pi*r*nr;
Best wishes
Torsten.