Ir ao conteúdo

Ajuda em trabalho de calculo numérico, envolvendo spline cúbica.


coizuao

Posts recomendados

Postado

Olá galera,^_^ este é meu primeiro post, estou fazendo um trabalho de cálculo numérico para a faculdade, no qual eu crio um arquivo no bloco de notas com alguns dados experimentais (tabela a baixo), e leio este arquivo atribuindo os dados para vetores X e Y, ele pede para calcular um Polinômio Interpolador Spline Cúbico com condicões de contorno livres; É bem chatinho mas não parece ser difícil.

Este é o meu programa até agora, vocês poderiam me ajudar? :wacko:


import numpy as np
from pylab import *
# -*- coding: utf-8 -*-



nome_arq = "trabalhocalcnum.txt"


# Agora que o arquivo foi criado, abre ele para ler
# 'r' significa 'read', vai ler o arquivo
arq_entrada = open( nome_arq, 'r' )



# A função 'readlines' lê tudo que tem dentro do arquivo e coloca na variável
# conteúdo.
# A variável conteúdo é uma lista, cada elemento da lista conté m uma linha
# do arquivo, inteira, como uma string.
conteudo = arq_entrada.readlines()



X = []#n
Y = []#tempo
Z = []#deslocamento

print "Lendo o arquivo ..."
for linha in conteudo:
# Para pegar os números é preciso dividir a variável linha em pedaç os
# Cada pedaç o, vai ser um elemento da lista valores
valores = linha.split()
X.append( float( valores[0] ) )
Y.append( float( valores[1] ) )
Z.append( float( valores[2] ) )

print "Vetor X lido do arquivo:"
print X
print "Vetor Y lido do arquivo:"
print Y
print "Vetor Z lido no arquivo:"
print Z
lista = []
n = max(X)
h = np.array(lista)
h = [0]*n
for i in range(n):
h[i] = x[i+1] - x[i]
a = [0]*(n+1)
for i in range(0,n+1):
a[i]=y[i]

http://lh4.googleusercontent.com/-rG3N6DYVbrY/UJnMBKPoYyI/AAAAAAAAAC0/tinL7ZI-VKE/s372/2012-11-06

  • 2 semanas depois...
Postado

Esta linha cria o vetor h, mas eu consegui achar o erro, o problema do trabalho agora é manipular as matrizes. Este é o código:

import numpy as np
from pylab import *
# -*- coding: utf-8 -*-



nome_arq = "trabalhocalcnum.txt"


# Agora que o arquivo foi criado, abre ele para ler
# 'r' significa 'read', vai ler o arquivo
arq_entrada = open( nome_arq, 'r' )



# A função 'readlines' lê tudo que tem dentro do arquivo e coloca na variável
# conteúdo.
# A variável conteúdo é uma lista, cada elemento da lista conté m uma linha
# do arquivo, inteira, como uma string.
conteudo = arq_entrada.readlines()



X = []#tempo
Y = []#deslocamento

print "Lendo o arquivo ..."
for linha in conteudo:
# Para pegar os números é preciso dividir a variável linha em pedaç os
# Cada pedaç o, vai ser um elemento da lista valores
valores = linha.split()
X.append( float( valores[0] ) )
Y.append( float( valores[1] ) )

print "Vetor X lido do arquivo:"
print X

print "Vetor Y lido do arquivo:"
print Y

n = 17
h = [0]*n
for i in range(0,n-1):
h[i] = X[i+1] - X[i]
a = [0]*(n+1)
print "Vetor h lido do arquivo:"
print h
for i in range(0,n-1):
a[i]=Y[i]

A = [0]*(n+1)

for i in range (n+1):
A[i] = [0]*(n+1)

A[0][0] = 1
A[n][n] = 1

for i in range(1,n):
A[i][i-1] = h[i-1]
A[i][i] = 2*(h[i-1]+h[i])
A[i][i+1] = h[i]
print A


B = [0]*(n+1)
for i in range (1,n):
B[i] = 3*(a[i+2]-a[i+1])/h[i+1] - 3*(a[i+1]-a[i])/h[i]

quando rodo o programa ele diz isto:

Traceback (most recent call last):

File "C:\Python27\le_dados.py", line 68, in <module>

B = 3*(a[i+2]-a[i+1])/h[i+1] - 3*(a[i+1]-a)/h

ZeroDivisionError: integer division or modulo by zero

gostaria de entender o que está acontecendo.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...