
- •1. Операции над полиномами
- •1.1 Умножение полиномов
- •2. Нахождение корней полинома
- •2.1 Предварительный анализ функции
- •2.1.1 Метод секущих (метод хорд)
- •2.1.2 Метод касательных
- •2.2 Итерационные методы поиска корней полинома.
- •2.2.1 Метод Ньютона
- •2.2.2 Метод Лина
- •2.2.3 Метод Бэрстоу
- •Составление процедуры по методу Бэрстоу на Pascal.
ГУАП
ОТЧЕТ ЗАЩИЩЕН С ОЦЕНКОЙ
ПРЕПОДАВАТЕЛЬ
|
|
|
|
Слюсаренко А.С. |
должность, уч. степень, звание |
|
подпись, дата |
|
инициалы, фамилия |
Реферат на тему Полиномы. Корни полинома. Умножение и деление полиномов.
|
РАБОТУ ВЫПОЛНИЛ(А)
СТУДЕНТ(КА) ГР. |
1961 |
|
подпись, дата |
|
Рагинис Д. |
|
|
|
|
|
инициалы, фамилия |
Санкт-Петербург
2011
СОДЕРЖАНИЕ
|
Страница |
Введение |
3 |
1. Операции над полиномами |
|
1.1 Умножение полиномов |
4 |
2. Нахождение корней полиномов |
|
2.1 Предварительный анализ функции |
6 |
2.1.1 Метод секущих (метод хорд) |
6 |
2.1.2 Метод касательных |
6 |
2.2 Итерационные методы поиска корней полинома |
|
2.2.1 Метод Ньютона |
6 |
2.2.2 Метод Лина |
9 |
2.2.3 Метод Бэрстоу |
10 |
Список используемой литературы |
|
|
|
Введение
В математике, многочлены или полиномы от одной переменной— функции вида
F(x)=c0|c1x|...|cnxn|
где ci фиксированные коэффициенты, а x — переменная. Многочлены составляют один из важнейших классов элементарных функций. Изучение полиномиальных уравнений и их решений составляло едва ли не главный объект «классической алгебры». С изучением многочленов связан целый ряд преобразований в математике: введение в рассмотрение нуля, отрицательных, а затем и комплексных чисел, а также появление теории групп как раздела математики и выделение классов специальных функций в анализе.
Техническая простота вычислений, связанных с многочленами, по сравнению с более сложными классами функций, а также тот факт, что множество многочленов плотно в пространстве непрерывных функций на компактных подмножествах евклидова пространства, способствовали развитию методов разложения в ряды и полиномиальной интерполяции в математическом анализе.
Многочлены также играют ключевую роль в алгебраической геометрии, объектом которой являются множества, определённые как решения систем многочленов. Особые свойства преобразования коэффициентов при умножении многочленов используются в алгебраической геометрии, алгебре, теории узлов и других разделах математики для кодирования, или выражения многочленами свойств различных объектов.
Целью работы является:
1) перемножение полиномов;
2) нахождение корней полинома, с применением метода Ньютона, Берстоу, Лина.
1. Операции над полиномами
1.1 Умножение полиномов
Возьмем для примера многочлены n-ой и m-ой степеней:
A(x)=a0 + a1*x + a2*x2 +…+ an*xn и B(x)=b0 +b1*x + b2*x2+ …+ bm*xm
Тогда произведением многочленов будет являться другой многочлен вида
D(x) = d0 + d1*x + d2*x2 + …+ dn+m*xn+m , где
dk=∑i+j=k(aibj) ; k=0...m+n
В частности,
d0=a0b0, d1=a0b1+a1b0 ... dn+m=anbm.
Также, если представить полиномы в виде векторов: А=(a0 a1 a2…an) а B=(b0 b1 b2...bn)
тогда произведением этих векторов будет являться матрица (n*m):
-
b0
b1
b2
…
bm
a0
a0 b0
a0 b1
a0 b2
…
a0 bm
a1
a1 b0
a1 b1
a1 b2
…
a1 bm
a2
a2 b0
a2 b1
a2 b2
…
a2 bm
…
…
…
…
…
…
an
an b0
an b1
an b2
…
an bm
с помощью которой можно определить значения вектора D =(d0 d1 d2…dm), которые будут равны суммам элементов лежащих на диагоналях.
Для примера возьмем два полинома 4-ой и 3-ей степени:
А4(x)=2+x+2x^2+x^3+2x^4
B3(x)=1+2x+x^2+2x^3
-
1
2
1
2
2
2
4
2
4
1
1
2
1
2
2
2
4
2
4
1
1
2
1
2
2
2
4
2
4
Следовательно А4(x)* B3(x)=С7(x)
С7(x)=2+5x +6x^2+10x^3+8x^4+9x^5+4x^6+4x^7
Программа на С++ для перемножения полиномов
#include <conio.h>;
#include <stdio.h>
#include <iostream.h>;
#include <stdlib.h>;
#include <math.h>;
void main()
{
clrscr();
float a[100],b[100],c[200];
int i,j,k,m,n;
printf("Vvedite stepen' polinoma An(x) \n");
cout<<"n"<<"=";
cin>>n;
printf("Vvedite stepen' polinoma Bm(x) \n");
cout<<"m"<<"=";
cin>>m;
printf("Vvedite koefficienty pri polinome: An\n");
for(i=0;i<=n; i++)
{
cout<<"a"<<i<<"=";
cin>>a[i];
}
printf("Vvedite koefficienty pri polinome:Bm(x)\n");
for(j=0;j<=m;j++)
{
cout<<"b"<<j<<"=";
cin>>b[j];
}
k=0;
while(k<=n+m)
{
c[k]=0;
for(i=0;i<=n;i++)
for(j=m;j>=0;j--)
{
if((i+j)==k)
{
c[k]=c[k]+a[i]*b[j];
};
};
if (k==0)
printf("znacheniya vektora\nC[%i]=%5.2f \n",k,c[k]); else
printf("C[%i]=%5.2f \n",k,c[k]);
k=k+1;
};
getch();
}