Anda di halaman 1dari 69

Carlos Andr Vaz Junior

cavazjunior@gmail.com
http://www.eq.ufrj.br/links/h2cin/carlosandre

EQ/UFRJ

fsolve
FSOLVE solves systems of nonlinear equations of several variables.

EQ/UFRJ

principal.m
solucao = fsolve('funcao',[2],optimset('Display','iter'))

function [y] = funcao(x)


y=2*x+1;

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

>> principal
Norm of
First-order Trust-region
Iteration Func-count f(x)
step
optimality radius
0
2
25
10
1
1
4
9
1
6
1
2
6
0
1.5
0
2.5
Optimization terminated: first-order optimality is less than options.TolFun.

EQ/UFRJ

principal.m
solucao = fsolve('funcao',[2],optimset('Display','iter'))

function [y] = funcao(x)


y=2*x^2+x-2;

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

solucao = fsolve('funcao',[-1],optimset('Display','iter'))
function [y] = funcao(x)
y=8*x^2+4*x-2;

Experimente outro chute inicial:


solucao = fsolve('funcao',[2],optimset('Display','iter'))
solucao = fsolve('funcao',[-5],optimset('Display','iter'))
EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

A= 8;
B= 4;
C= -2;
solucao = fsolve('funcao',[-1],optimset('Display','iter'),A,B,C)

function [y] = funcao(x,A,B,C)


y=A*x^2+B*x+C;

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

Achando todas as razes do polinmio:


A=roots([8 4 -2])

EQ/UFRJ

solucao = fsolve('funcao',[-4 1],optimset('Display','iter'))

function [y] = funcao(x)


y(1)= ( x(1).^2 ) - 5 + x(2);
y(2)= (2*x(2))-2;

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

Ajuste de PID

EQ/UFRJ

A seguinte malha de controle foi elaborada no Simulink.


Usar o Matlab para ajustar o controlador.

degrau unitrio
no instante 5

EQ/UFRJ

P
I
D

Programa principal:
clear all
close all
warning off
options = optimset('display','iter');
global P I D erro
Pmin = fminsearch('custo', [1 5 1],options)

EQ/UFRJ

Funo custo:
function [erro] = custo(x)
global P I D erro
P=x(1);
I=x(2);
D=x(3);
[T]=sim('malha',[0 65]);
erro=sum(erro.^2);

EQ/UFRJ

Soluo encontrada para degrau unitrio no SP:


Pmin = 4.5075 2.6329 -0.0000

EQ/UFRJ

Arquitetura Simulink usada para gerar o grfico


do slide anterior:

EQ/UFRJ

Ao invs de minimizar o somatrio quadrtico do erro,


posso minimizar o somatrio quadrtico ponderado com
o tempo. Ou seja, erros em tempos mais elevados so mais
significativos.

EQ/UFRJ

EQ/UFRJ

Programa principal:
clear all
close all
warning off
options = optimset('display','iter');
global P I D erro tempo
Pmin = fminsearch('custo', [10 5 1],options)

EQ/UFRJ

Funo custo:
function [erro] = custo(x)
global P I D erro tempo
P=x(1);
I=x(2);
D=x(3);
[T]=sim('malha',[0 65]);
%erro=sum(erro.^2); % somatorio quadratico do erro
erro=sum((erro.*tempo).^2); % somatorio quadratico
do erro ponderado com o tempo

EQ/UFRJ

Resultado obtido:
Pmin = 25.8333

5.3333 -0.0000

Chute inicial usado:


10 5 1

EQ/UFRJ

Ajuste de TF

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

EQ/UFRJ

Ferramenta completa para treinamento...

EQ/UFRJ

Passando dados para o Simulink

EQ/UFRJ

Gerador de dados experimentais:

EQ/UFRJ

EQ/UFRJ

Usando os dados experimentais:

EQ/UFRJ

EQ/UFRJ

Anda mungkin juga menyukai