Changing boundary conditions for ODE
    6 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Borjan Trajanoski
 el 9 de Mayo de 2020
  
    
    
    
    
    Comentada: Ameer Hamza
      
      
 el 9 de Mayo de 2020
            My code below plots the solution of the equation of Mathieu with the initial condition: y(0) = 1, y'(0) = 1
Now I still want the same solution to this problem, but with new boundary conditions: y(1) = -1, y(10) = 1
I tried solving it with dsolve(eq, y(1) == -1, y(10) == 1) but then I couldn't implement it into my function.
syms t y(t)
syms a q
tm = [0 75]; %time intervall
figure(1)
clf
hold on
y0=[-1;1]; %initial conditions
[t,y1] = ode23(@Mathieu, tm, y0);
plot(t,y1(:,2))%y(t)
xlim([0 75])
function dydt = Mathieu(t,y)
a = 2;
q = 0.5;
dydt = [y(2); -(a-2*q*cos(2*t))*y(1)];
end

5 comentarios
Respuesta aceptada
  Ameer Hamza
      
      
 el 9 de Mayo de 2020
        Try this code with bvp4c in the limits [1 10], with the boundary condition given in the question. For more details, see the documentation of bvp4c
tm = [1 10]; %time intervall
t = linspace(tm(1), tm(2), 50);
guess = bvpinit(t, [1; 1]);
sol = bvp4c(@Mathieu, @bcFun, guess);
plot(sol.x, sol.y(1,:)) % y(t) is the row of solution
xlim(tm)
function dydt = Mathieu(t,y) %ODE
a = 2;
q = 0.5;
dydt = [y(2); -(a-2*q*cos(2*t))*y(1)];
end
function res = bcFun(ya, yb) % boundary function
    res = [ya(1)+1;  % y(1)=-1
           yb(1)-1]; % y(10) = 1
end

0 comentarios
Más respuestas (1)
  Nagaraja Shamsundar
 el 9 de Mayo de 2020
        Your goal is to solve a boundary value problem (BVP). Some BVPs can be converted into equivalent initial value problems (IVP), but in general it is more appropriate to use a BVP solver such as Matlab's BVP4C instead of an IVP solver such as ODE23.
In Matlab, type help bvp4c or doc bvp4c.
Ver también
Categorías
				Más información sobre Boundary Value Problems en Help Center y File Exchange.
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!