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.