Using chain-rule, we can write
Therefore, the equation can be written as
syms y(x) f
eq = diff(log(y),x)*1/diff(log(x),x) + diff(log(diff(y,x)),x)*1/diff(log(x),x) + ...
diff(y,x)*1/diff(log(x),x)*log(x) + y ...
== 1 + f;
sol = dsolve(eq);
The symbolic solution is
>> sol
sol =
((2*C2*x^y + C2*f*x^y - C2*x^y*y + 2*C1*x^f*x^2)/(x^y*(f - y + 2)))^(1/2)
-((2*C2*x^y + C2*f*x^y - C2*x^y*y + 2*C1*x^f*x^2)/(x^y*(f - y + 2)))^(1/2)
For numerical solution, try this
syms y(x) f
eq = diff(log(y),x)*1/diff(log(x),x) + diff(log(diff(y,x)),x)*1/diff(log(x),x) + ...
diff(y,x)*1/diff(log(x),x)*log(x) + y ...
== 1 + f;
eq2 = odeToVectorField(eq);
odeFun = matlabFunction(eq2, 'Vars', {'x', 'Y', 'f'});
xspan = [0.1 10];
xs = 0.1:0.001:10;
fv = rand(size(xs));
ffun = @(x) interp1(xs, fv, x);
ic = [1; 2];
[t, y] = ode45(@(x, y) odeFun(x, y, ffun(x)), xspan, ic);
plot(t, y);