-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
c1e4e49
commit 422c30f
Showing
9 changed files
with
719 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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]))+"|") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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]))+"|") |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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)) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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)) | ||
|
Oops, something went wrong.