Clear Filters
Clear Filters

eigen values for all sol of ode45 ouput after finding the jacobian using symbolic syms command

2 views (last 30 days)
Hello everyone,
I am having a system with 2 differentail equations .I am using ode45 to get x ie i have t and x as column vectors of ode45 solver ouput.
I want to compute the eigen values of the system with that solution.I use a function using symbolic to find the jacobian .
But i dont know how to pass the output of ode45 sol ie x into the function to get the eigen values.
Main program:
clear all
clc;
Tspan =[0 1];
X0=[0.0; 1]; % Initial condition
%solving the differential Equation
[t,x]=ode45(@myfunc,Tspan,X0);
%Plotting the figures
figure(1)
subplot(2,1,1)
plot(t(:,1),x(:,1))
xlabel('t');
ylabel('x1');
grid on
subplot(2,1,2)
plot(t(:,1),x(:,2))
xlabel('t');
ylabel('x2')
grid on
x % Here i have array of x
% Finding the eigen values
e=findeig(x)
ODE FUNTION:
function dv=myfunc(t,x,flag)
%The Diffenrential Equation
dv=[ (x(1))+(x(2)*x(2));%x1dot Equation
x(1)-x(2); ]; % x2dot Equation
function to calculate EIGEN VALUES:
function e=findeig(x)
syms x1 x2
%The Diffenrential Equation
f1= (x1)+(x2*x2);%x1dot Equation
f2=x1-x2; % x2dot Equation
f = [f1, f2];
Jac = jacobian(f)
x1=x(:,1);
x2=x(:,2);
q=eval(Jac)
op=eig(q)
I am getting the output as
x =
0 1.0000
0.0001 0.9999
0.0001 0.9999
0.0002 0.9998
0.0002 0.9998
0.0005 0.9995
0.0007 0.9993
................. (57x2 ) array.
Jac =
[ 1, 2*x2] [ 1, -1]
??? Error using ==> horzcat CAT arguments dimensions are not consistent.
Error in ==> sym.eval at 15 s = evalin('caller',vectorize(map2mat(char(x))));
Error in ==> findeig at 15 q=eval(Jac)
Error in ==> MainProgram at 25 e=findeig(x)

Answers (0)

Categories

Find more on Symbolic Math Toolbox 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!