You are on page 1of 30

Matlab: Cálculo Numérico

Felix Farias

http://felixfarias.googlepages.com/

   
Sumário

● Polinômios
● Sistemas Lineares
● Sistemas Não Lineares
● Equações Diferenciais Ordinárias

   
Polinômios

Polinômios são representados no Matlab


através de vetores, onde cada elemento do
vetor corresponde a um dos coeficientes do
polinômio.

n n−1
a n x a n−1 x ...a 1 xa 0
p=[an an-1 ... a1 a0]

   
Polinômios

O valor de um polinômio para um dado


ponto “x” pode ser avaliado pela função
polyval.
3 2
x 4 x −5

>> z = polyval([1 4 0 -5],0)


z=
-5
   
Polinômios

As raízes de um polinômio podem ser


encontradas facilmente com o comando
roots.

n n−1
a n x a n−1 x ...a 1 xa 0 =0

   
Polinômios

As raízes de um polinômio podem ser


encontradas facilmente com o comando
roots.
3 2
2 x  x −2 x1=0

>> roots([2 1 -2 1])


ans =
-1.43756 + 0.00000i
0.46878 + 0.35785i
0.46878 - 0.35785i
   
Sistemas de Equações
Algébricas Lineares

Sistema Linear:

A x=b

   
Sistemas de Equações
Algébricas Lineares

Sistema Linear:

a 1,1 xa 1,2 ya 1,3 z=b1


a 2,1 xa 2,2 ya 2,3 z=b 2
a 3,1 xa 3,2 ya 3,3 z=b3

   
Sistemas de Equações
Algébricas Lineares

Sistema Linear:

[ ][ ] [ ]
a 1,1 a 1,2 a 1,3 x1 b1
a 2,1 a 2,2 a 2,3 x 2 = b2
a 3,1 a 3,2 a 3,3 x3 b3

   
Sistemas de Equações
Algébricas Lineares

Sistema Linear:

>> a=[a1,1 a1,2 a1,3;


a2,1 a2,2 a2,3;
a3,1 a3,2 a3,3];

   
Sistemas de Equações
Algébricas Lineares

Sistema Linear:

>> b=[b1;
b2;
b3];

   
Sistemas de Equações
Algébricas Lineares

Sistema Linear:

>> x=b*inv(A)
>> x=A/b
>> x=b\A

   
Sistemas de Equações
Algébricas Lineares

Sistema Linear:

>> a = [1 1 1
101
0 1 1];

   
Sistemas de Equações
Algébricas Lineares

Sistema Linear:

>> b =
6
4
3

   
Sistemas de Equações
Algébricas Lineares

Sistema Linear:

>> b\a
ans =
3
2
1

   
Equações Algébricas NÃO-
Lineares

Solução do Sistema F(x)=0 pelo comando


fsolve (numerica):

>> x = fsolve(fun,x0)

   
Equações Algébricas NÃO-
Lineares

Solução do Sistema F(x)=0 pelo comando


fsolve (numerica):

>> x = fsolve(@(x) x*ln(x),1)

   
Equações Algébricas NÃO-
Lineares

Solução do Sistema F(x)=0 pelo comando


solve (algebrica):

>> x = solve('x*ln(x)')

   
Equações Diferenciais
Ordinárias

Sistema de 3 CSTR não isotérmicos em


série.
dC A1 1 1
= C A0 − C A1−k1C A1
dt 1 1
dC A2 1 1
= C A1− C A2−k2C A2
dt 2 2
dC A3 1 1
= C A2 − C A3−k3C A3
dt 3 3

   
Equações Diferenciais
Ordinárias

Sistema de 3 CSTR não isotérmicos em


série.

[ ]
1 1
C A0 − C A1−k1C A1
1 1
dC A
= 1 CA1− 1 C A2−k2C A2
dt 2 2
1 1
C A2− C A3−k3C A3
3 3

   
Equações Diferenciais
Ordinárias

ode23, ode45, ode113, ode15s, ode23s,


ode23t, ode23tb

[T,Y] = solver(odefun,tspan,y0)

   
Equações Diferenciais
Ordinárias

function dy = rigid(t,y)
dy = zeros(3,1);
dy(1) = y(2) * y(3);
dy(2) = -y(1) * y(3);
dy(3) = -0.51 * y(1) * y(2);

que é chamada da função ode45:

>> [T,Y] = ode45(@rigid,[0 12],[0 1 1]);


>> plot(T,Y(:,1),'-',T,Y(:,2),'-.',T,Y(:,3),'.');
   
Equações Diferenciais
Ordinárias
Exemplo: Sistema de 3 CSTR não
isotérmicos em série.

function ans=f(x,t)
tau_1=2; tau_2=2; tau_3=2;
C_A0=0.5;
C_A1=x(1); C_A2=x(2); C_A3=x(3);
ans = [
1/tau_1*C_A0 - 1/tau_1*C_A1 – k_1*C_A1
1/tau_2*C_A1 - 1/tau_2*C_A2 – k_2*C_A2
1/tau_3*C_A2 - 1/tau_3*C_A3 – k_3*C_A3];
end
   
Equações Diferenciais
Ordinárias

>> x0 = [0;0;0];
>> t = 0:0.01:10;
>> [x,t] = ode45(@f,x0,t);

   
EDO Contínuas/Simulink
(S-Function)
function [sys,x0] = sfcstr(t,x,u,flag,tau,k0)

switch flag
% Dimensiona o sistema e inicializa os estados
case 0
...
% Calcula as derivadas
case 1
...
% Retorna Saidas
case 3
...
% outros casos
otherwise
...
   
end
EDO Contínuas/Simulink
(S-Function)

% Dimensiona o sistema e inicializa os estados


case 0
% sys=[estados,0,saidas,entradas,0,0]
sys = [3,0,1,1,0,0];
% Condicoes iniciais
tau=2;
k=0.5;
x0 = [0 0 0]';

   
EDO Contínuas/Simulink
(S-Function)

% Calcula as derivadas
case 1
% Atualiza entradas
ca0=u(1);
% Calcula as derivadas
dCa(1)=...
dCa(2)=...
dCa(3)=...
sys = [dCa(1); dCa(2); dCa(3)];

   
EDO Contínuas/Simulink
(S-Function)

% Retorna Saidas
case 3
sys = [x(1) x(2) x(3)];

   
EDO Contínuas/Simulink
(S-Function)

% outros casos
otherwise
sys = [];
end

   
Referências

http://www.mathworks.com/access/helpdesk/he

   

You might also like