=?utf-8?q?Fun=C3=A7=C3=A3o_para_escalonar_matrizes?=
Project description
Escalonamento de Matrizes Quadradas
O escalonamento de matrizes é um procedimento algébrico que podemos utilizar para resolver sistemas lineares onde o número de equações não é, necessariamente, igual ao número de incógnitas. Resolver um sistema linear significa encontrar os valores das incógnitas que satisfazem todas as equações simultaneamente.
Como utilizar
📋 Pré-requisitos
Para utilizar a função de escalonamento, é necessário que seja importado as bibliotecas numpy e numpy.linalg
import numpy as np
from numpy.linalg import det, inv
Também é necessário que a determinante da matriz seja diferente de 0, para isso utilize a função "det" na matriz
#Matriz exemplo
A = np.array([[0.5235**3,0.5235**2,0.5235,1],[0.7853**3,0.7853**2,0.7853,1],[1.0471**3,1.0471**2,1.0471,1],[1.5707**3,1.5707**2,1.5707,1]])
D = det(A)
D
🔧 Aplicação
Existem duas formas para utilizar a função:
Primeira forma
A primeira forma é alterando uma coluna de cada vez, para isso você irá primeiro transformar em 1 a diagonal principal da sua coluna, chamando a função "F_UM":
def F_UM(matriz, coluna):
matriz[[coluna]] = matriz[[coluna]]*(1/(matriz[[coluna],[coluna]]))
F_UM(matriz, coluna)
E depois chamando a função "F_ZERO", para transformar o resto da coluna em zero:
def F_ZERO(matriz, coluna, tamanho):
i=0
while(i<tamanho):
if (i==coluna):
i=i+1
else:
matriz[[i]] = matriz[[i]] + matriz[[coluna]]*(matriz[[i],[coluna]]*-1)
i=i+1
F_ZERO(matriz, coluna, tamanho)
E repita esse processo até terminar.
Segunda forma
E a segunda forma seria utilizando as duas funções juntas, em uma só:
def escalonamento(matriz, tamanho):
coluna=0
while(coluna<tamanho):
matriz[[coluna]] = matriz[[coluna]]*(1/(matriz[[coluna],[coluna]]))
i=0
while(i<tamanho):
if (i==coluna):
i=i+1
else:
matriz[[i]] = matriz[[i]] + matriz[[coluna]]*(matriz[[i],[coluna]]*-1)
i=i+1
print(f"Coluna {coluna} alterada")
print(f"{matriz}")
coluna=coluna+1
escalonamento(matriz, tamanho)
⚙️ Exemplos para teste
1 Exemplo:
Projete um método para aproximar sen x por um polinômio cúbico no intervalo 0 ≤ x ≤ π/2.
2 Exemplo:
A força de sustentação da asa de um projeto de aeronave é medida em várias velocidades, como segue:
Velocidade (30m/s) 1 2 4 8 16 32 Força de sustentação 50 kgf 0 3,12 15,86 33,7 81,5 123,0
Encontre um polinômio interpolador de grau 5 que modela os dados e use seu polinômio para estimar a força de sustentação a 600 m/s.
Escalonamento de Matrizes MxN
O escalonamento de matrizes é um procedimento algébrico que podemos utilizar para resolver sistemas lineares onde o número de equações não é, necessariamente, igual ao número de incógnitas. Resolver um sistema linear significa encontrar os valores das incógnitas que satisfazem todas as equações simultaneamente.
Como utilizar
📋 Pré-requisitos
Para utilizar a função de escalonamento, é necessário que seja importado as bibliotecas numpy e numpy.linalg
import numpy as np
🔧 Aplicação
def escalonamento(matriz, m, n):
coluna=0
#Auxiliar para achar o pivo
pivo=0
while(coluna<n and coluna<m):
if (matriz[[pivo],[coluna]]!=0):
matriz[[pivo]] = matriz[[pivo]]*(1/(matriz[[pivo],[coluna]]))
i=0
while(i<m):
if (i==pivo):
i=i+1
else:
matriz[[i]] = matriz[[i]] + matriz[[pivo]]*(matriz[[i],[coluna]]*-1)
i=i+1
print(f"Coluna {coluna} alterada")
print(f"{matriz}")
pivo=pivo+1
coluna=coluna+1
else:
print(f"Coluna {coluna} pulada")
coluna=coluna+1
escalonamento(matriz, m, n)
⚙️ Exemplos para teste
3 Exemplo:
Considere o sistema linear homogêneo:
(x1)+3(x2)-2(x3)+2(x5)=0
(x1)+6(x2)-5(x3)-2(x4)+4(x5)-3(x6)=0
5(x3)+10(x4)+15(x6)=0
2(x1)+6(x2)+8(x4)+4(x5)+18(x6)=0
📦 Desenvolvimento
Essa função é útil na utilização de conteúdos da matéria de Algébra Linear
🛠️ Construído com
- Colaboratory - Ferramenta utilizada
✒️ Autores
- João Bernardo Del Rio - Desenvolvedor - JheyBi
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for escalonamento-0.0.1-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6658b1a6a3a2e0ca0480f91fa1246820893a6e3f8293018cb0f26f733f45886d |
|
MD5 | 3f23e68a021ddae9222137e42f2ee727 |
|
BLAKE2b-256 | ead049b0d97aba77b7bc2ba03f65b6015ef2ac0b421dad9f6d8ad920aa53c4a0 |