MATLAB - Álgebra

Até agora, vimos que todos os exemplos funcionam no MATLAB assim como no GNU, alternativamente chamado de Octave. Mas para resolver equações algébricas básicas, tanto o MATLAB quanto o Octave são um pouco diferentes, então tentaremos cobrir o MATLAB e o Octave em seções separadas.

Também discutiremos a fatoração e a simplificação de expressões algébricas.

Resolvendo Equações Algébricas Básicas no MATLAB

o solvefunção é usada para resolver equações algébricas. Em sua forma mais simples, a função solve leva a equação entre aspas como um argumento.

Por exemplo, vamos resolver para x na equação x-5 = 0

solve('x-5=0')

O MATLAB executará a instrução acima e retornará o seguinte resultado -

ans =
   5

Você também pode chamar a função resolver como -

y = solve('x-5 = 0')

O MATLAB executará a instrução acima e retornará o seguinte resultado -

y =
   5

Você pode até não incluir o lado direito da equação -

solve('x-5')

O MATLAB executará a instrução acima e retornará o seguinte resultado -

ans =
   5

Se a equação envolver vários símbolos, então o MATLAB por padrão assume que você está resolvendo para x, no entanto, a função de resolução tem outra forma -

solve(equation, variable)

onde, você também pode mencionar a variável.

Por exemplo, vamos resolver a equação v - u - 3t 2 = 0, para v. Neste caso, devemos escrever -

solve('v-u-3*t^2=0', 'v')

O MATLAB executará a instrução acima e retornará o seguinte resultado -

ans =
   3*t^2 + u

Resolvendo Equações Algébricas Básicas em Oitava

o roots função é usada para resolver equações algébricas no Octave e você pode escrever os exemplos acima da seguinte maneira -

Por exemplo, vamos resolver para x na equação x-5 = 0

roots([1, -5])

O Octave irá executar a instrução acima e retornar o seguinte resultado -

ans = 5

Você também pode chamar a função resolver como -

y = roots([1, -5])

O Octave irá executar a instrução acima e retornar o seguinte resultado -

y = 5

Resolvendo Equações Quadráticas no MATLAB

o solvefunção também pode resolver equações de ordem superior. Geralmente é usado para resolver equações quadráticas. A função retorna as raízes da equação em uma matriz.

O exemplo a seguir resolve a equação quadrática x 2 -7x +12 = 0. Crie um arquivo de script e digite o seguinte código -

eq = 'x^2 -7*x + 12 = 0';
s = solve(eq);
disp('The first root is: '), disp(s(1));
disp('The second root is: '), disp(s(2));

Quando você executa o arquivo, ele exibe o seguinte resultado -

The first root is: 
   3
The second root is: 
   4

Resolvendo Equações Quadráticas em Oitava

O exemplo a seguir resolve a equação quadrática x 2 -7x +12 = 0 em Octave. Crie um arquivo de script e digite o seguinte código -

s = roots([1, -7, 12]);

disp('The first root is: '), disp(s(1));
disp('The second root is: '), disp(s(2));

Quando você executa o arquivo, ele exibe o seguinte resultado -

The first root is: 
   4
The second root is: 
   3

Resolvendo Equações de Ordem Superior no MATLAB

o solvefunção também pode resolver equações de ordem superior. Por exemplo, vamos resolver uma equação cúbica como (x-3) 2 (x-7) = 0

solve('(x-3)^2*(x-7)=0')

O MATLAB executará a instrução acima e retornará o seguinte resultado -

ans =
   3
   3
   7

No caso de equações de ordem superior, as raízes são longas, contendo muitos termos. Você pode obter o valor numérico dessas raízes convertendo-as para o dobro. O exemplo a seguir resolve a equação de quarta ordem x 4 - 7x 3 + 3x 2 - 5x + 9 = 0.

Crie um arquivo de script e digite o seguinte código -

eq = 'x^4 - 7*x^3 + 3*x^2 - 5*x + 9 = 0';
s = solve(eq);
disp('The first root is: '), disp(s(1));
disp('The second root is: '), disp(s(2));
disp('The third root is: '), disp(s(3));
disp('The fourth root is: '), disp(s(4));

% converting the roots to double type
disp('Numeric value of first root'), disp(double(s(1)));
disp('Numeric value of second root'), disp(double(s(2)));
disp('Numeric value of third root'), disp(double(s(3)));
disp('Numeric value of fourth root'), disp(double(s(4)));

Quando você executa o arquivo, ele retorna o seguinte resultado -

The first root is: 
6.630396332390718431485053218985
 The second root is: 
1.0597804633025896291682772499885
 The third root is: 
- 0.34508839784665403032666523448675 - 1.0778362954630176596831109269793*i
 The fourth root is: 
- 0.34508839784665403032666523448675 + 1.0778362954630176596831109269793*i
Numeric value of first root
   6.6304
Numeric value of second root
   1.0598
Numeric value of third root
   -0.3451 - 1.0778i
Numeric value of fourth root
   -0.3451 + 1.0778i

Observe que as duas últimas raízes são números complexos.

Resolvendo Equações de Ordem Superior em Oitava

O exemplo a seguir resolve a equação de quarta ordem x 4 - 7x 3 + 3x 2 - 5x + 9 = 0.

Crie um arquivo de script e digite o seguinte código -

v = [1, -7,  3, -5, 9];
s = roots(v);

% converting the roots to double type
disp('Numeric value of first root'), disp(double(s(1)));
disp('Numeric value of second root'), disp(double(s(2)));
disp('Numeric value of third root'), disp(double(s(3)));
disp('Numeric value of fourth root'), disp(double(s(4)));

Quando você executa o arquivo, ele retorna o seguinte resultado -

Numeric value of first root
 6.6304
Numeric value of second root
-0.34509 + 1.07784i
Numeric value of third root
-0.34509 - 1.07784i
Numeric value of fourth root
 1.0598

Resolvendo Sistema de Equações no MATLAB

o solveA função também pode ser usada para gerar soluções de sistemas de equações envolvendo mais de uma variável. Tomemos um exemplo simples para demonstrar esse uso.

Vamos resolver as equações -

5x + 9y = 5

3x - 6y = 4

Crie um arquivo de script e digite o seguinte código -

s = solve('5*x + 9*y = 5','3*x - 6*y = 4');
s.x
s.y

Quando você executa o arquivo, ele exibe o seguinte resultado -

ans =
   22/19
ans =
   -5/57

Da mesma forma, você pode resolver sistemas lineares maiores. Considere o seguinte conjunto de equações -

x + 3y -2z = 5

3x + 5y + 6z = 7

2x + 4y + 3z = 8

Resolvendo Sistema de Equações em Oitava

Temos uma abordagem um pouco diferente para resolver um sistema de 'n' equações lineares em 'n' incógnitas. Tomemos um exemplo simples para demonstrar esse uso.

Vamos resolver as equações -

5x + 9y = 5

3x - 6y = 4

Tal sistema de equações lineares pode ser escrito como a equação de matriz única Ax = b, onde A é a matriz de coeficiente, b é o vetor coluna contendo o lado direito das equações lineares ex é o vetor coluna representando a solução como mostrado no programa abaixo -

Crie um arquivo de script e digite o seguinte código -

A = [5, 9; 3, -6];
b = [5;4];
A \ b

Quando você executa o arquivo, ele exibe o seguinte resultado -

ans =

   1.157895
  -0.087719

Da mesma forma, você pode resolver sistemas lineares maiores conforme mostrado abaixo -

x + 3y -2z = 5

3x + 5y + 6z = 7

2x + 4y + 3z = 8

Expandindo e coletando equações no MATLAB

o expand e a collectfunção expande e coleta uma equação respectivamente. O exemplo a seguir demonstra os conceitos -

Ao trabalhar com muitas funções simbólicas, você deve declarar que suas variáveis ​​são simbólicas.

Crie um arquivo de script e digite o seguinte código -

syms x   %symbolic variable x
syms y   %symbolic variable x
% expanding equations
expand((x-5)*(x+9))
expand((x+2)*(x-3)*(x-5)*(x+7))
expand(sin(2*x))
expand(cos(x+y))
 
% collecting equations
collect(x^3 *(x-7))
collect(x^4*(x-3)*(x-5))

Quando você executa o arquivo, ele exibe o seguinte resultado -

ans =
   x^2 + 4*x - 45
ans =
   x^4 + x^3 - 43*x^2 + 23*x + 210
ans =
   2*cos(x)*sin(x)
ans =
   cos(x)*cos(y) - sin(x)*sin(y)
ans =
   x^4 - 7*x^3
ans =
   x^6 - 8*x^5 + 15*x^4

Expandindo e coletando equações na oitava

Você precisa ter symbolic pacote, que fornece expand e a collectfunção para expandir e coletar uma equação, respectivamente. O exemplo a seguir demonstra os conceitos -

Quando você trabalha com muitas funções simbólicas, deve declarar que suas variáveis ​​são simbólicas, mas o Octave tem uma abordagem diferente para definir variáveis ​​simbólicas. Observe o uso deSin e Cos, que também são definidos no pacote simbólico.

Crie um arquivo de script e digite o seguinte código -

% first of all load the package, make sure its installed.
pkg load symbolic

% make symbols module available
symbols

% define symbolic variables
x = sym ('x');
y = sym ('y');
z = sym ('z');

% expanding equations
expand((x-5)*(x+9))
expand((x+2)*(x-3)*(x-5)*(x+7))
expand(Sin(2*x))
expand(Cos(x+y))
 
% collecting equations
collect(x^3 *(x-7), z)
collect(x^4*(x-3)*(x-5), z)

Quando você executa o arquivo, ele exibe o seguinte resultado -

ans =

-45.0+x^2+(4.0)*x
ans =

210.0+x^4-(43.0)*x^2+x^3+(23.0)*x
ans =

sin((2.0)*x)
ans =

cos(y+x)
ans =

x^(3.0)*(-7.0+x)
ans =

(-3.0+x)*x^(4.0)*(-5.0+x)

Fatoração e simplificação de expressões algébricas

o factor função fatoriza uma expressão e o simplifyfunção simplifica uma expressão. O exemplo a seguir demonstra o conceito -

Exemplo

Crie um arquivo de script e digite o seguinte código -

syms x
syms y
factor(x^3 - y^3)
factor([x^2-y^2,x^3+y^3])
simplify((x^4-16)/(x^2-4))

Quando você executa o arquivo, ele exibe o seguinte resultado -

ans =
   (x - y)*(x^2 + x*y + y^2)
ans =
   [ (x - y)*(x + y), (x + y)*(x^2 - x*y + y^2)]
ans =
   x^2 + 4