Adrikk
@Adrikk
Студент

Как найти корни полинома(многочлена) действительные и комплексные С++?

Подскажите пожалуйста как реализовать функцию нахождения комплексных и действительных корней полинома?
Столько всего перерыл и не могу понять..
class Polynom{
	private: 
		int deg; //степень полинома
		double *koef; //указатель на массив коэффициентов полинома
	public:
		Polynom();//конструктор без параметром
		Polynom(int);//конструктор с параметром
		Polynom(int, double *);//конструктор с параметрами
		Polynom(const Polynom &);//копирующий конструктор
		~Polynom(){ delete[] koef;} //деструктор

		int getDegree(); //Порядок полинома
	 	double getKoef(unsigned int ); //Получить i-тый коэфф
		void setKoef(int, double);//Изменить i-тый коэфф
		double searchPoly(double);//Значение полинома при x-аргументе
		Polynom getDarivative(unsigned int);//Производная нужного порядка
		double Integrate(double,double);
		Polynom indefiniteIntegral() const;
		
		Polynom operator+(Polynom&);//Сложение двух полиномов
        Polynom operator-(Polynom&);//Вычитание двух полиномов
        Polynom operator=(const Polynom&);//Присваивание 
        Polynom operator*(Polynom&);//Умножение двух полиномов
        Polynom operator/(Polynom &);//деление двух полиномов
        Polynom operator%(Polynom &);//остаток от деления
		
		void InputPolynom(int, double *); //Ввод полинома
		friend ostream& operator<<(ostream&, Polynom&);//Вывод в поток		
};
  • Вопрос задан
  • 883 просмотра
Пригласить эксперта
Ответы на вопрос 1
@zuko3d
Если можно использовать численные методы, то метод Ньютона можно модифицировать чтобы с комплексными тоже работал (делить прямоугольные области пополам). Для определения количества корней на интервале вроде метод Штурма должен помочь. За стартовый интервал предлагаю взять (FLOAT_MIN; FLOAT_MAX) по обеим осям (действительная и мнимая).
Для удобства предлагаю написать вспомогательный класс для работы в комплексными числами (или взять его из GMP, если можно пользоваться сторонними библиотеками).

Если нужно "прямое" решение без ЧМов, то Абель в 17 веке показал, что это "задача для мужика" (не выражается в рациональных функциях и радикалах). Но надежда есть: https://ru.wikipedia.org/wiki/%D0%9A%D0%BE%D1%80%D... (я, правда, про это только на лекциях слышал и в жизни не применял, так что хз, насколько актуально).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
IGA Technologies Москва
До 70 000 ₽
Монополия Санкт-Петербург
от 87 000 до 87 000 ₽
18 апр. 2024, в 12:52
500000 руб./за проект
18 апр. 2024, в 12:48
6000 руб./за проект
18 апр. 2024, в 12:41
3000 руб./за проект