I can see at least three different problems with the code you exhibited. Perhaps fixing those problems might help MATLAB to work for you:

1. You're calling your function dydt, but you don't assign dydt in the function. You assign db_dL.

2. There's a -48*bL^7 inside the square root. It should be a -84*bL^7.

3. The derivative db/dL is actually equal to the reciprocal of the square root.

Here's some code that might work for you:

Code:

function db = arclen(L,b)
db = 1/sqrt(1 + 4*b^2 + 20*b^5 - 84*b^7 + 25*b^8 - 210*b^10 + 441*b^12)
options = odeset('RelTol',1e-4,'AbsTol',[1e-4]);
[L,b] = ode45(@arclen,[0 5],[0 0],options);

I haven't actually tested this code, since I don't have MATLAB. I'm just going by analogy with the online help.