PyGame: ряд Тейлора

Розв’язок задачі «Ряд Тейлора», написаний на Python 3 з використанням бібліотеки PyGame:

# -*- coding: utf-8 -*-
import pygame, sys, math
from pygame.locals import *
from math import *

# Функция возвращает y в ряде Тейлора по 
# заданному x и количеству слагаемых n
def getY(x, n):
    i = 1
    y = 0.
    sign = 1.;
    term = x;
    while i < n : 
        y += sign*term # Подсчет  суммы (метод накопления)
        sign = -sign;
        i = i + 2
        term = term*x*x/(i*(i-1));
    return y;

pygame.init()

WIN_WIDTH = 600 #Ширина создаваемого окна
WIN_HEIGHT = 300 # Высота

DISPLAYSURF = pygame.display.set_mode((WIN_WIDTH, WIN_HEIGHT), 0, 32)   # настройка окна
pygame.display.set_caption('Graph') #Надпишь в шапке окна

BLACK = (  0,   0,   0)    # определение цветов
WHITE = (255, 255, 255)
RED   = (255,   0,   0)
GREEN = (  0, 255,   0)
BLUE  = (  0,   0, 255)

DISPLAYSURF.fill(WHITE)    # рисование

mash = 30 # Масштабный множитель

x = -10
n = 100
while x < 10:
    pygame.draw.circle(DISPLAYSURF, GREEN, ( trunc( x * mash ) + WIN_WIDTH // 2, trunc( -getY(x, n) * mash ) + WIN_HEIGHT // 2 ), 5, 0) # Рисования точки для суммы
    x += 0.1 # Шаг графика
x = -10
while x < 10:
    pygame.draw.circle(DISPLAYSURF, BLUE, ( trunc( x * mash ) + WIN_WIDTH // 2, trunc( -sin(x) * mash ) + WIN_HEIGHT // 2 ), 1, 0 ) # Рисование точки для синуса
    x += 0.1 # Шаг графика

while True:      # основной цикл обработки событий
    for event in pygame.event.get():
        if event.type == QUIT:
            pygame.quit()
            sys.exit()
    pygame.display.update()


Скріншот:

taylor_pygame

Зеленим кольором показано графік, побудований за допомогою ряду Тейлора, а синіми точками на ньому— точні значення сінуса.

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *