Advertisement
pedrytus

Galianoxd

Apr 24th, 2017
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.00 KB | None | 0 0
  1. import numpy as np
  2.  
  3. # EXERCISE 1. GROUP LI 1-A EXAM. Below this line.
  4.  
  5. def de2bi_a(d):
  6.     x = np.fix(d)
  7.     b = []
  8.    
  9.     while x/2 > 0:
  10.         b.append(x%2)
  11.         x = x//2
  12.        
  13.     b = np.array(b, dtype = np.int8)
  14.     return np.flipud(b);
  15.    
  16. def de2bi_b(d):
  17.     x = abs(d) - abs(int(d))
  18.     b = []
  19.     counter = len(str(x)) - 2
  20.    
  21.     while counter > 0:
  22.         x = x*2
  23.         aux = round(int(x))
  24.         b.append(aux)
  25.         if x > 1:
  26.             x = x - int(x)
  27.         counter = counter - 1
  28.        
  29.     b = np.array(b, dtype=np.int8)
  30.     return b
  31.    
  32. def de2bi_total(d):
  33.     dec = de2bi_a(d)
  34.     frac = de2bi_b(d)
  35.     exp = de2bi_a((len(dec) - 1) + 127)
  36.     result = []
  37.    
  38.     if (d < 0):
  39.         result.append(1)
  40.     else:
  41.         result.append(0)
  42.        
  43.     for i in exp:
  44.         result.append(i)
  45.        
  46.     counter = 0
  47.    
  48.     for i in dec:
  49.         if counter > 0:
  50.             result.append(i)
  51.         counter = counter + 1
  52.        
  53.     for i in frac:
  54.         result.append(i)
  55.         counter = counter + 1
  56.        
  57.     while counter < 24:
  58.         result.append(0)
  59.         counter = counter + 1
  60.        
  61.     result = np.array(result, dtype=np.int8)
  62.     return result
  63.    
  64. r = de2bi_total(2345.640625)
  65. np.savez('exercise_1', r)
  66.  
  67. # EXERCISE 2. GROUP LI 1-A EXAM. Below this line.
  68.  
  69. def lagrange_fundamental(i, x, nodes):
  70.     result = float(1)
  71.    
  72.     for j in range(len(nodes)):
  73.         if (j != i):
  74.             result = result * ((x-nodes[j])/(nodes[i]-nodes[j]))
  75.         else:
  76.             result = result
  77.    
  78.     return result
  79.    
  80. def lagrange_polynomial(x, nodes, values):
  81.     result = float(0)
  82.    
  83.     for j in range(len(nodes)):
  84.         result += lagrange_fundamental(j, x, nodes) * values[j]
  85.        
  86.     return result
  87.    
  88. nodes = np.array([2,4,5,7,8,10], dtype = float)
  89. values = np.array([2,6,5,5,6,2], dtype = float)
  90. mesh = np.linspace(2,10,100)
  91.  
  92. v = lagrange_polynomial(mesh, nodes, values)
  93. np.savez('exercise_2', v)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement