Example #1
0
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'])
Example #2
0
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'])
Example #5
0
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)
Example #7
0
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)