Найти - Пользователи
Полная версия: какой-то глупый косяк
Начало » Python для экспертов » какой-то глупый косяк
1 2 3
gen
вообщем вот исходник:

# -*- coding: cp1251 -*-
temp,gamma,ts,t1,t2,deltat = 83.0,1.0,22.0,0,15,1.0
final = int((t2-t1)/deltat) + 1
for i in xrange(final):
temp -= gamma*(temp-ts)*deltat
print temp

выдает какуюто-нелепую чушь!(это должен быть элементарный ДифУр)
я уже голову сломал, почему так!?
вот:

>>> 22.0
22.0
22.0
22.0
22.0
22.0
22.0
22.0
22.0
22.0
22.0
22.0
22.0
22.0
22.0

конфа(на всякий случай) Win32(Xp) Python 2.5 wxPython2.8-win32-ansi-2.8.1.1-py25 IDE: PythonWin 209.1

Пожалуста подскажите где я не прав(если это так), а то я уже начинаю сомневаться в познании циклов и вообще в программировании
Mkdir
А вы попробуйте на бумаге расписать кажду итерацию ;)
Все абсолютно верно выдаёт python.

В первой итерации temp = 22.0, а затем выражение gamma*(temp-ts)*deltat всегда равно 0.0.
Получается, что в остальных итерациях цикла, из temp вычитается 0.
Mkdir
Где нелепая чушь? Давайте посчитаем.

Первая итерация цикла
а) gamma*(temp-ts)*deltat = 1.0*(83.0 - 22.0)*1.0 = 61.0
б) вычитаем значение 61.0 из temp (temp в этот момент равен 83.0). 83.0 - 61.0 = 22.0

Вторая итерация цикла
a) gamma*(temp-ts)*deltat = 1.0*(22.0 - 22.0)*1.0 = 1.0*0*1.0 = 0.0
б) вычитаем значение 0.0 из temp (temp в этот момент равен 22.0). 22.0 - 0.0 = 22.0

Третья итерация цикла
a) gamma*(temp-ts)*deltat = 1.0*(22.0 - 22.0)*1.0 = 1.0*0*1.0 = 0.0
б) вычитаем значение 0.0 из temp (temp в этот момент равен 22.0). 22.0 - 0.0 = 22.0

продолжать?
gen
Извиняюсь ступил неподетски, спасибо большое!!! :)
- надо больше спать
P.s. Хороший дружелюбный форум буду сюда чаще заходить, жаль только пока не такой большой как для php, но думаю что все еще впереди! :)
Mkdir
PHP-программисты - это обозлённые от багов и нехватки денеги люди с плохими нервами )))
Шучу, конечно же.
slivlen
gen
P.s. Хороший дружелюбный форум буду сюда чаще заходить, жаль только пока не такой большой как для php, но думаю что все еще впереди! smile
Ты туда нэ ходи, ты сюда ходи. PHP башка пападет… ;)
jan2ary
Я бы для верности деление из будущего импортировал.
gen
Я просто брежу….

вот очередная АБСОЛЮТНО непонятная мне проблема:
короче вот входная матрица(у меня хранится как список списка значений-короче двумерный массив):

10 10 10 10 10 10 10 10 10 10
10 0 0 0 0 0 0 0 0 10
10 0 0 0 0 0 0 0 0 10
10 0 0 0 0 0 0 0 0 10
10 0 0 0 4 0 0 0 0 10
10 0 0 0 0 0 0 0 0 10
10 0 0 0 0 0 0 0 0 10
10 0 0 0 0 0 0 0 0 10
10 0 0 0 0 0 0 0 0 10
10 10 10 10 10 10 10 10 10 10

вообщем в моей проге внешняя граница фиксирована те все крайние точки неизменны, а значение внутренних получается как
c=a
цикл в цикле:
a=0.25*(c+c+c+c)
вот исходник
import fileinput
matrix =
# parse matrix file
for line in fileinput.input('input.txt'):
matrix.append(list(float(a) for a in line.split('\n').split(' ')))
epsilon = 0.001
e = epsilon + 1
k = 0
while e>epsilon:
e = 0
print e
k += 1
matrix_p = matrix
for i in xrange(1,len(matrix_p)-1):
for j in xrange(1,len(matrix_p)-1):
matrix = 1.0/4.0*(matrix_p + matrix_p + matrix_p + matrix_p)
print matrix_p,matrix
if (matrix_p - matrix)/matrix_p > e :
e = (matrix_p - matrix)/matrix_p
print e
print matrix,k,e
raw_input('press any key')

вот файл input.txt из которого читается матрица
10 10 10 10 10 10 10 10 10 10
10 0 0 0 0 0 0 0 0 10
10 0 0 0 0 0 0 0 0 10
10 0 0 0 0 0 0 0 0 10
10 0 0 0 4 0 0 0 0 10
10 0 0 0 0 0 0 0 0 10
10 0 0 0 0 0 0 0 0 10
10 0 0 0 0 0 0 0 0 10
10 0 0 0 0 0 0 0 0 10
10 10 10 10 10 10 10 10 10 10


зы вообще это учебная прога, которую я решил делать на питоне, чтобы в нем немного разобраться, так что не пинайте больно ;)
Александр Кошелев
А в чем проблема то?
gen
а проблема в том что я работаю с двумя списками-один на предъидущей итерации, а другой на данной
matrix_p = matrix делаю независимою копию
далее вычисляю новое значение
matrix = 1.0/4.0*(matrix_p + matrix_p + matrix_p + matrix_p)
поидее(после этого присваивания) matrix не равно matrix_p
а строчка print matrix_p,matrix -выдает идентичные результаты - В ЭТОМ ПРОБЛЕМА
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB