">
Математика Математический анализ
Информация о работе

Тема: Многочлены

Описание: Многочлены или полиномы в математике. Определение. Свойства. Методы решения. Метод хорд. Геометрическое и алгебраическое описание. Метод Ньютона. Геометрическая интерпретация. Алгоритм. Реализация класса. Вспомогательные типы данных. Класс для работы с полиномами.
Предмет: Математика.
Дисциплина: Математический анализ.
Тип: Курсовая работа
Дата: 30.08.2012 г.
Язык: Русский
Скачиваний: 72
Поднять уникальность

Похожие работы:

КУРСОВАЯ РАБОТА

НА ТЕМУ: «многочлены»

2011

Оглавление

Введение3

Многочлены4

1.1.Многочлены или полиномы в математике 4

1.2.Определение4

1.3.Свойства5

2. Методы решения6

2.1.Метод Хорд 6

2.2.Метод Ньютона 7

3. Реализация класса 9

3.1.Основы ООП9

3.2.Вспомогательные типы данных 10

3.3. Функции определенные внутри класса11

Заключение13

Список использовавшейся литературы14

Приложение15

Введение

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

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

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

Целью курсовой работы является реализация класса «Многочлен». Для этого мы выделили частные задачи, поставленные в курсовой работе:

1. Каждая строка файла содержит информацию об одном многочлене в виде:

степень и набор его целых коэффициентов. Требуется найти сумму всех этих

многочленов.

2. Коэффициентами двух многочленов являются комплексные числа. Найти произведение многочленов.

3. Уточнить корень многочлена на отрезке одним из численных методов,

например, методом Хорда.

Многочлены

Многочлены или полиномы в математике

В математике, многочлены или полиномы от одной переменной функции вида, F(x) = где  фиксированные коэффициенты,

а x — переменная. Многочлены составляют один из важнейших классов элементарных функций.

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

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

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

Определение

Многочлен (или полином) от n переменных — есть конечная формальная сумма вида,  где I = () есть набор из целых неотрицательных чисел (называется мультииндекс),  — число (называемое «коэффициент многочлена»), зависящее только от мультииндекса I.

В частности, многочлен от одной переменной есть конечная формальная сумма вида  Коэффициенты многочлена обычно берутся из определённого коммутативного кольца R (чаще всего поля, например, поля вещественных или комплексных чисел). В этом случае, относительно операций сложения и умножения многочлены образуют кольцо (более того ассоциативно-коммутативную алгебру над кольцом R без делителей нуля) которое обозначается R[x1,x2,...,].

Свойства

Кольцо многочленов над произвольной областью целостности само является областью целостности.

Кольцо многочленов от любого конечного числа переменных над любым факториальным кольцом само является факториальным.

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

Более того, кольцо многочленов от одного переменного над полем является евклидовым кольцом.

Методы решения

Метод хорд

Метод хорд  — итерационный метод нахождения корня уравнения.

Геометрическое описание метода

Будем искать корень функции f(x). Выберем две начальные точки C1(x1;y1) и C2(x2;y2) и проведем через них прямую. Она пересечет ось абсцисс в точке (x3;0). Теперь найдем значение функции с абсциссой x3. Временно будем считать x3 корнем на отрезке [x1;x2]. Пусть точка C3 имеет абсциссу x3 и лежит на графике. Теперь вместо точек C1 и C2 мы возьмём точку C3 и точку C2. Теперь с этими двумя точками проделаем ту же операцию и так далее, т.е. будем получать две точки Cn + 1 и Cn и повторять операцию с ними. Таким образом, мы будем получать две точки, отрезок, соединяющий которые, пересекает ось абсцисс в точке, значение абсциссы которой можно приближенно считать корнем. Эти действия нужно повторять до тех пор, пока мы не получим значение корня с нужным нам приближением.

Алгебраическое описание метода

Пусть x1,x2 — абсциссы концов хорды, y = kx + b — уравнение прямой, содержащей хорду. Найдем коэффициенты k и b из системы уравнений:

.

Вычтем из первого уравнения второе:

f(x1) ? f(x2) = k(x1 ? x2), затем найдем коэффициенты k и b:

k = , тогда b = f(.

Уравнение принимает вид:

y =  (.

Таким образом, теперь можем найти первое приближение к корню, полученное методом хорд: .

Теперь возьмем координаты x2 и x3 и повторим все проделанные операции, найдя новое приближение к корню. Повторять операцию следует до тех пор, пока xn ? xn ? 1 не станет меньше или равно заданному значению погрешности.

Метод Ньютона

Метод Ньютона, алгоритм Ньютона (также известный как метод касательных) — это итерационный численный метод нахождения корня (нуля) заданной функции.

Чтобы численно решить уравнение f(x) = 0 методом простой итерации, его необходимо привести к следующей форме: x = ?(x), где ? — сжимающее отображение.

Для наилучшей сходимости метода в точке очередного приближения x* должно выполняться условие ’() = 0. Решение данного уравнения ищут в виде:

.

В предположении, что точка приближения «достаточно близка» к корню , и что заданная функция непрерывна (f(x*) ? f(, окончательная формула для ?(x) такова: ?(x) = .

С учётом этого функция ?(x) определяется выражением:

?(x) =  Эта функция в окрестности корня осуществляет сжимающее отображение, и алгоритм нахождения численного решения уравнения

f(x) = 0 сводится к итерационной процедуре вычисления: 

По теореме Банаха последовательность приближений стремится к корню уравнения f(x) = 0.



На графике функций мы можем увидеть, что последующее приближение лучше предыдущего .

Геометрическая интерпретация

Основная идея метода заключается в следующем: задаётся начальное приближение вблизи предположительного корня, после чего строится касательная к исследуемой функции в точке приближения, для которой находится пересечение с осью абсцисс. Эта точка и берётся в качестве следующего приближения. И так далее, пока не будет достигнута необходимая точность.

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

,

где ? — угол наклона касательной в точке .

Следовательно, искомое выражение для  имеет вид:

.

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

Алгоритм

Задается начальное приближение x0.

Пока не выполнено условие остановки, в качестве которого можно взять  или  (то есть погрешность в нужных пределах), вычисляют новое приближение: .

Реализация класса

3.1. Основы ООП

Объектно-ориентированное — это совокупность идей и понятий, определяющая стиль написания программ в которой основными концепциями являются понятия объектов и классов.

Структура данных «класс», представляющая собой объектный тип данных, внешне похожа на типы данных процедурно-ориентированных языков, такие как структура в языке Си или запись в Паскале или QuickBasic. При этом элементы такой структуры (члены класса) могут сами быть не только данными, но и методами (то есть процедурами или функциями). Такое объединение называется инкапсуляцией.

Наличие инкапсуляции достаточно для объектности языка программирования, но ещё не означает его объектной ориентированности — для этого требуется наличие наследования.

Но даже наличие инкапсуляции и наследования не делает язык программирования в полной мере объектным с точки зрения ООП. Основные преимущества ООП проявляются только в том случае, когда в языке программирования реализован полиморфизм.

Многие современные языки специально созданы для облегчения объектно-ориентированного программирования. Однако следует отметить, что можно применять техники ООП и для не-объектно-ориентированного языка и наоборот, применение объектно-ориентированного языка вовсе не означает, что код автоматически становится объектно-ориентированным.

Часть языков целиком построена вокруг объектных средств — в них любые данные (возможно, за небольшим числом исключений в виде встроенных скалярных типов данных) являются объектами, любой код — методом какого-либо класса, и невозможно написать программу, в которой не использовались бы объекты. Примеры подобных языков — C#, Smalltalk, Java, Ruby. Другие языки (иногда используется термин «гибридные») включают ООП-подсистему в исходно процедурный язык. В них существует возможность программировать, не обращаясь к объектным средствам. Классические примеры — C++ и Delphi.

Являясь одним из самых популярных языков программирования, C++ широко используется для разработки программного обеспечения. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (например, видеоигры). Существует несколько реализаций языка C++ — как бесплатных, так и коммерческих. Их производят Проект GNU, Microsoft, Intel и Embarcadero (Borland). C++ оказал огромное влияние на другие языки программирования, в первую очередь на Java и C#.

Вспомогательные типы данных

TFloatComplex – тип данных для работы с комплексными числами.

Содержит 2 числа типа float – реальную и мнимую составляющие комплексного числа. Создан на основе шаблона из стандартной библиотеки std, которая так же реализует все функции для работы с комплексными числами.

Тип данных определён в файле polinom.h следующим образом:

typedef std::complex TFloatComplex;

TPolinomVeсtor – массив значений типа TFloatComplex. Создан на основе шаблона vector стандартной библиотеки std.

Тип данных определён в файле polinom.h следующим образом:

typedef vector TPolinomVeсtor;

Класс для работы с полиномами

class TPolinom – класс, который непосредственно реализует все функции для работы с полиномами.

Класс определён в файле polinom.h следующим образом:

class TPolinom

{

public:

TPolinomVeсtor pol;// массив коэффициентов полинома

TPolinom(){};// пустой конструктор

TPolinom(TPolinomVeсtor pol)// конструктор по коэффициентам

{

this->pol = pol;

};

bool Load(char* name);// Загрузка из файла

void Print();// Вывод на экран

void Clear() { pol.clear();};// очистка полинома

TFloatComplex Value(TFloatComplex x);// рассчёт значения полинома по заданному x

TFloatComplex findRoot(TFloatComplex a, TFloatComplex b, float epsilon);

// поиск корней

TPolinom operator + (TPolinom);//сложение многочленов

TPolinom operator - (TPolinom);//вычитание

TPolinom operator * (TPolinom);//умножение

TPolinom operator / (TPolinom);//целая часть от деления

TPolinom operator % (TPolinom b);//остаток от деления

bool operator != (TPolinom);//сравнение

};

Класс содержит массив коэффициентов полинома - TPolinomVeсtor pol.

Функции, определённые внутри класса

TPolinom(TPolinomVeсtor pol) – конструктор объекта класса с параметрами.

В качестве параметров выступает массив коэффициентов создаваемого полинома.

bool Load(char* name) – функция загрузки полинома их файла.

Входной параметр char* name – имя файла.

Функция реализована в файле Polinom.cpp. Листинг см. в приложении.

void Print() – вывод полинома на экран. Позволяет отобразить полином на экране компьютера.

Void Clear () – очистка коэффициентов полинома.

В реализации функции использован метод clear(), описанной в стандартной библиотеке std.

TFloatComplex Value(TFloatComplex x) - расчёт значения полинома по заданному значению ‘x’.

Функция реализована в файле Polinom.cpp. Листинг см. в приложении.

TFloatComplex findRoot(TFloatComplex a, TFloatComplex b, float epsilon) – поиск корней полинома. Реализует поиск корней полинома по методу хорд.

Заключение

В результате выполнения курсовой работы, разработанной на тему «Многочлены», были выполнены все поставленные задачи.

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

При проведении анализа предметной области были подробно описаны теоретические основы математической модели, приведены обоснование и словесное описание разрабатываемого алгоритма.

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

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

Список литературы

В.В. Деменчук "Многочлены и микрокалькулятор". Минск, "Высшая школа", 1988г.

А.И. Кострикин "Введение в алгебру". Москва, "Физматлит", 2001г.

А.Г. Курош "Курс высшей алгебры". Санкт-Петербург, "Лань", 2003г.

А.А. Прокофьев, И.Б. Кожухов "Универсальный справочник по математике школьникам и абитуриентам ". Москва, "Лист Нью", 2003г.

Пахомов Б. C/C++ и Borland C++ Builder для начинающих. - Спб., "БХВ-Петербург", 2006.

Ермолаев В., Сорока Т. C++ Builder: книга рецептов. - М., "Кудиц-образ", 2006.

Калверт Ч., Рейсдорф К. Borland C++ Builder 5. Энциклопедия программиста. (Пер. на русский). - Киев, "Диасофт", 2001.

Архангельский А.Я. Программирование в C++ Builder 6. - М., "Бином", 2003.

Послед Б.С. Borland C++ Builder 6: Разработка приложений баз данных. - Спб., "ДиасофтЮП", 2003.

Послед Б.С. Borland C++ Builder 6: Разработка приложений баз данных. - Спб., "ДиасофтЮП", 2003.

Приложение

// Polinom.cpp: определяет точку входа для консольного приложения.

#include "stdafx.h"

#include "Polinom.h"

#include

#include

#include

#include

using namespace std;

bool TPolinom::Load(char* name)

{

FILE *f;// указатель на файл

float x;

f=fopen(name,"r");// открываем файл

if (f == NULL)// если не открылось

{

printf("ОШИБКА! Невозможно открыть файл %s",name);

return (false);

}

else

{printf("Загружен файл: %s",name);// если открылось

while (!feof(f))// читаем до конца файла

{if (fscanf(f,"%f",&x)!=0)

{

pol.push_back(x);// заполням коэффициенты

};

};

cout <return (true);

};

};

TFloatComplex TPolinom::Value(TFloatComplex x)

{

TFloatComplex val = 0;

for (unsigned int j = 0;j < pol.size(); j++)// цикл по всему полиному

{int stepen = pol.size()-1-j;// расчёт степени

TFloatComplex cv;// возведение значения в степень

cv.real(1); cv.imag(0);

for (unsigned int st=0;st{

cv=cv*x;

}

val=val+pol[j]*cv;// наращиваем счётчик результата

}

return val;

}

void TPolinom::Print()

{

for (unsigned int j = 0;j < pol.size(); j++)// цикл по всему полиному

{if (pol.size() == 1)// если размер = 1, выводим значение

{

printf("%2.2f",pol[j].real());

}

else

{if (j == pol.size() - 1)// для степени = 1

{if ((pol[j].imag()!= 0 )||(pol[j].real()!= 0))// если коэффициент не равен нулю

{if (pol[j].real() > 0)// если коэффициент больше нуля, то плюс

{

printf("+%2.2f",pol[j].real());

}

else printf("%2.2f",pol[j].real());// если коэффициент меньше нуля, то выводим его (минус уже в самом коэффициенте)

};

}

else// для степени > 1

{

if ((pol[j].imag()!= 0 )||(pol[j].real()!= 0))// если коэффициент не равен нулю

{if (j == 0)// если это старший коэффициент

{

printf("%2.2fx^%d",pol[j].real(),pol.size()-1-j);

}

else

{if (pol [j].real() > 0)// если коэффициент больше нуля, то плюс...

{printf("%+2.2fx^%d",pol[j].real(),pol.size()-1-j);

}

else// если коэффициент меньше нуля, то выводим его

{printf("%2.2fx^%d",pol[j].real(),pol.size()-1-j);

};

};

};

};

};

};

cout<};

TPolinom TPolinom::operator + (TPolinom b)

{TPolinomVeсtor a = pol;

size_t sizea = a.size()-1;// размер а

size_t sizeb = b.pol.size()-1;// размр b

if (sizeb >= sizea)// если b>a,

{for(unsigned int j = 0; j<=sizea; j++)// цикл по длине а

{

b.pol[j+(sizeb-sizea)] = a[j] + b.pol[j+(sizeb-sizea)] ;

};

return TPolinom(b);

}

else// если a>b,

{for(unsigned int j = 0; j<=sizeb; j++)// цикл по длине b

{

a[j+(sizea-sizeb)] = a[j+(sizea-sizeb)] + b.pol[j];

};

return TPolinom(a);

}

};

TPolinom TPolinom::operator - (TPolinom b)

{

TPolinomVeсtor a = pol;

int sizea = int(a.size())-1;

int sizeb = int(b.pol.size())-1;

if (sizeb >= sizea)// аналогично сложению

{for(int j = 0; j<=sizea; j++)

{

b.pol[j+(sizeb-sizea)] = a[j] - b.pol[j+(sizeb-sizea)] ;

};

for (int j = 0; j<=(sizeb - sizea -1);j++)// меняем знак b у оставшихся элементов

{

b.pol[j].real(-1*b.pol[j].real());

}

return TPolinom(b);

}

else

{for(int j = 0; j<=sizeb; j++)

{

a[j+(sizea-sizeb)] = a[j+(sizea-sizeb)] - b.pol[j];

};

return TPolinom(a);

};

};

TPolinom TPolinom::operator * (TPolinom b)

{

TPolinomVeсtor a = this->pol;

typedef struct

{

TFloatComplex val;

int deg;

}

Trec;

Trec rec;

vector tmp;

size_t sizea = a.size()-1;

size_t sizeb = b.pol.size()-1;

unsigned int i = 0;

int curdeg = 0;

TFloatComplex val = 0;

//уножаем первый на второй

for(unsigned int i = 0; i<=sizea; i++)

{for(unsigned int j = 0; j<=sizeb; j++)

{

rec.val = a[i] * b.pol[j];

rec.deg = int((sizea-i)+(sizeb-j));

tmp.push_back(rec);

};

};

//приводим подобные слогаемые(очищаем исходный записываем в него результат)

a.clear();

while (tmp.size() != 0)

{

rec = tmp[0];

curdeg = rec.deg;

i = 0;

val = 0;

while ((i <= tmp.size()-1)&&(tmp.size() != 0)) //пройти по всему контейнеру и

{//просуммировать то что с одинаковыми степенями

rec = tmp[i];

if (rec.deg == curdeg)//степени совпали, тогда

{

//суммируем и удаляем текущую ячейку

val = val + rec.val;

tmp.erase(tmp.begin()+i);

}

else i++;//переходим к следующей

};

a.push_back(val);//добавляем в результат

};

return TPolinom(a);

};

TPolinom TPolinom::operator / (TPolinom b)//целая часть от деления

{

TPolinomVeсtor a = this->pol;

int i = 0;

bool fl = true;

int sizea = int(a.size())-1;

int sizeb = int(b.pol.size())-1;

TPolinomVeсtor res;

if ((b.pol[0].imag() == 0)&&(b.pol[0].real() == 0))

{

cout << "Ошибка деления на нуль!";

return TPolinom(b.pol);

};

while (fl)

{//степень делимого больше степени делителя

if (((sizea - i) >= sizeb))

{res.push_back(a[i] / b.pol[0]);

for(int j = 0; j <= sizeb; j++)

{

a[j+i] = a[j+i] - (res[i] * b.pol[j]);

};

}

else fl=false;

i++;

};

return TPolinom(res);

};

TPolinom TPolinom::operator % (TPolinom b)//остаток от деления

{

TPolinomVeсtor a = this->pol;

int i = 0, j = 0;

bool fl = true;

int sizea = int(a.size())-1;

int sizeb = int(b.pol.size())-1;

TPolinomVeсtor res;

if ((b.pol[0].imag() == 0)&&(b.pol[0].real() == 0))

{

cout << "Ошибка деления на нуль!";

return TPolinom(b.pol);

};

while (fl)

{//степень делимого больше степени делителя

if (((sizea - i) >= sizeb))

{

res.push_back(a[i] / b.pol[0]);

for(int j = 0; j <= sizeb; j++)

{

a[j+i] = a[j+i] - (res[i] * b.pol[j]);

};

}

else fl=false;

i++;

};

return TPolinom(a);

};

bool TPolinom::operator != (TPolinom b)//сравнение по коэффициентам многочленов

{

bool fl = true;

if (pol.size() == b.pol.size())// если размеры равны

{for (unsigned int i = 0;((i<=pol.size()-1)&&(fl));i++)// сравниваем поэлементно

{if (pol[i] != b.pol[i])

{

fl = false;

};

};

}

else fl = false;

return !fl;

};

TFloatComplex TPolinom::findRoot(TFloatComplex a, TFloatComplex b, float epsilon)

{// метод хорд

TFloatComplex c = b - a;

double cfabs = c.real()*c.real()+c.imag()*c.imag();

cfabs=pow(cfabs,0.5);// для комплексного числа - амплитуда = квадратный корень от суммы квадратов составляющих

while(cfabs > epsilon)

{

a = b - (b - a) * Value(b)/(Value(b) - Value(a));

b = a - (a - b) * Value(a)/(Value(a) - Value(b));

c = b - a;

cfabs = c.real()*c.real()+c.imag()*c.imag();

cfabs=pow(cfabs,0.5);

}

// a - i-1, b - i-тый члены

return b;

}

int main(int argc, _TCHAR* argv[])

{

locale::global(locale("rus"));// устанавливаем русскую кодировку для консоли

TPolinom a ,b, c;

bool fl = true;

int ch = 10;

if (a.Load("first.txt"))// загружаем первый полином

{

cout << "Первый многочлен: "<< endl;

a.Print();

cout << endl;

if (b.Load("second.txt"))// загружаем второй полином

{

cout << "Второй многочлен: "<< endl;

b.Print();

cout << endl;

}

else fl = false;

}

else fl = false;

while (fl)

{printf(" ");

printf("Выберите операцию: ");

printf("1-Сложить ");

printf("2-Вычесть ");

printf("3-Умножить ");

printf("4-Целочисленное деление ");

printf("5-Остаток от деление ");

printf("6-Сравнить ");

printf("7-Вычислить корень первого многочлена ");

printf("8-Выход ");

cout << endl;

printf(">");

scanf("%d",&ch);

cout << endl;

switch (ch)// разбираем выбор пользователя

{

case 1://сложить

cout << "Сумма: ";

c.Clear();

c = a + b;

c.Print();

break;

case 2://вычесть

cout << "Разность: ";

c.Clear();

c = a - b;

c.Print();

break;

case 3://умножить

cout << "Произведение: ";

c.Clear();

c = a * b;

c.Print();

break;

case 4://целочисленное деление

cout << "Целая часть от деления :";

c = a / b;

c.Print();

break;

case 5://остаток от деления

cout << "Остаток от деления :";

c = a % b;

c.Print();

break;

case 6://сравнить

if (a != b)

{cout << "Многочлены НЕ РАВНЫ" << endl;

}

else

{

cout << "Многочлены РАВНЫ" << endl;

};

break;

case 7:// вычислить корень первого многочлена

{TFloatComplex ca, cb;

ca.real(1); ca.imag(0);

cb.real(4); cb.imag(0);

TFloatComplex root= a.findRoot(ca,cb,0.01);

float res = root.real();

cout << res;

} break;

case 8:

{fl=false;

} break;

default:// неерно ввели число

printf("ПОВТОРИТЕ ВВОД (введите число от 1 до 7)");

cout << endl;

break;

};//switch(ch)

};//while

cout << endl << "Для выхода нажмите любую клавишу...";

_getch();// ждём любую клавишу

return 0;

}