Question: How to solve a set of ode in for loop


I am trying to solve a set of ode which depends on some parameters like A0,0,  A1,0, A1,1, B0,0,  B1,0, B1,1, C0,0 and so on. Here is some part of my code:



sigma := 1; X := proc (m) if m <= 1 then 0 elif 2 <= m then 1 end if end proc;

lambda := proc (m, k) if k <= m and 0 <= k then 1 else 0 end if end proc;

Typesetting:-Settings(functionassign = false);

for m from 0  to 4 do    

for k  from 4 by -1 to 0 do  

A[m,k](r) :=diff(f[m,k](r),r$2)+((k+1)*(k+2))/(r^(2))*(lambda(m,k+2)*f[m,k+2](r)-f[m,k](r)):  

T[m,k]:=(k+1)*(lambda(m,k+1)*A[m,k+1](r) -lambda(m,k-1)*A[m,k-1](r)):      

S[m,k]:=(k+1)*(lambda(m,k+1)*f[m,k+1]( r)-lambda(m,k-1)*f[m,k-1](r)):               # There are also C[m,k], B[m,k] and E[m,k] definitions similar to A[m,k],T[m,k] and S[m,k]

Q[m, k] := r^(4-sigma)*E[m, k]-2*lambda(m, k+2)*(k+1)*(k+2)*(r^2*(diff(f[m, k+2](r), `$`(r, 2)))-2*r*(diff(f[m, k+2](r), r)))-(k+1)*(k+2)*(k+4)*((k+3)*lambda(m, k+4)*f[m, k+4](r)-(2*(k+1))*lambda(m, k+2)*f[m, k+2](r));

ode[m, k] := r^4*(diff(f[m, k](r), `$`(r, 4)))-(k+1)*(k+2)*(2*r^2*(diff(f[m, k](r), `$`(r, 2)))-4*r*(diff(f[m, k](r), r))-(k-1)*(k+4)*f[m, k](r)) = Q[m, k];

soln[m, k] := rhs(dsolve(ode[m, k], f[m, k](r)))


After obtaining the solution, there are some additional parts in my code to find the coefficients of odes. The code is just working fine until m=3. When m=3, I am getting this error:

Error, (in solve) cannot solve expressions with Int(-(1/282240)*r*(3*(h . R)^2*(Int((6720*ln(r)*h*r^6-22176*ln(r)*h*r^5-50400*ln(r)*r^6-2814*h*r^6+33600*r^7+18144*ln(r)*h*r^4+90720*ln(r)*r^5+8238*h*r^5-95520*r^6+2352*h*ln(r)*r^3-7974*h*r^4+57780*r^5-2880*ln(r)*h*r^2-14400*ln(r)*r^3-2443*h*r^3+2100*r^4+6108*h*r^2+5340*r^3-1115*h-3300*r)/r^6, r))-4480*_C1), r) for _C1

I think the problem is due to declaration of f[m,k](r) values for the set of odes. For example, before solving ode[3,3], the code declares a value for f[3,3](r) which includes some integral definition in ode[3,3] although i want to find the solution for f[3,3](r). 

To illustrate,

ode[1,1]=r^4*(diff(f[1, 1](r), r, r, r, r))-12*r^2*(diff(f[1, 1](r), r, r))+24*r*(diff(f[1, 1](r), r)) = -Typesetting[delayDotProduct](r, h . R, true)*((2*(diff(f[0, 0](r), r))-4*f[0, 0](r)/r)*(diff(f[0, 0](r), r, r)-2*f[0, 0](r)/r^2)-(2*(-3/4-1/(4*r^2)+r))*A[0, 0]+(2*(diff(f[0, 0](r), r, r, r)+4*f[0, 0](r)/r^3-2*(diff(f[0, 0](r), r))/r^2))*f[0, 0](r))

soln[m, k] := rhs(dsolve(ode[m, k], f[m, k](r)))


where I already know the definition of f[0,0](r)=-(3/4)*r+1/(4*r)+(1/2)*r^2   and A[0,0]=1/(2*r^3)+1+(2*((3/4)*r-1/(4*r)-(1/2)*r^2))/r^2 

So, ode[1,1] can be solved with respect to f[1,1](r).

I would be glad for any comments. 

Here is my code.

Please Wait...