Code covered by the BSD License  

Highlights from
SDamala Toolbox

image thumbnail
from SDamala Toolbox by Angélica María Atehortúa Labrador
Dynamical systems Toolbox, for simulation and analysis dynamical systems deterministic

clasdtri.m
function clasdtri(f,g,h)
syms x y z l
f=sym(f);
g=sym(g);
j=jacobian([f;g;h],[x,y,z]);
fid = fopen('puntos.txt', 'w+');
fprintf(fid,'ANLISIS DE LOS PUNTOS DE EQUILIBRIO \n');
fprintf(fid,'---------------------------------------------------------\n\n');
fprintf(fid,'Sistema: \n');
funf=strcat('f(x,y,z)=',char(f),';\n');
fung=strcat('g(x,y,z)=',char(g),';\n');
funh=strcat('h(x,y,z)=',char(h),';\n\n');
fprintf(fid,funf);
fprintf(fid,fung);
fprintf(fid,funh);
fprintf(fid,'Nulclinales del sistema: \n');
nulx=solve(sym(f),z);
fprintf(fid,'Para dx/dt =0:\n');
for i=1:length(nulx)
    nulx=solve(sym(f),z);   
    nulxs=char(nulx(i));
    fprintf(fid,'y=%s\n',nulxs);
end
nuly=solve(sym(g),z);
fprintf(fid,'Para dy/dt =0:\n');
for i=1:length(nuly)
    nuly=solve(sym(g),z);   
    nulys=char(nuly(i));
    fprintf(fid,'y=%s\n',nulys);
end
nulz=solve(sym(h),z);
mz=length(nulz);
fprintf(fid,'Para dz/dt =0:\n');
for i=1:mz
    nulz=solve(sym(h),z);
    nulzs=char(nulz(i));
    fprintf(fid,'y=%s\n',nulzs);
end
fprintf(fid,'\n');
fprintf(fid,'Matriz Jacobiana (Jac) del sistema:\n');
m11=char(j(1,1));
m12=char(j(1,2));
m13=char(j(1,3));
m21=char(j(2,1));
m22=char(j(2,2));
m23=char(j(2,3));
m31=char(j(3,1));
m32=char(j(3,2));
m33=char(j(3,3));
fprintf(fid,'Jac(1,1)=%s\n',m11);
fprintf(fid,'Jac(1,2)=%s\n',m12);
fprintf(fid,'Jac(1,3)=%s\n',m13);
fprintf(fid,'Jac(2,1)=%s\n',m21);
fprintf(fid,'Jac(2,2)=%s\n',m22);
fprintf(fid,'Jac(2,3)=%s\n',m23);
fprintf(fid,'Jac(3,1)=%s\n',m31);
fprintf(fid,'Jac(3,2)=%s\n',m32);
fprintf(fid,'Jac(3,3)=%s\n\n',m33);

s=solve(f,g,h);
if isempty(s)==1
    fprintf(fid,'El sistema no tiene puntos de equilibrio\n\n');
else
    sx=s.x;
    sy=s.y;
    sz=s.z;
    sxe=eval(sx);
    sye=eval(sy);
    sze=eval(sz);
    fprintf(fid,'Puntos de equilibrio del sistema:\n');
    for i=1:length(sx)
        fprintf(fid,'pe(%d)=(%f,%f,%f)\n',i,sxe(i),sye(i),sze(i));
    end
    fprintf(fid,'\n');
   
    fprintf(fid,'..........................................................\n');
    fprintf(fid,'Linealizacin del sistema y estabilidad\n');
    fprintf(fid,'..........................................................\n\n');
    for i=1:length(sxe)
        x=sxe(i);
        y=sye(i);
        z=sze(i);
        A=eval(j);    
        I=eye(size(A));
        ff=det(A-l*I);
        ev=solve(ff);
        poli=char(ff);
        [m,n]=size(A);
        fprintf(fid,'Punto de equilibrio No. %d: (%f,%f,%f) \n\n',i,sxe(i),sye(i),sze(i));
        fprintf(fid,'La matriz linealizada (A) es:\n\n');
        for k=1:m
            for kk=1:n
                fprintf(fid,'A(%d,%d)=%f\n',k,kk,A(k,kk));
            end
        end
        fprintf(fid,'\nEl polinomio caracterstico del sistema es: %s \n\n', poli);
        fprintf(fid,'Eigenvalores del sistema:\n\n');
        fprintf(fid,'e1= %s\n\n',char(ev(1)));
        fprintf(fid,'e2= %s\n\n',char(ev(2)));
        fprintf(fid,'e3= %s\n\n',char(ev(3)));
%----------------------->> Reales <<-------------------------------------
        if (imag(ev(1))==0 & imag(ev(2))==0 & imag(ev(3))==0)==1
            if (eval(ev(1))<0 & eval(ev(2))<0 & eval(ev(3))<0)==1
                fprintf(fid,'El punto de equilibrio es un sumidero\n');
            else   
                if (eval(ev(1))>0 & eval(ev(2))>0 & eval(ev(3))>0)==1
                    fprintf(fid,'El punto de equilibrio es una fuente\n');    
                else
                    fprintf(fid,'El punto de equilibrio es un punto de silla\n');
                end
            end  
        else
%----------------------->> Reales y Complejos <<------------------------------------
            if imag(ev(1))==0
                if (eval(ev(1))<0 & eval(real(ev(2)))<0)==1
                    fprintf(fid,'El punto de equilibrio es un sumidero espiral\n');
                else
                    if (eval(ev(1))>0 & eval(real(ev(2)))>0)==1 
                       fprintf(fid,'El punto de equilibrio es una fuente espiral\n');
                    else
                        fprintf(fid,'El punto de equilibrio es un punto de silla espiral\n');
                    end
                end
            end
        end
    end
end
fclose(fid);
home=pwd;
URL=strcat(home,'\puntos.txt');
web (URL, '-new');

Contact us