Hi everybody!
I've written a code that solves the following PB problem
This is a 2nd order ode and the dependant variable here is psi (tilde) and the independant variable is x (tilde). The boundary conditions are:
The code includes an optimizer based on the secant method. I'm trying to guess the solution that will ''land'' on the 2nd boundary condition via the shooting method:
function [x2,p2]=optimumup(y21,y22,bc2,l)%optimizing the choice of y2 for the shooting method, using the Newton
%method (secant) by solving the equation p(length(p(:,1))-bc2=0
[x1,p1] = BP(y21,l);[x2,p2] = BP(y22,l)size(p2)for i=1:10dp=((p2(length(p2(:,1)),1)-bc2)-(p1(length(p1(:,1)),1)-bc2))/(y22-y21);y23=y22-(p2(length(p2(:,1)),1)-bc2)/dp;%recurrence relation
p1=p2;[x2,p2] = BP(y23,l);if abs(p2(length(p2(:,1)))-bc2)<0.001; disp(p2(length(p2(:,1)),1)); disp(p2(length(p2(:,1)),1)-bc2); plot(x2,p2(:,1),x2,p2(:,2)) return end y21=p1(1,2); y22=p2(1,2);enddisp('No success')endfunction [x,p] = BP(y2,l)%Shooting method for the BP eq
options = odeset('RelTol',1e-4,'AbsTol',1e-4);[x,p] = ode45(@eqs,[0 l],[90/24 y2],options);%n=size(p);p(n(1),1)
%plot(x,p(:,1),x,p(:,2))
endfunction [dy] = eqs(x,y)%PB equation
dy = zeros(2,1); % a column vector
dy(1) = y(2);dy(2) = sinh(y(1));end
y21 and y22 are the initial x guesses for the secant method. bc2 is the boundary condition at x goes to inifinity. l is the interval size.
I have two main problems:
- I don't know how to incorperate the inifinite boundary condition.
- For some reason my solution does not converge. I'm working dimensionless.
I would appreciate some help guys.
Thanks,
Roi
Best Answer