Func returns a vector of length 2, but the length of initial conditions vector is 9.

1 view (last 30 days)
%% We will create a function that refers to our system and its variables
function dx=mbk(t,x)
m=10; % mass
b=0; % value of spring which creates oscillation
k=1600;
F0=0;
sigma=1;
Fext=F0*sin(sigma*t); % harmonic function
dx(1)=x(2);
dx(2)=1/m*(-b*x(2)-k*x(1)+Fext); % mechanical system equation
dx=dx';
this is my function,
clear
clc
% This code is going to solve our system function
tspan=[0 10]; % time interval
n= -4:4; %initial condition
delta_n=[0,0,0,0,1,0,0,0,0]
[T, X]=ode23('mbk',tspan,delta_n); % ode23 command solves differantial equations
displacement=X(:,1);
v=X(:,2);
%% Results
figure(1)
plot(T,displacement)
xlabel('Time/sec')
ylabel('Displacement')
grid on
figure(2)
plot(T,v)
xlabel('Time/sec')
ylabel('Velocity')
grid on
and this one is my solution for function, im trying to give the system a unit impulse thats why i created delta_n but now it says
"mbk returns a vector of length 2, but the length of initial conditions vector is 9."
how can i solve this problem ^^

Answers (1)

William Rose
William Rose on 27 Nov 2021
Your initial conditions should be a 2-element vector, since mbk() returns a 2-componnt vector.
So do
tspan=[0 10]; % time interval
%n= -4:4; %initial condition
%delta_n=[0,0,0,0,1,0,0,0,0]
x0=[-4,4]; %or x0=[0,1]; or whatever you wish the initial conditions to be
[T, X]=ode23('mbk',tspan,x0); % ode23 command solves differantial equations to use
Try.

Categories

Find more on Programming in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!