Skip to content

Commit

Permalink
Add files via upload
Browse files Browse the repository at this point in the history
  • Loading branch information
joaomota59 authored Dec 13, 2020
1 parent c1e4e49 commit 422c30f
Show file tree
Hide file tree
Showing 9 changed files with 719 additions and 0 deletions.
55 changes: 55 additions & 0 deletions Diferenças Divididas.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import sys
print("->>[̲̅J̲̅.̲̅L̲̅υ̲̅c̲̅α̲̅s̲̅™̲̅]<<-\n")
pontos=int(input("Numero de pontos: "))
determinador=float(input("Digite o x da P"+str(pontos-1)+"(x): "))
casas=int(input("Numero de casas decimais: "))
if pontos<=0:
print("Numero inválido!")
sys.exit(1)
vet=[]#contém todos os pontos
vet_final=[] # contem os deltas (as diferenças)
k=[] # guarda todos os xi iniciais
k1=[]# guarda todos os yi iniciais
for i in range(pontos):
vet1=[]
vet1.append(float(input("x"+str(i)+":" )))
vet1.append(float(input("y"+str(i)+":" )))
vet.append(vet1)
k.append(vet1[0])#contem os valores de x
k1.append(vet1[1]) #contem os valores de y
vet_final.append(k1)
cont=0
while cont!=pontos-1: #ultima etapa de diferenças // menos dois pq cont começa do zero
vet1=[]
if cont==0: #primeira diferença dividida da tabela
for i in range(pontos-1):# tanto de diferenças do inicio
vet1.append((vet[i+1][1]-vet[i][1])/(k[i+1]-k[i]))
vet_final.append(vet1)
else:
for i in range(len(vet_final[cont])-1):
vet1.append((vet_final[cont][i+1]-vet_final[cont][i])/(k[cont+i+1]-k[i])) #cont+1 no caso em baixo seria a diferença
vet_final.append(vet1)
cont+=1
matrix=[]
for i in range(len(vet_final)):
aux=[]
for j in range(len(vet_final[i])):
aux.append(vet_final[j][i])
matrix.append(aux)
# fazer esse append no final como um extend
cont=0
print("\tTabela das diferenças divididas\n")
for i in matrix:
print(round(k[cont],casas),end=" ")
for j in range(len(i)):
print(round(i[j],casas),end=" ")
cont+=1
print()
k=""
for i in range(pontos):
if i==0:
print("P(x) = yo",end=" ")
else:
k+=("(x-x%d)"%(i-1))
print("+",k+str(("Δ%dyo"%(i-1))),end=" ")
print()
90 changes: 90 additions & 0 deletions Gauss e Jordan.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,90 @@
import sys
print("->>[̲̅J̲̅.̲̅L̲̅υ̲̅c̲̅α̲̅s̲̅™̲̅]<<-\n")
print("----Bem Vindo---\n")
a=int(input("Resolver o sistema linear Digite 1-Gauss ou 2-Jordan: "))
matriz=[]
termos_ind=[]
n=int(input("Digite a ordem do sistema: "))
resultado=[0]*n
for i in range(n):
vet=[]
for j in range(n):
vet.append(float(input("digite o coeficiente da icógnita "+str(i+1)+str(j+1)+": ")))
matriz.append(vet)
for i in range(n):
termos_ind.append(float(input("digite o "+str(i+1)+"º valor do vetor dos termos independentes: ")))
for i in range(n):
matriz[i].append(termos_ind[i])
if a==1:
for i in range(n-1):#n-1 porque ta comparando de duas em duas listas/ zerando a linha abaixo da diag principal
pivo=matriz[i][i]
if pivo==0:
print("Pivo não pode ser zero!")
sys.exit(0)
else:
for j in range(i+1,n):
coeficiente=matriz[j][i]/pivo
for k in range(n+1):
matriz[j][k]=matriz[j][k]-coeficiente*matriz[i][k]
for i in matriz:
for j in i:
print(j,end=" | ")#matriz com duas casas decimais arredondadas
print()
print("\n\n")



termos_ind2=[]
for i in range(n):
termos_ind2.append(matriz[i][n])
del(matriz[i][n])
resultado[n-1]=termos_ind2[n-1]/matriz[n-1][n-1]
for i in range(n-1,-1,-1):
soma=0
for j in range(1+i,n):
soma+=matriz[i][j]*resultado[j]
if matriz[i][i]==0:
print("Sistema incompatível")
sys.exit(0)
else:
resultado[i]=(termos_ind2[i]-soma)/matriz[i][i]
print("\n")
print("Vetor solução:")
for i in resultado:
print("|"+str("%f"%i)+"|")
elif a==2:
for i in range(n-1):#zerando a linha abaixo da dig principal
pivo=matriz[i][i]
if pivo==0:
print("Pivo não pode ser zero!")
sys.exit(0)
else:
for j in range(i+1,n):
coeficiente=matriz[j][i]/pivo
for k in range(n+1):
matriz[j][k]=matriz[j][k]-coeficiente*matriz[i][k]
for i in matriz:
for j in i:
print("%f"%j,end=" | ")
print("\n")
print("\n")

for i in range(n-1,0,-1): #zerando a linha acima da diag principal
pivo=matriz[i][i]
if pivo==0:
print("Pivo não pode ser zero!")
sys.exit(0)
else:
for j in range(i-1,-1,-1):
coeficiente=matriz[j][i]/pivo
for k in range(n+1):
matriz[j][k]=matriz[j][k]-coeficiente*matriz[i][k]
for t in matriz:
for u in t:
print("%f"%u,end=" | ")
print("\n")
print("\n\n")
print("\n")
print("Vetor solução:")
for i in range(n):
print("|"+str("%f"%(matriz[i][n]/matriz[i][i]))+"|")
86 changes: 86 additions & 0 deletions Gauss.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
import sys
print("->>[̲̅J̲̅.̲̅L̲̅υ̲̅c̲̅α̲̅s̲̅™̲̅]<<-\n")
matriz=[]
termos_ind=[]
n=int(input("Digite a ordem do sistema: "))
resultado=[0]*n
for i in range(n):
vet=[]
for j in range(n):
vet.append(float(input("digite o coeficiente da icógnita "+str(i+1)+str(j+1)+": ")))
matriz.append(vet)

for i in range(n):
termos_ind.append(float(input("digite o "+str(i+1)+"º valor do vetor dos termos independentes: ")))
for i in range(n):
matriz[i].append(termos_ind[i])
res=int(input("Escolha um tipo de substituição: \n1-progressiva(Triangular inferior) 2-retroativa(Triangular superior): "))

if res!=1 and res!=2:
while(res!=1 and res!=2):
res=int(input("Escolha um tipo de substituição: \n1-progressiva(Triangular inferior) 2-retroativa(Triangular superior): "))

if res==2:
for i in range(n-1):#n-1 porque ta comparando de duas em duas listas/ zerando a linha abaixo da diag principal
ciclo=n
pivo=matriz[i][i]
while(pivo==0):
matriz.append(matriz[i])
del(matriz[i])#mudança de linha joga a linha do pivo para ultima linha
pivo=matriz[i][i]
ciclo=ciclo-1
if pivo!=0: break
if ciclo==0: #coluna toda zerada
for xa in matriz:
del(xa[i]) #deleta coluna zerada
print("Sistema incompatível")
sys.exit(0)
break
for j in range(i+1,n):
coeficiente=matriz[j][i]/pivo
for k in range(n+1):
matriz[j][k]=matriz[j][k]-coeficiente*matriz[i][k]
for i in matriz:
for j in i:
print(j,end=" | ")#matriz com duas casas decimais arredondadas
print()
print("\n\n")
termos_ind2=[]
for i in range(n):
termos_ind2.append(matriz[i][n])
del(matriz[i][n])
resultado[n-1]=termos_ind2[n-1]/matriz[n-1][n-1]
for i in range(n-1,-1,-1):
soma=0
for j in range(1+i,n):
soma+=matriz[i][j]*resultado[j]
if matriz[i][i]==0:
print("Sistema incompatível")
sys.exit(0)
else:
resultado[i]=(termos_ind2[i]-soma)/matriz[i][i]
print("\n")
print("Vetor solução:")
for i in resultado:
print("|"+str("%f"%i)+"|")

else:
for i in range(n-1,0,-1): #zerando a linha acima da diag principal
pivo=matriz[i][i]
if pivo==0:
print("Pivo não pode ser zero!")
sys.exit(0)
else:
for j in range(i-1,-1,-1):
coeficiente=matriz[j][i]/pivo
for k in range(n+1):
matriz[j][k]=matriz[j][k]-coeficiente*matriz[i][k]
for t in matriz:
for u in t:
print("%f"%u,end=" | ")
print("\n")
print("\n\n")
print("\n")
print("Vetor solução:")
for i in range(n):
print("|"+str("%f"%(matriz[i][n]/matriz[i][i]))+"|")
77 changes: 77 additions & 0 deletions Interpolação Polinomial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
import sys
print("->>[̲̅J̲̅.̲̅L̲̅υ̲̅c̲̅α̲̅s̲̅™̲̅]<<-\n")
determinador=float(input("Digite o x da f(x): "))
pontos=int(input("Numero de pontos: "))
if pontos<=0:
print("Numero inválido!")
sys.exit(1)
vet=[]
for i in range(pontos):
vet1=[]
x=float(input("x"+str(i)+":" ))
y=float(input("y"+str(i)+":" ))
vet1.append(x)
vet1.append(y)
vet.append(vet1)
matriz=[]
for i in range(pontos): #fazendo a matriz
vet1=[]
for j in range(pontos+1):
if (j!=pontos):
vet1.append((vet[i][0])**(pontos-1-j))
else:
vet1.append(vet[i][1])
matriz.append(vet1)

#aplicar gauss
n=pontos
resultado=[0]*n
for i in range(n-1):#n-1 porque ta comparando de duas em duas listas/ zerando a linha abaixo da diag principal
pivo=matriz[i][i]
if pivo==0:
matriz.append(matriz[i])
del(matriz[i])#mudança de linha joga a linha do pivo para ultima linha
pivo=matriz[i][i]
for j in range(i+1,n):
coeficiente=matriz[j][i]/pivo
for k in range(n+1):
matriz[j][k]=matriz[j][k]-coeficiente*matriz[i][k]
for i in matriz:
for j in i:
print(j,end=" | ")
print()
print("\n\n")
termos_ind2=[]
for i in range(n):
termos_ind2.append(matriz[i][n])
del(matriz[i][n])
resultado[n-1]=termos_ind2[n-1]/matriz[n-1][n-1]
for i in range(n-1,-1,-1):
soma=0
for j in range(1+i,n):
soma+=matriz[i][j]*resultado[j]
if matriz[i][i]==0:
print("Sistema incompatível")
sys.exit(0)
else:
resultado[i]=(termos_ind2[i]-soma)/matriz[i][i]
print("\n")
print("Vetor solução:")
k=1;
somador=0
for i in resultado:
somador+=((determinador)**(pontos-k))*i
k+=1
print("|"+str("%f"%i)+"|")
w="" #escrever a f(x) na tela depois continuar*
k=1
for i in range(pontos):
if resultado[i]<0:
w=w[:-1]
w+=("%f*(%f)**(%d)+"%(resultado[i],determinador,pontos-k))
else:
w+=("%f*(%f)**(%d)+"%(resultado[i],determinador,pontos-k))
k+=1
w=w[:-1]#exclui o ultimo sinal de "+"
print("\nf(%f) = %s"%(determinador,w))
print("\nf(%f) = %f"%(determinador,somador))
83 changes: 83 additions & 0 deletions Interpolação de Lagrange.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
import sys
print("->>[̲̅J̲̅.̲̅L̲̅υ̲̅c̲̅α̲̅s̲̅™̲̅]<<-\n")
pontos=int(input("Numero de pontos: "))
determinador=float(input("Digite o x da P"+str(pontos-1)+"(x): "))
if pontos<=0:
print("Numero inválido!")
sys.exit(1)
vet=[]#contém todos os pontos
vet_final=[]
for i in range(pontos):
vet1=[]
vet1.append(float(input("x"+str(i)+":" )))
vet1.append(float(input("y"+str(i)+":" )))
vet.append(vet1)
vet1=[]
#a intenção é criar uma matriz com 2 colunas x 'pontos' linhas depois divide uma linha pela outra somando..

#print só das variáveis
for i in range(pontos): #numerador
k=("y%d"%i)
for j in range(pontos):
if j!=i:
k+=("*(x-x%d)"%(j))
vet1.append(k)
vet_final.append(vet1)
vet1=[]
for i in range(pontos): #denominador
k=""
for j in range(pontos):
if j!=i:
k+=("(x%d-x%d)*"%(i,j))
k=k[:-1] #tira o ultimo sinal de multiplicação
vet1.append(k)
vet_final.append(vet1)
print()

for j in range(pontos): #Printar
print(vet_final[0][j])
print("-"*len(max(vet_final[0][j],vet_final[1][j])),"+")
print(vet_final[1][j])
print()
print("\n\n")
vet1=[]
vet_final=[]


#print dos valores das variáveis
for i in range(pontos): #numerador
k=""
k=("%f"%vet[i][1])
for j in range(pontos):
if j!=i:
k+=("*(%f-%f)"%(determinador,vet[j][0]))
vet1.append(k)
vet_final.append(vet1)
vet1=[]

for i in range(pontos): #denominador
k=""
for j in range(pontos):
if j!=i:
k+=("(%f-%f)*"%(vet[i][0],vet[j][0]))
k=k[:-1] #tira o ultimo sinal de multiplicação
vet1.append(k)
vet_final.append(vet1)
somatorio=0
k=""
for j in range(pontos):
print(vet_final[0][j])
print("-"*len(max(vet_final[0][j],vet_final[1][j])),"+")
print(vet_final[1][j])
somatorio+=eval(vet_final[0][j])/eval(vet_final[1][j])
if eval(vet_final[0][j])/eval(vet_final[1][j])>=0:
k+=str(eval(vet_final[0][j])/eval(vet_final[1][j]))+str("+")
else:
k=k[:-1]
k+=str(eval(vet_final[0][j])/eval(vet_final[1][j]))+str("+")
print()
k=k[:-1]#tirar o ultimo sinal de soma
print("\n\n")
print("P%d(%f)= %s"%((pontos-1),determinador,k))
print("P%d(%f) = %f"%((pontos-1),determinador,somatorio))

Loading

0 comments on commit 422c30f

Please sign in to comment.