rmslobato Postado Julho 1, 2009 Denunciar Share Postado Julho 1, 2009 Olá.Eu estudei programação em C na faculdade.Nesse semestre preciso fazer um programa para resolveralguns casos de simples equações diferenciais.Resolvi fazer em python, por sugestão de um amigo,já que precisaria fazer gráficos com as soluçõesnuméricas das equações e ele comentou que havia feito algo semelhantede maneira muito simples com o python.Aceitei a dica aproveitando para estudar outra linguagem de programação.O Código abaixo é basicamente o programa inteiro.Simplifiquei o código comentando algumas linhas para não precisar prostar na integra oprograma.O problema:Importando o programa e chamando a função 'teste1(0)' uma janela é abertacom o gráfico gerado pelos pontos das sequencias t e y sem nenhum problema.Como não descobri uma maneira de abrir exibir mais de um gráfico simultaneamente (abrindo-os em outras janelas), resolvi fazer um menu - um laço infinito (terminando comopcao sair) - e então de acordo com a opção, iria ser exibido o gráfico correspondente.No entanto, quando é escolhido uma opção e o gráfico é exibido, ocorre um erro.Se você clica na janela do gráfico, ela fica branca e é encerrada pelo sistema operacional, contudo, o laço roda normalmente no programa, pedindo nova opção.Isso me parece um erro de sobrecarga de memório. Mas eu não entendo, porquea funcao teste1(0) é chamada uma vez só.Então acredito que o erro esteja relacionado com o plot() e o laço.Porém, não sei como manter o menu, e tirar o erro quanto a exibição dos gráficos.Obs.:Estou usando o PyLab(IPython) para windows.#------------------------------------------------------ from pylab import plot, close #------------------------------------------------------ def euler(a, h, n): if n == 1: f = open("tabela.txt", "a") f.write("\n-- Metodo de Euler --\n") y = [] t = [] yk = 1.0 tk = 0.0 t_max = 2.0 yk1 = yk tk1 = tk while tk1 < t_max: y.append(yk1) t.append(tk1) if n == 1: f.write("%.3s %.6s\n" % (tk1, yk1)) yk1 = yk + h*a*yk yk = yk1 tk1 = tk1 + h if n == 0: plot(t, y, color='green') if n == 1: f.close() #------------------------------------------------------ def teste1(n): if n == 1: f = open("tabela.txt", "a") f.write("TESTE 1: y'= -3y, h = 0.1\n") f.close() #exata(-3, 0.1, n) euler(-3, 0.1, n) #eulermod(-3, 0.1, n) #rk4(-3, 0.1, n) #------------------------------------------------------ def menu(): texte_menu = """ 1 - teste 1 2 - ... . . . 6 - sair """ texto_grafico = """ bla bla """ while 1: print texto_menu print("Opcao:") op = raw_input() opcao = int(op) if opcao == 1: close(1) print("Opcao escolhida: 1\n") print texto_grafico teste1(0) elif opcao == 2: # codigos... elif opcao == 6: close(1) break else: print("Opcao invalida.\n") #------------------------------------------------------ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 rmslobato Postado Julho 4, 2009 Autor Denunciar Share Postado Julho 4, 2009 up! Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
rmslobato
Olá.
Eu estudei programação em C na faculdade.
Nesse semestre preciso fazer um programa para resolver
alguns casos de simples equações diferenciais.
Resolvi fazer em python, por sugestão de um amigo,
já que precisaria fazer gráficos com as soluções
numéricas das equações e ele comentou que havia feito algo semelhante
de maneira muito simples com o python.
Aceitei a dica aproveitando para estudar outra linguagem de programação.
O Código abaixo é basicamente o programa inteiro.
Simplifiquei o código comentando algumas linhas para não precisar prostar na integra o
programa.
O problema:
Importando o programa e chamando a função 'teste1(0)' uma janela é aberta
com o gráfico gerado pelos pontos das sequencias t e y sem nenhum problema.
Como não descobri uma maneira de abrir exibir mais de um gráfico simultaneamente
(abrindo-os em outras janelas), resolvi fazer um menu - um laço infinito (terminando com
opcao sair) - e então de acordo com a opção, iria ser exibido o gráfico correspondente.
No entanto, quando é escolhido uma opção e o gráfico é exibido, ocorre um erro.
Se você clica na janela do gráfico, ela fica branca e é encerrada pelo
sistema operacional, contudo, o laço roda normalmente no programa, pedindo nova opção.
Isso me parece um erro de sobrecarga de memório. Mas eu não entendo, porque
a funcao teste1(0) é chamada uma vez só.
Então acredito que o erro esteja relacionado com o plot() e o laço.
Porém, não sei como manter o menu, e tirar o erro quanto a exibição dos gráficos.
Obs.:
Estou usando o PyLab(IPython) para windows.
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.