Guest User

Untitled

a guest
Sep 25th, 2018
69
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.76 KB | None | 0 0
  1. # multiple eqn Newton Raphson method.
  2. # developed bu Dagc.
  3.  
  4. from numpy import*
  5. import math
  6.  
  7. print "Welcome to the NR-Multiple Root Calculator."
  8. print "It works with only 3 simultaneous nonlinear eqn systems."
  9. print "Please type your eqn's into the source code."
  10. print "And call the 'multipleNR' function to work.."
  11.  
  12. def determinant(a):
  13. # with cofactor method, 3x3
  14. part1 = a[0,0]*(-1)**(0+0)*(a[1,1]*a[2,2]-a[1,2]*a[2,1])
  15. part2 = a[0,1]*(-1)**(0+1)*(a[1,0]*a[2,2]-a[1,2]*a[2,0])
  16. part3 = a[0,2]*(-1)**(0+2)*(a[1,0]*a[2,1]-a[1,1]*a[2,0])
  17. result = part1 + part2 + part3
  18. return result
  19.  
  20.  
  21. #Since there are three functions:
  22.  
  23. def functionEqn1(x1,x2,x3):
  24. result = 3*x1-cos(x2*x3)-0.5
  25. return result
  26.  
  27. def functionEqn2(x1,x2,x3):
  28. result = x1**2 - 81*(x2+0.1)**2 + sin(x3) + 1.06
  29. return result
  30.  
  31. def functionEqn3(x1,x2,x3):
  32. result = e**(-x1*x2)+20*x3+(10*pi-3)/3
  33. return result
  34.  
  35.  
  36. def multipleNR(x1, x2, x3, Es):
  37.  
  38. Ea1 = 1.0 #assume
  39. Ea2 = 1.0
  40. Ea3 = 1.0
  41.  
  42. counter = 0
  43. while (Ea1 > Es or Ea2 > Es or Ea3 > Es):
  44. # required derivatives
  45. delta = 10**(-5)
  46. d1x = (functionEqn1(x1+delta,x2,x3)-functionEqn1(x1,x2,x3))/delta
  47. d1y = (functionEqn1(x1,x2+delta,x3)-functionEqn1(x1,x2,x3))/delta
  48. d1z = (functionEqn1(x1,x2,x3+delta)-functionEqn1(x1,x2,x3))/delta
  49.  
  50. d2x = (functionEqn2(x1+delta,x2,x3)-functionEqn2(x1,x2,x3))/delta
  51. d2y = (functionEqn2(x1,x2+delta,x3)-functionEqn2(x1,x2,x3))/delta
  52. d2z = (functionEqn2(x1,x2,x3+delta)-functionEqn2(x1,x2,x3))/delta
  53.  
  54. d3x = (functionEqn3(x1+delta,x2,x3)-functionEqn3(x1,x2,x3))/delta
  55. d3y = (functionEqn3(x1,x2+delta,x3)-functionEqn3(x1,x2,x3))/delta
  56. d3z = (functionEqn3(x1,x2,x3+delta)-functionEqn3(x1,x2,x3))/delta
  57.  
  58. # values of functions
  59. f1 = functionEqn1(x1,x2,x3)
  60. f2 = functionEqn2(x1,x2,x3)
  61. f3 = functionEqn3(x1,x2,x3)
  62.  
  63.  
  64. A = matrix([[d1x,d1y,d1z],[d2x,d2y,d2z],[d3x,d3y,d3z]])
  65. b = matrix([[-f1 + x1*d1x + x2*d1y + x3*d1z],[-f2 + x1*d2x + x2*d2y + x3*d2z],[-f3 + x1*d3x + x2*d3y + x3*d3z]])
  66. #print b
  67.  
  68. denominator = determinant(A)
  69. #print denominator
  70.  
  71. acolumn1 = matrix([[A[0,0]],
  72. [A[1,0]],
  73. [A[2,0]]])
  74. acolumn2 = matrix([[A[0,1]],
  75. [A[1,1]],
  76. [A[2,1]]])
  77. acolumn3 = matrix([[A[0,2]],
  78. [A[1,2]],
  79. [A[2,2]]])
  80. ## print acolumn1
  81. ## print acolumn2
  82. ## print acolumn3
  83.  
  84. x1matrice = matrix([[b[0,0],acolumn2[0,0],acolumn3[0,0]],
  85. [b[1,0],acolumn2[1,0],acolumn3[1,0]],
  86. [b[2,0],acolumn2[2,0],acolumn3[2,0]]])
  87. x2matrice = matrix([[acolumn1[0,0],b[0,0],acolumn3[0,0]],
  88. [acolumn1[1,0],b[1,0],acolumn3[1,0]],
  89. [acolumn1[2,0],b[2,0],acolumn3[2,0]]])
  90. x3matrice = matrix([[acolumn1[0,0],acolumn2[0,0],b[0,0]],
  91. [acolumn1[1,0],acolumn2[1,0],b[1,0]],
  92. [acolumn1[2,0],acolumn2[2,0],b[2,0]]])
  93.  
  94. xn1 = determinant(x1matrice)/denominator
  95. xn2 = determinant(x2matrice)/denominator
  96. xn3 = determinant(x3matrice)/denominator
  97.  
  98.  
  99. Ea1 = float(abs((xn1-x1)/xn1))
  100. Ea2 = float(abs((xn2-x2)/x2))
  101. Ea3 = float(abs((xn3-x3)/xn3))
  102. ## print Ea1
  103. ## print Ea2
  104. ## print Ea3
  105.  
  106. x1 = xn1
  107. x2 = xn2
  108. x3 = xn3
  109.  
  110.  
  111. counter = counter + 1
  112.  
  113.  
  114.  
  115. print "The roots are:"
  116. print "x1: ",x1
  117. print "x2: ", x2
  118. print "x3: ", x3
  119. print "respectively."
  120. print "Computation is completed in ",counter," iterations."
Add Comment
Please, Sign In to add comment