MatLab - Criando uma função

Neste post será ensinado como fazer uma função no MatLab

Uma função no MatLab deve ser escrita em um script. Para isso, deve-se criar um novo script, apertando em New/Script na parte superior esquerda.


Após isso, irá abrir uma janela onde uma função pode ser escrita. Uma função possui a seguinte estrutura:

Função em MatLab

As saídas são variáveis que serão devolvidas pela função. No caso do exemplo há três saídas.
As entradas são variáveis necessárias para que a função seja executada. Há, também, três entradas neste exemplo.
O nome da função que esta sendo aqui definida é funcao. Ao salvar a função, cria-se um arquivo *.m que DEVE ter o mesmo nome da função, neste caso o arquivo gerado deverá ter o nome funcao.m.

Exemplo: Função que recebe três valores e calcula a soma e o produto deles:



Assim, para acessá-la no Command Window basta proceder conforme a seguir:

Programação em MatLab

Veja que neste caso, a variável A recebeu a soma 10+3+2, e a variável B, o produto 10*3*2.

Um comando importante para a programação em MatLab é o for

Uso do for em MatLab

A sintaxe geral é a seguinte:

for variavel = inicio:incremento:fim
    ...
    %declarações
    ...
end

Neste exemplo, em cada passo serão executadas as declarações e a variável variavel será modificada, começando com o valor de inicio, incrementando com o valor de incremento até o valor de fim.
É possível usar a função for sem definir o incremento. Neste caso, por padrão, o incremento é 1.

Uso do if em MatLab

Outra função importante na programação é o uso do if. O if é uma condição imposta. Ele tem a seguinte sintaxe geral:

if a == b      %Se a variável a for igual a b
    a = 0;
elseif a > b   %Caso a diferente de b e a maior que b
    a = b;
else           %Caso contrário (a diferente de b e a menor que b)
    b = a
end            %fim da função

O comando if possui as seguintes formas de comparação:


Comparações usando if
Comparação Comando
Igual ==
Diferente ~=
Maior >
Menor <
Maior igual >=
Menor Igual <=

Exemplo usando o que foi aprendido:
Dada uma matriz M, criar uma função que verifique quantos valores se repetem nesta matriz.


Veja que esta função vai percorrendo cada elemento da matriz para verificar se acha outro igual a ele. Ao encontrar outro igual, a função finaliza com o uso do break e passa para o próximo elemento de referência.
Pode surgir a dúvida de que após o primeiro elemento igual, existam outros que também sejam iguais e com o uso do break, estes outros elementos estariam sendo ignorados. Isso não ocorre pois o elemento identificado como igual, será um elemento de referência em algum momento. Veja, abaixo, como o processo ocorre detalhadamente:

%Definindo uma matriz M
M = [1 2 5; 2 1 3; 1 2 1];

Já podemos perceber que há 5 elementos repetidos, sendo eles o 1 (3 vezes) e o 2 (2 vezes).
Chamando a função repete, a lógica ocorre da seguinte forma:

1 - A variável quanto recebe zero;
2 - Verifica-se quantas linha e quantas colunas tem a matriz M;
3 - Transforma-se a matriz M em um vetor coluna;
4 - tamanho recebe o tamanho do vetor;
5 - Pega-se o elemento k1 do vetor Vetor_M como elemento referência
    5-1 - Percorre-se o vetor Vetor_M a partir do elemento escolhido até que se encontre outro igual;
    5-2 - Ao encontrar outro igual, muda-se o elemento de referência para o próximo e procede-se novamente como 5-1.

A variável quanto guarda quantas vezes há elementos repetidos. A varável valor é um vetor com os elementos que possuem mais de um.

Veja o uso da função repete na matriz M definida acima.

>> M = [1 2 5; 2 1 3; 1 2 1]

M =

     1     2     5
     2     1     3
     1     2     1

>> [quanto,valor] = repete(M)

quanto =

     5


valor =

     1     2     1     2     1

É importante perceber que o vetor Vetor_M guarda as colunas da matriz M. Desta forma, o código percorre coluna por coluna.




MatLab - Comandos e funções importantes I

Alguns comandos e funções muito utilizadas na programação usando MatLab®

Obter o tamanho de um vetor (length e size):

>> %Definindo um vetor
>> V = 1:10;
>> %Obtendo o tamanho de V
>> Tamanho = length(V)

No caso acima, Tamanho valerá 10. O comando length retorna quantos elementos um vetor possui. Caso ele seja usado em matrizes, ele irá retornar a maior dimensão dessa matriz.

Existe a também função size, que retorna um vetor com as dimensões de uma variável. No caso de vetores, uma das respostas será 1.
>> %Definindo um vetor linha
>> V1 = 1:10;
>> %Definindo um vetor coluna
>> V2 = [1;2;3;4;5;6;7;8;9;10];
>> %Usando o comando size
>> Tamanho1 = size(V1)

Tamanho1 =


     1    10

>> Tamanho2 = size(V2)

Tamanho2 =


     10    1

Este comando é mais recomendado para ser utilizado com matrizes.

Acessar o último elemento de um vetor:

Caso queira-se obter o último elemento de um vetor sem que se conheça o tamanho deste vetor, basta usar end:
>> %último elemento do vetor V1
>> V1(end)

ans =


    10

A variável ans é a variável automaticamente definida pelo programa caso não se defina outra para receber o resultado.


Obter apenas uma parte do vetor ou matriz:

Caso deseja-se obter apenas uma parte de um vetor ou matriz, basta inserir quais elementos deseja-se obter:
>> %Obtendo apenas os 5 primeiros elementos de V1
>> V1(1:5)

ans =


     1     2     3     4     5

>> %Obtendo apenas os elementos 1 4 6 7 9 10
>> V1([1 4 6 7 9 10])

ans =


     1     4     6     7     9    10


Transpor vetor ou matriz:

Para transpor uma variável, basta usar '. Caso tenha-se um vetor linha e deseja-se transformá-lo em vetor coluna:
>> %Transformando vetor linha em coluna
>> Coluna = V1'

Coluna =

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10

>> %Transformando vetor coluna em linha
>> Linha = V2'

Linha =


     1     2     3     4     5     6     7     8     9    10

Com matrizes o uso de ' funciona da mesma forma, transpondo a matriz.

Criando matrizes de zeros, uns, identidade e diagonal:

Matriz de zeros:
>> M_zeros = zeros(m,n);

Este comando irá criar uma matriz de zeros de m linhas e n colunas.

Matriz de uns:
>> M_um = ones(m,n);

Este comando cria uma matriz em que todos os elementos são 1 com m linhas e n colunas.

Matriz identidade:
>> M_identidade = eye(5);

Este comando cria uma matriz identidade 5x5.

Matriz diagonal:
>> M_diagonal = diag([1 2 3 4 5 6]);

Este comando cria uma matriz em que há apenas elementos na diagonal principal, sendo eles 1 2 3 4 5 6.

Obtendo o maior e o menor elemento de um vetor ou uma matriz:

Os comandos max e min retornam o maior e o menor elemento de um vetor. Caso ele seja empregado em uma matriz, ele irá retornar um vetor com o maior elemento de cada coluna. Utilizando um vetor de variáveis para receber o resultado da função max, ele retorna o maior elemento e a posição dele.

>> %Definindo um vetor linha
>> V = [1 5 2 7 5 3 6];
>> %Obtendo o maior elemento e a posição dele no vetor
>> [Maior,Posicao] = max(V)

Maior =

     7


Posicao =

     4

O mesmo procedimento é adotado pela função min, que neste caso retorna o menor elemento.





MatLab - Manipulando e acessando valores (Vetores e matrizes)

Manipulando e acessando valores de uma matriz ou um vetor no MatLab®

Após definir variáveis é importante saber manipulá-las no programa. Veja como fazer isso:

Exemplo:
>> %Definindo vetor V
>> V = 1:0.5:6;>> %Definindo Matriz M
>> M = [1 2 3; 4 5 6; 7 8 9];

O uso do ponto e vírgula no fim de cada linha serve para que os resultados do comando não sejam exibidos na tela.

Caso deseja-se acessar o elemento da segunda linha e terceira coluna da matriz M e inseri-lo na variável a, basta proceder conforme segue:

>> %Definindo escalar a
>> a = M(2,3);

Veja que de forma muito intuitiva o programa permite que sejam acessados valores de matrizes e vetores. No caso do exemplo acima, a variável escalar a assumirá o valor 6, pois este é o elemento da linha 2 coluna 3 da matriz M. Nos vetores, sejam eles vetores linha ou coluna, basta digitar a posição do elemento que deseja-se acessar:

>> %Definindo escalar b
>> b = V(4);

Como visto anteriormente, o elemento da posição 4 do vetor V é o 2,5., valor este que é inserido em b.

Veja abaixo, como os comandos acima são apresentados no Command Widow. Perceba que não será usado o ponto e vírgula e que por este motivo, os resultados de cada comando serão apresentados (destacados por um retângulo vermelho na figura).







MatLab - Introdução ao MatLab: Definindo variáveis

Definindo variáveis como escalares, vetores e matrizes no MATLAB®

Um dos grandes diferenciais do MATLAB® é a eficiência com a manipulação de variáveis, principalmente com matrizes e vetores. A seguir, serão mostradas as formas de se definir essas variáveis.

Escalares

No exemplo do tópico anterior já foi mostrado como definir uma variável. Basta digitar o nome da variável e igualá-la ao valor desejado.

Exemplo:>> %Definindo escalares A, B e C
>> A = 10;
>> B = 3.1415;
>> C = 5.2375943*10^-5;

Veja o que ocorre ao definir os escalares acima:

MatLab


No caso do MATLAB® não é preciso estabelecer anteriormente o tipo de variável, se é uma string, um inteiro ou um valor real, por exemplo. Automaticamente ele percebe isso na definição da variável. Outra questão importante é que a separação dos valores decimais para os inteiros se dá por ponto e não por vírgula.

Vetores

A definição de vetores ocorre de forma análoga à de escalares, com o diferencial do uso de "[]". Para definir um vetor linha (ou seja, com uma linha e várias colunas) usa-se vírgula ou espaço entre os termos. Se deseja-se definir um vetor coluna (uma coluna e várias linhas) usa-se o ponto-e-vírgula separando os elementos do vetor.

Exemplo:
>> %Definindo vetores A, B e C
>> A = [1,2,3,4,5,6];
>> B = [1 2 3 4 5 6];
>> C = [1;2;3;4;5;6];


Definindo Vetores MATLAB


Além disso, existe uma forma de se definir um vetor desde que os termos tenham uma diferença entre eles constante. Veja o exemplo a seguir:

Exemplo:
>> %Definindo vetores A, B e C
>> A = 1:0.5:6;
>> B = 1:1:6;
>> C = 1:0.25:3;

O que foi feita anteriormente é o mesmo que:

>> A = [1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6];
>> B = [1,2,3,4,5,6];
>> C = [1,1.25,1.5,1.75,2,2.25,2.5,2.75,3];

Com este recurso os vetores formados são todos vetores linha.

Matrizes

As matrizes são definidas com elementos preenchendo suas linhas e colunas. A definição de uma matriz ocorre linha por linha, separando cada linha por ponto-e-vírgula.

Exemplo:
>> %Definindo Matriz M
>> M = [1 2 3; 4 5 6; 7 8 9];

A matriz M é uma matriz 3x3 que tem na primeira linha os termos 1 2 3, na segunda linha 4 5 6 e na terceira linha 7 8 9.



MatLab - Introdução ao MatLab: Janelas

Introdução ao MATLAB® para iniciantes

A popularidade do MATLAB® tem crescido muito nos últimos anos. Seu uso na engenharia tornou-se bastante comum devido ao seu alto desempenho para trabalhar com matrizes o operações matriciais. Este post tratará de alguns conceitos iniciais do programa, para familiarização de usuários iniciantes.

Janelas de trabalho do MATLAB®

O layout do  MATLAB® apresenta basicamente 4 janelas principais:



Comand Window: Neste espaço é possível digitar os códigos que se deseja, definindo variáveis, plotando gráficos, chamando funções etc. É aqui também que são mostradas as mensagens de erros.

Exemplo:
>> %Definindo um valor para A
>> A = 10;

A primeira linha, em verde e iniciada por % é um comentário. No MatLab os comentários são identificados pelo % no início. Ao digitar o estabelecido no Exemplo, automaticamente a variável A assumirá o valor igual a 10. Na janela Workspace aparecerá a variável definida e no Command History vai ficar registrado o que foi feito no Workspace. Para repetir os comandos registrados no Command History basta ir apertando no botão  do teclado.

Janelas do MatLab


Workspace: Esta é a janela que exibe todas as variáveis existentes e definidas.

Command History: Janela onde fica registrado aquilo que foi digitado no Workspace em blocos separados por data.

Current Folder: Mostra os arquivos da pasta na qual o MatLab esta direcionado. Para mudar a pasta do Current Folder basta selecionar uma outra pasta na toolbar superior. No caso das figuras anteriores, a pasta aberta é C:/Users/Documents/MATLAB e como pode ser visto na Janela Current Folder não há nenhum arquivo nesta pasta.

Alguns comandos iniciais podem ser muito úteis.

clc: Ao digitar clc no Workspace toda a janela ficará limpa. Este comando limpa apenas o Workspace não alterando qualquer dado existente nas outras janelas.

clear: o comando clear serve para limpar as variáveis existentes. Para limpar todas deve-se digitar clear all, caso deseja-se limpar uma variável em específico, por exemplo a variável A, deve-se digitar clear A. Para limpar especificamente as variáveis A, B, C, digita-se clear A B C.



Espaço Vetorial: Dimensão e Mudança de base

Definição de dimensão e mudança de base

Nesta publicação será falado sobre:
  • Dimensão e;
  • Mudança de base.

Dimensão

A dimensão de um espaço vetorial finitamente gerado é o número de vetores que compõem as bases de um espaço vetorial. Em complemento a isto, existe o Teorema de Invariância que citaremos a seguir:

TEOREMA DA INVARIÂNCIA: Dado um espaço vetorial finitamente gerado E. Então qualquer base deste espaço tem o mesmo número de vetores.


Com o Teorema da Invariância, estabelecemos que dado um espaço vetorial (ou um sub-espaço vetorial) toda e qualquer base deste espaço possui o mesmo número de vetores. Este número chamamos de Dimensão do espaço vetorial.

Alguns exemplos:
  • O espaço tridimensional (R³) tem dimensão 3;
  • O espaço dos polinômios de grau n tem dimensão n+1;
  • O espaço das matrizes de dimensão li x col tem dimensão li*col.

Mudança de base

Seja E um espaço vetorial de dimensão n que tenha A = {a1, a2, ..., an} e B = {b1, b2, ..., bn} como bases diferentes. Então, existe uma única família de escalares αij que possibilite a seguinte combinação linear:



PROVA DE QUE A FAMÍLIA DE ESCALARES É ÚNICA:
Supondo que não seja única, então existe uma família αij e uma família βij. Assim:


Porém, como B é uma base, então os vetores b1, b2, ... são Linearmente Independentes (Veja), logo:


A matriz formada pelos escalares αij é chamada de matriz de mudança de base, que transforma um vetor escrito na base B para a base A.


Sejam as bases A e B formadas pelos vetores





Assim temos:



De:



Temos:



De onde tiramos que:


De forma análoga temos:


Formando a matriz de transformação do sistema B no sistema A:

Mudança de base

Fonte: CALLIOLI, Carlos A.; DOMINGUES, Hygino H.; COSTA, Roberto C. F., Álgebra Linear e Aplicações, São Paulo, Atual, 6ª ed, 1990.





Exercício Resolvido - Resistência Equivalente Circuito 1

Calcule a resistência equivalente da associação mista de resistores entre os pontos A e B no circuito abaixo:

Circuito 1

Associação Mista

Solução:

Neste exercício existe uma associação mista de resistores pois há associação em paralelo e em série.

Os resistores de 1,2 Ω e 6 Ω estão em paralelo, enquanto que os de 5 Ω e 7 Ω e os de 4 Ω e 8 Ω estão em série.

A solução deste tipo de exercício deve ser feita passo a passo, calculando as resistências equivalentes de cada associação, uma por vez e no fim, o resultado será obtido naturalmente.

Cálculo da associação paralela entre os resistores de 1,2 Ω e 6 Ω

O cálculo da resistência equivalente de uma associação em paralelo é obtida usando a seguinte fórmula:

Resistência em paralelo

Onde Req é a resistência equivalente da associação de resistores, R1 neste caso vale 1,2 Ω e R2 vale 6 Ω. Substituindo os valores temos:

Associação paralela

Assim, como 1/Req = 1 Ω, então Req = 1 Ω. Logo, a associação de resistores da figura é equivalente a:

Calculando Resistores

Cálculo da associação em série entre os resistores de 5 Ω e 7 Ω e os de 4 Ω e 8 Ω

O cálculo da associação de resistores em série é mais simples pois basta somar as resistências. No caso, a resistência equivalente da associação em série entre 5 Ω e 7 Ω será 12 Ω e entre 4 Ω e 8 Ω será 12 Ω também. Assim, o circuito fica:


Associação mista de resistores

Cálculo da associação paralela entre os dois resistores de 12 Ω

Veja que as resistência de 12 Ω ficaram em paralelo. Usando a fórmula para o cálculo da Req para associação em paralelo temos:

associação em paralelo

Assim, como 1/Req = 1/6, então Req = 6 Ω.

Cálculo da resistência equivalente de todo o circuito

 Após o último cálculo, temos que o circuito fica:


Associação em série de resistores

As duas resistências restantes estão em série, logo a Resistência Equivalente do circuito será de 7 Ω.

< INTRODUÇÃO TEÓRICA                                   CIRCUITO 2 >


Exercício Resolvido - Maximização de volume: Multiplicadores de Lagrange

Cálculo do máximo e do mínimo volume de uma caixa utilizando multiplicadores de Lagrange

Calcule o maior e o menor volume de uma caixa retangular cuja área deve ser de 1500 cm² e a soma das arestas 200 cm.

Solução:

Como se trata de um exercício de obtenção do máximo e do mínimo de uma função segundo algumas condições, o uso da teoria de multiplicadores de Lagrange se torna adequado.

Neste caso, teremos uma equação a ser maximizada e minimizada que é o volume. Chamando de a, b e c as arestas da caixa temos:


As condições que devemos obedecer são:

Condição de aresta:


Condição de área:


Com isso podemos construir a função de Lagrange:


Assim, as soluções que maximizam e minimizam o volume segundo as condições de área e de aresta são dadas pela solução do seguinte sistema:



Disso, temos que:

Da primeira equação:


Da segunda equação:


Aqui já podemos concluir que a = b

Veja também:
Exercício Resolvido - Multiplicadores de Lagrange

Utilizando este resultado nas duas últimas equações temos:

c = 50 - 2a
a² + 2ac = 750

Substituindo:

a² + 2a*(50 - 2a) = 750
3a² - 100a + 750 = 0

Neste último caso, temos uma equação do segundo grau em a, que tem como raízes:


Assim, como b = a e c = 50 - 2a temos os valores das arestas:


Portanto:


Perceba que a terceira equação não foi utilizada, nem mesmo a relação de a e b com os multiplicadores de Lagrange λ e λ de onde concluímos que a = b. O uso destas equações iria nos fornecer os valores dos multiplicadores, o que não nos interessa a não ser que seja necessário. Como não foi, não calculá-los, simplifica bastante o problema.

Abaixo, veja o gráfico tridimensional de: Volume x a x b onde c foi substituído por c = 50 - a - b.
Em azul, a linha que estabelece a condição de área (ab + ac + bc = 750) e em verde, os pontos onde a área é máxima e mínima segundo as condições impostas:


Máximo e Mínimo

Veja apenas a curva em azul e os pontos:

Máximo e Mínimo