MATLAB: ODE45, differential equation

differential equationsode45

my function is
dy/dt=k*y*exp(450/y)
k is constant and y(0)=40 and y(15)=95 solve this equation by using ode45 can someone pleaseeeeeeeeeee check the code and make it work .
tspan = [0 300];
y0 = 40;y15=95
[t,y] = ode45(@(t,y) 'k'*y*exp(450/y), tspan, y0,y15);
plot(t,y,'-o')

Best Answer

Hi,
if you search a value for k that complies with the boundary conditions, you could use fzero to solve the problem numerically:
k = fzero(@calculate_k, 0.001);
disp(['k = ', num2str(k)])
[t,y] = ode45(@(t,y) k*y*exp(450/y), [0 300], 40);
plot(t,y,'r')
hold on
scatter(15,95,'ob')
text(23,96,'y(t=15) = 95','Color','b')
hold off
function k_value = calculate_k(x)
tspan = [0 15];
y0 = 40;
[~,y] = ode45(@(t,y) x*y*exp(450/y), tspan, y0);
k_value = y(end) - 95;
end
This will give you as result:
k = 0.00010435
or if you need it more accurate:
k =
1.043495007807761e-04
and the plot which belongs to this result looks like the boundary conditions are met (To be precise, it keeps the boundary conditions. This is because fzero is a powerful tool and also because you can think of a very good initial value for x0 with just a few estimates...):
.
Best regards
Stephan