MATLAB: Why do I get “Undefined function or variable ‘tspan’.”

errorMATLAB

I'm trying to solve for pendulum and everytime I try to run the file I get
Undefined function or variable 'tspan'.
function [z_ydot] = pendulum(t,z_y,k,d,m,L,g)
z_ydot = zeros(4,1);
z_ydot(1) = z_y(2);
z_ydot(2) = (k.*d^2.*(z_y(3)-z_y(1))./(m.*L^2) - ((g.*z_y(1))./L);
z_ydot(3) = z_y(4);
z_ydot(4) = (k.*d^2.*(z_y(1)-z_y(3))./(m.*L^2) - ((g.*z_y(3))./L);
clear; clc; close all
g=9.81; % acceleration due to gravity
m=2; % mass in kilograms
L=0.75; % length in metres
d=0.5; % distance to the spring in metres
k=130; % spring stiffness in N/m
timespan = [0 20]; % timespan in seconds
% z1=theta; z2=thetadot
y_z0 = [0 0 13 0];
[t,z_y] = ode45(@(t,z_y) pendulum(t,z_y,k,d,m,L,g), tspan, y_z0);
% time history of theta1
figure
plot(t,z_y(:,1))
title('Theta 1');
xlabel('time')
ylabel('theta')
grind on
% time history of theta2
figure
plot(t,z_y(:,3))
title('Theta 2');
xlabel('time')
ylabel('thetadot')
grind on

Best Answer

The code defines that variable as ‘timespan’. The argument names and the varialble names must always match.
Try this:
[t,z_y] = ode45(@(t,z_y) pendulum(t,z_y,k,d,m,L,g), timespan, y_z0);