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

2 次查看(过去 30 天)
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)

回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Symbolic Math Toolbox 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by