I have used shooting method with ' ode45' or ' ode23s'.
But , the solution doesn't converge and it takes a lot of time.
The equations are
f"=g(g^2+gamma^2)/(g^2+lambda*gamma^2) ------ (1)g'= (1/3)*f'^2-(2/3)*(f*f")+ Mn*f' ------------------------(2)t"+Rd*t"+ 2*Pr*f*t'/3+ Nb*t'*p'+Nt*(t')^2= 0------(3)p"+(2*Lew*f*p')/3+ Nt*t"/Nb= 0 ------------------------(4)
With the initial and boundary conditions
f(0)=0, f'(0)=1, t(0)=1, p(0)=1f'(infinity)=0, t(infinity)=0, p(infinity)=0
The code for shooting method using ode45 is
function shooting_methodclc;clf;clear;global lambda gama Pr Rd Lew Nb Nt Mngama=1; Mn=1;Rd=0.1;Pr=10;Nb=0.2;Lew=10;Nt=0.2;lambda=0.5;x=[1 1 1];options= optimset('Display','iter');x1= fsolve(@solver,x);endfunction F=solver(x)options= odeset('RelTol',1e-8,'AbsTol',[1e-8 1e-8 1e-8 1e-8 1e-8 1e-8 1e-8]);[t,u]= ode45(@equation,[0 10],[0 1 x(1) 1 x(2) 1 x(3)],options)s=length(t);F= [u(s,2),u(s,4),u(s,6)];%deval(0,u)
plot(t,u(:,2),t,u(:,4),t,u(:,6));endfunction dy=equation(t,y)global lambda gama Pr Rd Lew Nb Nt Mndy= zeros(7,1);dy(1)= y(2);dy(2)= y(3)*(y(3)^2+gama^2)/(y(3)^2+lambda*gama^2);dy(3)= y(2)^2/3-(2*y(1)*y(3)*(y(3)^2+gama^2))/(3*(y(3)^2+lambda*gama^2))+Mn*y(2);dy(4)= y(5);dy(5)= -(2*Pr*y(1)*y(5))/(3*(1+Rd)) - (Nb*y(5)*y(7))/(1+Rd) - (Nt*y(5)^2)/(1+Rd);dy(6)= y(7);dy(7)= -((2*Lew*y(1)*y(7))/3)+ (Nt/Nb)*((2*Pr*y(1)*y(5))/(3*(1+Rd)) + (Nb*y(5)*y(7))/(1+Rd) + (Nt*y(5)^2)/(1+Rd));end
Best Answer