code_junkie

Python - one variable equals another variable when it shouldn't

Nov 12th, 2011
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.93 KB | None | 0 0
  1. i=1
  2. while (i>0):
  3. x_past = x_present
  4.  
  5. j=0
  6. while(j<3):
  7. value=0
  8. k=0
  9. while(k<3):
  10. if(k!=j):
  11. if(i==1):
  12. if(k>j):
  13. value=value+0
  14. else:
  15. value=value+x_present[k]*eqn[j][k]
  16. else:
  17. value=value+x_present[k]*eqn[j][k]
  18. else:
  19. value=value+eqn[j][k]
  20. k=k+1
  21. x_present[j:j+1]=[value]
  22. j=j+1
  23. print "X_PAST"
  24. print x_past
  25. print "X_PRESENT"
  26. print x_present
  27. if(error(x_past, x_present)<10**-2):
  28. break;
  29. i=i+1
  30.  
  31. x_present[j:j+1]=[value]
  32.  
  33. x_past=x_present
  34.  
  35. >>> x_present = [4,5,6]
  36. >>>
  37. >>> x_past = x_present
  38. >>>
  39. >>> x_past
  40. [4, 5, 6]
  41. >>>
  42. >>> x_present.append(7)
  43. >>>
  44. >>> x_past
  45. [4, 5, 6, 7]
  46. >>>
  47.  
  48. >>> x_past = x_present[:]
  49. >>> x_past
  50. [4, 5, 6, 7]
  51. >>>
  52. >>> x_present.append(8)
  53. >>>
  54. >>> x_past
  55. [4, 5, 6, 7]
  56.  
  57. >>> import copy
  58. >>> a = range(10)
  59. >>> a
  60. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  61. >>> b = a
  62. >>> a += 10, 11
  63. >>> a
  64. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
  65. >>> b
  66. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
  67. >>> c = copy.copy(a) # shallow copy
  68. >>> c
  69. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
  70. >>> del a[3:]
  71. >>> a
  72. [0, 1, 2]
  73. >>> b
  74. [0, 1, 2]
  75. >>> c
  76. [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
  77.  
  78. import copy
  79. # assert(len(x_present) >= len(eqn))
  80.  
  81. first = True
  82. while True:
  83. x_past = copy.copy(x_present) # copy
  84.  
  85. for j, eqj in enumerate(eqn):
  86. x_present[j] = sum(x_present[k] * eqj[k]
  87. for k in range(j if first else len(eqj))
  88. if k != j)
  89. x_present[j] += eqj[j]
  90.  
  91. print "X_PASTn%snX_PRESENTn%s" % (x_past, x_present)
  92. if allequal(x_past, x_present, tolerance=10**-2):
  93. break
  94. first = False
  95.  
  96. def allequal(x, y, tolerance):
  97. return (len(x) == len(y) and
  98. all(-tolerance < (xx - yy) < tolerance
  99. for xx, yy in zip(x, y)))
Add Comment
Please, Sign In to add comment