Error in simple ode45 functions
조회 수: 1 (최근 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개)
참고 항목
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!