Отчет по курсовой работе по дисциплине «информатика» Интерполяция полиномами Лагранжа



Скачать 52.48 Kb.
Дата26.07.2014
Размер52.48 Kb.
ТипОтчет


Министерство образования российской федерации

Московский государственный институт электроники и математики

(технический университет)

Кафедра ИКТ




ОТЧЕТ ПО КУРСОВОЙ РАБОТЕ ПО ДИСЦИПЛИНЕ «ИНФОРМАТИКА»

Интерполяция полиномами Лагранжа


Москва 2011 год


Оглавление


1

1


Оглавление 2

Поставленная задача: 3

Теоретическое введение. 3

Описание работы. 3

Общее описание: 3

Принцип работы: 3

Управление: 4

Средства разработки: 4

Приложение: 5

Ссылки: 7


Поставленная задача:


Реализовать задачу интерполяции функции многочленом Лагранжа.

Теоретическое введение.


Интерполяция[1]­­­ – метод нахождения промежуточных значений некоторой величины по известному дискретному набору значений.




Интерполяционный многочлен Лагранжа[2] – многочлен минимальной степени, принимающий данные значения в данном наборе точек. В простейшем случае – это линейный многочлен, график которого – прямая, проходящая через две заданные точки.

По способу, предложенному Лагранжем, значение функции L(x) вычисляется по формуле:


Где базисные полиномы li(x) определяются по формуле:

и обладают следующими свойствами:


  1. являются многочленами степени n

  2. li(xi) = 1

  3. li(xj) = 0 при

Описание работы.

Общее описание:


Программа рисует график функции, проходящей через точки поставленные пользователем на экране. Значение функции для каждой ‘x’-координаты, рассчитывается при помощи полиномов Лагранжа. В программе реализована анимация при рисовании графиков функций.

Принцип работы:


Полученные координаты точек записываются в список cmass, который передается в функцию lagr_polinom, которая считает значения основного полинома для заданной точки (функция вызывается для всех точек оси абсцисс). После получения значений функции, между соседними рисуется прямая. Это создает видимость непрерывности графика функции.

Управление:


Управление в программе осуществляется при помощи "мыши". Нажимая левую клавишу, пользователь ставит базовую точку (рисуется на экране синим цветом).
При нажатии на базовую точку правой клавишей – точка удаляется (рисуется на экране зеленым цветом). При нажатии средней клавиши – программа перерисовывает график на основе существующих базовых точек (случайным цветом).

Средства разработки:


ОС:Windows

Язык программирования "Python"

Библиотеки: "pygame", "time", "math", "random", "sys"

Приложение:


# -*- coding: utf-8 -*-

import pygame, time, random, math, sys

import pygame._view

from pygame.locals import *

pygame.init()

##функция возвращает значение полинома по точкам в mass для точки x

def lagr_polinom(mass, x):

res = 0.


for j in range(len(mass)):

pol = 1.


for i in range(len(mass)):

if i!=j :

pol *=float(x-mass[i][0])/float(mass[j][0]-mass[i][0])

res += mass[j][1]*pol

return int(res)
##функция переводит из системы координат pygame в декартовую

def py2dec(size, py_coord):

xp,yp = py_coord

x = xp - size[0]/2

y = size[1]/2 - yp

return x, y


##функцтя для рисования подписей в выбранных точках

def draw_podpis(font, screen, pos, size = (800,600) ):

elem = pos

podpis = str(py2dec(size, elem))

text = font.render(podpis, 1, (0,0,0))

screen.blit(text, (elem[0]-25,elem[1]+11))


##Основная функция для отрисовки объектов на экране

def render(screen, cmass, size, text_redraw = True):

z_text = ' '

pygame.display.set_caption("Lagrange polynomial"+z_text*70+str(len(cmass))+ ' points')

c_sys_render(screen,size)

font = pygame.font.Font(None, 17)

for elem in cmass:

pygame.draw.circle(screen, (0, 0, 255), elem, 5)

if text_redraw != False:

draw_podpis(font, screen, elem)

c_color = (random.randrange(0,254),random.randrange(0,254),random.randrange(0,254))

if len(cmass) > 1:

sx=0

while sx < size[0]-3:



c_y = c_y =lagr_polinom(cmass,sx)

c_y_p2 =lagr_polinom(cmass,sx+1)

pygame.draw.aaline(screen,(c_color), (sx, c_y),(sx+1, c_y_p2), 23)

sx+=1


time.sleep(0.001)

pygame.display.flip()

elif len(cmass) == 1:

pygame.draw.circle(screen, (0, 0, 255), cmass[0], 5)

pygame.display.flip()
##функция для отрисовки системы координат

def c_sys_render(screen, size = (800, 600)):

font = pygame.font.Font(None, 35)

font2 = pygame.font.Font(None, 20)

message = '>'

text = font.render(message, 1, (0,0,0))

screen.blit(text, (size[0]-13,size[1]/2-14))

message = 'x'

text = font.render(message, 1, (0,0,0))

screen.blit(text, (size[0]-13,size[1]/2+3))

message = '^'

text = font.render(message, 1, (0,0,0))

screen.blit(text, (size[0]/2-6,-4))

message = 'y'

text = font.render(message, 1, (0,0,0))

screen.blit(text, (size[0]/2-20,-4))

message = '0'

text = font2.render(message, 1, (0,0,0))

screen.blit(text, (size[0]/2+2,size[1]/2))

pygame.draw.line(screen,(0,0,0), (size[0]/2, size[1]),(size[0]/2,0))

pygame.draw.line(screen,(0,0,0), (size[0],size[1]/2),(0,size[1]/2))
##Основная функция программы

def main():

size = 800, 600

screen = pygame.display.set_mode(size)

done = False

obnulenie = False

pygame.display.set_caption("Lagrange polynomial")

cmass = []

tmass = []

clen = 0


screen.fill((255,255,255))

c_sys_render(screen)

pygame.display.flip()

while not done:

proverka = True

for event in pygame.event.get():

if event.type == pygame.QUIT:

done = True

if event.type == pygame.MOUSEBUTTONUP:

for i in range(len(cmass)):

if cmass[i][0] == event.pos[0]:

proverka = False

if proverka and event.button == 1:

cmass.append((event.pos))

if event.button == 3:

r = float()

l = 0

while l < len(cmass):



r = (float(event.pos[0]-cmass[l][0])**2+(float(event.pos[1]-cmass[l][1]))**2)**(0.5)

if r<5:


pygame.draw.circle(screen, (125, 255, 125), cmass[l], 5)

tmass = cmass[0:l]

tmass += cmass[l+1:len(cmass)]

cmass = tmass

l+=1

#render
if event.button == 2:



screen.fill((255,255,255))

render(screen, cmass, size)


if clen > len(cmass):

render(screen, cmass, size, False)

clen = len(cmass)

elif clen < len(cmass):

render(screen, cmass, size)

clen = len(cmass)



main()

Ссылки:


1 Краткий словарь терминов: http://voluntary.ru/dictionary/900/word/%C8%ED%F2%E5%F0%EF%EE%EB%FF%F6%E8%FF


2 Wikipedia Интерполяционный многочлен Лагранжа

http://ru.wikipedia.org/wiki/%D0%98%D0%BD%D1%82%D0%B5%D1%80%D0%BF%D0%BE%D0%BB%D1%8F%D1%86%D0%B8%D0%BE%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE%D1%87%D0%BB%D0%B5%D0%BD_%D0%9B%D0%B0%D0%B3%D1%80%D0%B0%D0%BD%D0%B6%D0%B0


Похожие:

Отчет по курсовой работе по дисциплине «информатика» Интерполяция полиномами Лагранжа iconОтчет по курсовой работе по дисциплине «информатика» Интерполяция полиномами Лагранжа
Интерполяция­­­ метод нахождения промежуточных значений некоторой величины по известному дискретному набору значени
Отчет по курсовой работе по дисциплине «информатика» Интерполяция полиномами Лагранжа iconОтчет по курсовой работе по дисциплине «программирование на языке python»
В курсовой работе разработана игра «Kill the Beaver» на языке программирования Python
Отчет по курсовой работе по дисциплине «информатика» Интерполяция полиномами Лагранжа iconЛабораторная работа 7 Интерполирование функций методом Лагранжа. Линейная интерполяция
Цель работы. По результатам эксперимента, заданным в виде последовательности точек на координатной плоскости, построить интерполяционную...
Отчет по курсовой работе по дисциплине «информатика» Интерполяция полиномами Лагранжа iconМетодические указания к курсовой работе по дисциплине "Основы теории радиотехнических сигналов и цепей " для студентов специальности 200700 Радиотехника Екатеринбург 2000
Анализ линейной стационарной цепи: Методические указания к курсовой работе по дисциплине “Основы теории радиотехнических сигналов...
Отчет по курсовой работе по дисциплине «информатика» Интерполяция полиномами Лагранжа iconОтчет по курсовой работе по дисциплине «программирование на яву»
Создание игры, аналогов которой является всем известная игра «Bomber» с тем изменением, что цель этой игры уничтожить противника
Отчет по курсовой работе по дисциплине «информатика» Интерполяция полиномами Лагранжа iconОтчет по курсовой работе по дисциплине «информатика» Программа, получающая на входе логическую функцию и строящая для неё таблицу истинности
Программа, получающая на входе логическую функцию и строящая для неё таблицу истинности
Отчет по курсовой работе по дисциплине «информатика» Интерполяция полиномами Лагранжа iconМетодическое пособие по дисциплине «Организация ЭВМ и систем» иуказания по выполнению лабораторных и курсовой работ Направление 230100 «Информатика и вычислительная техника»
Методическое пособие по дисциплине «Организация ЭВМ и систем» и указания по выполнению лабораторных и курсовой работ
Отчет по курсовой работе по дисциплине «информатика» Интерполяция полиномами Лагранжа iconВопросы к зачету по дисциплине «Математическое моделирование»
Интерполяционный многочлен Лагранжа. Погрешность интерполяции. Сравнение многочленов Ньютона Ньютона и Лагранжа
Отчет по курсовой работе по дисциплине «информатика» Интерполяция полиномами Лагранжа iconМетодические рекомендации по курсовому проектированию по дисциплине: «Вычислительные системы, сети и телекоммуникации»
В курсовой работе по данной дисциплине разрабатывается проект локальной вычислительной сети. Теоретической базой при выполнении курсового...
Отчет по курсовой работе по дисциплине «информатика» Интерполяция полиномами Лагранжа icon«Интерполяция функций»
Лагранжа выберем номера узлов интерполяции 8, 9, 10, 12, что соответствует значениям узлов х0 5, х1 45, х2 55, х3 35
Разместите кнопку на своём сайте:
ru.convdocs.org


База данных защищена авторским правом ©ru.convdocs.org 2016
обратиться к администрации
ru.convdocs.org