Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otchet_polinom.doc
Скачиваний:
2
Добавлен:
16.11.2019
Размер:
198.66 Кб
Скачать

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

Государственное образовательное учреждение высшего профессионального образования «Нижегородский государственный университет им. Н.И. Лобачевского»

Факультет вычислительной математики и кибернетики

ОТЧЕТ

по лабораторной работе № 4

«Аналитические преобразования полиномов

от нескольких переменных»

Выполнил: студент группы 8210

__________________Баранов А.М. Проверил:

__________________Сидоров С.В.

Нижний Новгород

2011 г.

Оглавление

Аннотация 3

Введение 3

Постановка задачи 3

Руководство пользователя 4

Руководство программиста 6

Описание структуры хранения данных 6

Описание программы 7

Описание алгоритма 7

Заключение 10

Литература 11

Приложение (исходный код программы) 12

Аннотация

В данной работе рассматриваются вопросы реализации некоторых базовых аналитических преобразований и операций над полиномами от нескольких переменных.

Для хранения полиномов используются однонаправленные динамические списки.

Введение

Списки являются чрезвычайно гибкой структурой, так как их легко сделать большими или меньшими, и их элементы доступны для вставки или удаления в любой позиции списка. Списки также можно объединять или разбивать на меньшие списки.

Списки регулярно используются в приложениях, например в программах информационного поиска, трансляторах программных языков или при моделировании различных процессов. Методы управления памятью в современных вычислительных системах широко используют технику обработки списков.

Постановка задачи

Лабораторная работа предполагает программную реализацию системы аналитических преобразований полиномов от трех переменных. Требуется реализовать следующие операции в аналитическом представлении исходных данных и результатов:

  • ввод полиномов;

  • вывод полиномов;

  • удаление полиномов;

  • приведение полиномов

  • сложение полиномов;

  • Вычитание полиномов;

  • Производная от полинома;

  • Умножение полиномов

Например, пусть имеется два полинома: P(x,y,z)=x7y2z+3x2z-6y2-3z9 и Q(x,y,z)=-7x2z+6y2+5. В результате выполнения операции сложения должен быть получен полином R(x,y,z)=x7y2z-4x2z-3z9+5.

Программа должна обеспечивать диалоговый интерфейс с пользователем обеспечивающий ввод исходных данных из заранее подготовленного файла с заданным именем.

Руководство пользователя

После запуска исполняемого файла программы вы увидите главное окно программы (рис. 1).

Рис. 1. Главное окно программы.

Основные операции.

Операция сложения/вычитания/умножения полиномов:

  • Выбирается пункт меню 1/2/4;

  • Вводится имя файла с первым полиномом;

  • Выводится исходный неприведенный полином;

  • Выводится приведенный полином;

  • Вводится имя файла со вторым полиномом;

  • Выводится исходный неприведенный полином;

  • Выводится приведенный полином;

  • Выводится результат в приведенном виде.

Рис. 2. Выполнение операции сложения.

Рис.3. Результат операции вычитания.

Рис.4. Результат операции умножения.

Операция вычисления производной:

  • Выбирается пункт меню 3;

  • Вводится имя файла с полиномом;

  • Выводится исходный неприведенный полином;

  • Выводится приведенный полином;

  • Выводится результат в приведенном виде.

Рис.5.Результат вычисления производной.

Руководство программиста Описание структуры хранения данных

При манипуляции разреженными полиномами эффективной структурой хранения являются списки.

В качестве структуры хранения данных полинома был выбран однонаправленный динамический список. Каждый узел содержит два элемента содержащие атрибуты монома

elem - коэфффициент монома

pol – свертка монома

под сверткой монома имеется в виду вычисляемое целое число без знака вычисляемое в соответствии со следующими правилами

  • фиксируется старшинство переменных.

  • Будем считать, что x - самая старшая переменная, затем следует y, затем z.

  • Для каждого монома определим его "свернутую степень" (индекс).

  • Для монома xAyBzC+n. индекс равен A*1000+B*100+C*10+n (по условию задачи A, B и C не выше 9).

  • Старшим считается моном с большей свернутой степенью.

Свертка монома служит в дальнейшем ключом для идентификации монома

Кроме этого в каждый узел входит ссылка на следующий элемент списка

Для хранения промежуточного результата синтаксического разбора исходной строки используется массив Mpars

unsigned int Mpars[500];

node *Bfirst, *Blast ;

node *BRes; //Указатель на найденное звено списка.

node *Afirst, *Alast ;

node *ARes; //Указатель на найденное звено списка.

struct node {

int elem;

unsigned int pol;

node *next;

};

Для хранения полинома класс Spisok

class Spisok

{

private:

int N_monom;

public:

Spisok() {phead = new (node); (*phead).next=NULL;} //Конструктор.

~Spisok() { delete phead; } //Деструктор.

void Initial(node **first, node **last);

int Empty(node *first);

void Add(node **last,int elem, unsigned int pol);

void Show(node *first);

int Poisk_Eqv (node *first,unsigned int pol,node **last);

int Poisk_Less (node *first,int el,node **last);

void Izm (node *Res, int el,unsigned int pol);

void DelAll(node *first, node **last);

void AddLess (node **Res, int el,unsigned int pol);

int Next (node *first,int el,node **last);

void Del1 ();

};

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]