Changing boundary conditions for ODE
조회 수: 7 (최근 30일)
이전 댓글 표시
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
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/291591/image.jpeg)
댓글 수: 5
채택된 답변
Ameer Hamza
2020년 5월 9일
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
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/291714/image.png)
댓글 수: 0
추가 답변 (1개)
Nagaraja Shamsundar
2020년 5월 9일
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.
참고 항목
카테고리
Help Center 및 File Exchange에서 Boundary Value Problems에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!