def draw_graph_lagrange(): # przygotowanie wykresu gd = graph(title='Interpolacja Lagrange\'a') f1 = gcurve(graph=gd, color=color.cyan) dots = gdots(graph=gd, color=color.red) f2 = gcurve(graph=gd, color=color.green) # tablica do przechowywania wylosowanych punktów initial_points = [] # zmienna pomocnicza używana przy losowaniu punktów wielomianu index = 0 # wyliczanie wartości funkcji podstawowej w tym przypadku cos(2*x) * exp(-0.2 * x) field_end = 8.05 for x in arange(0, field_end, 0.1): y = cos(2 * x) * exp(-0.2 * x) f1.plot(x, y) #losowanie punktów do wyliczania interpolacji - odbywa kiedy x znajduje się w przedziale 1..field_end-1 if 1 < x <= field_end - 1 and index % 2 == 0 and bool(getrandbits(1)): initial_points.append({'x': x, 'y': y}) dots.plot(x, y) index = index + 1 # wyliczanie i rysowanie interpolacji for point in lagrange_interpolation(initial_points, field_end): f2.plot(point['x'], point['y'])
def count(): # algroytm działa także dla innych wielkości kwadratu r=a/2 r = 0.5 gd = graph(ymin=0, ymax=2 * r + 0.5, xmin=0, xmax=2 * r + 0.5) f1 = gcurve(graph=gd, color=color.cyan) f2 = gcurve(graph=gd, color=color.cyan) dots = gdots(graph=gd, color=color.red, radius=2) for x in arange(0, 2 * r + 0.001, 0.01): f1.plot(x, circle_point_lower(x, r)) f2.plot(x, circle_point_upper(x, r)) points_count = randrange(200, 300) ok_points = 0 while x <= points_count: x = x + 1 point = draw_point(2 * r) dots.plot(point[0], point[1]) if circle_point_upper(point[0], r) >= point[1] >= circle_point_lower( point[0], r): ok_points = ok_points + 1 field = ok_points / points_count pi = field / (r**2) f1.label = 'pi = ' + str(pi) f2.label = 'field = ' + str(field) gd.height = 450 gd.width = 450
def grafica_rutherford(y: np.ndarray): ind = np.where(y > 0) y = y[ind] funct = vp.gdots(color=vp.color.red, size=6, label='dots') for angle in range(0, len(y)): vp.rate(100) funct.plot(angle, y[angle])
def draw_function_average(start, end, tries=200): g = graph(title='Metoda próbkowania średniej') f1 = gcurve(graph=g, color=color.cyan) dots = gdots(graph=g, color=color.red) points = count_points(start, end) for point in points['points']: f1.plot(point) sampling = average_sampling(start, end, tries) for point in sampling['points']: dots.plot(point) f1.label = '2 * wartość całki= ' + str(2 * sampling['value'])
def newton_czybyszew(nodes_amount): gd = graph(title='Interpolacja Newtona\'a') f1 = gcurve(graph=gd, color=color.cyan) dots = gdots(graph=gd, color=color.red) f2 = gcurve(graph=gd, color=color.green) # wyliczanie wartości funkcji podstawowej w tym przypadku cos(2*x) * exp(-0.2 * x) field_end = 8.05 for x in arange(0, field_end, 0.1): y = origin_newton_function(x) f1.plot(x, y) # tablica do przechowywania wylosowanych punktów initial_points = [] for x in czybyszew_points(nodes_amount, 0, field_end): y = origin_newton_function(x) dots.plot(x, y) initial_points.append({'x': x, 'y': y}) # wyliczanie i rysowanie interpolacji for point in newton_interpolation(initial_points, field_end): f2.plot(point['x'], point['y'])
def draw_function_simple(start, end, tries=200): g = graph(title='Metoda prostego próbkowania') f1 = gcurve(graph=g, color=color.cyan) dots = gdots(graph=g, color=color.red) points = count_points(start, end) for point in points['points']: f1.plot(point) correct_points = 0 for _ in range(0, tries): point = draw_point(start, end - start) dots.plot(point) if point[1] <= integral_function(point[0]): correct_points = correct_points + 1 # max_val jest największą wartością funkcji, # odpowiada zmiennej H która musi być większa od f(x) dlatego koryguję o 0.1 p_gross = count_gross_field(end - start, points['max_val'] + 0.0001) p = correct_points / tries * p_gross f1.label = '2 * wartość całki= ' + str(2 * p) dots.label = 'pole całkowite= ' + str(p_gross)
import vpython as vp from robot_imu import RobotImu from imu_settings import mag_offsets imu = RobotImu(mag_offsets=mag_offsets) mag_min = vp.vector(0, 0, 0) mag_max = vp.vector(0, 0, 0) scatter_xy = vp.gdots(color=vp.color.red) scatter_yz = vp.gdots(color=vp.color.green) scatter_zx = vp.gdots(color=vp.color.blue) while True: vp.rate(100) mag = imu.read_magnetometer() mag_min.x = min(mag_min.x, mag.x) mag_min.y = min(mag_min.y, mag.y) mag_min.z = min(mag_min.z, mag.z) mag_max.x = max(mag_max.x, mag.x) mag_max.y = max(mag_max.y, mag.y) mag_max.z = max(mag_max.z, mag.z) offset = (mag_max + mag_min) / 2 print(f"Magnetometer: {mag}. Offsets: {offset}.") scatter_xy.plot(mag.x, mag.y) scatter_yz.plot(mag.y, mag.z) scatter_zx.plot(mag.z, mag.x)