Error in simple ode45 functions
2 次查看(过去 30 天)
显示 更早的评论
Hello, I am trying to solve a non-stiff 2nd order ODE with ode45 function. My ODE is d^2y/dt^2 = -g + (4/15)*(1/m)*(dy/dt)^2
Here is the ode function file that I made
function [ ode_fun_vect ] = ode_1_fun( t,z )
global m g
m=80;
g=9.81;
ode_fun_vec=[z(1);-g+(4/15)*(z(1))^2/m];
end
And here is script to solve ode:
clc;
clear all;
close all;
initial_cond=[600,0];
time_range=[0,20];
[t,y]=ode45(@ode_1_fun,time_range,initial_cond);
figure();
subplot(2,1,1);
plot(t,y(:,1));
xlabel('time');
ylabel('displacement');
subplot(2,1,2);
plot(t,y(:,2));
xlabel('time');
ylabel('velocity');
However I am getting some errors saying: Output argument "ode_fun_vect" (and maybe others) not assigned during call
Can someone help me? Thanks in advance!
0 个评论
采纳的回答
Star Strider
2014-9-24
Typo!
You defined ‘ode_fun_vect’ as your function output and ‘ode_fun_vec’ as the value it calculates. Change one or the other and your ODE integrates successfully.
2 个评论
Star Strider
2014-9-24
My pleasure!
That’s the first problem I look for, since I have typos in my own code more often than I’d like to admit.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Ordinary Differential Equations 的更多信息
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!