Тесты на нахождение наибольшего общего делителя двух многочленов 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Тесты на нахождение наибольшего общего делителя двух многочленов



           Возьмем два многочлена, и найдем НОД сами, а затем сверим результат с работой программы.

1. Даны два многочлена А=x3 +3x2 +3x+2 и В=x3+2x2 +2x+1. Применив алгоритм Евклида, получили НОД(А,В)= x2 +x+1;

Результаты работы программы:

 

Первый многочлен:

Введите степень многочлена (натуральное число) 3

Введите свободный элемент 2

Введите x в степени 1 3

Введите x в степени 2 3

Введите x в степени 3 1

y=x3+3x2+3x+2

 

Второй многочлен:

Введите степень многочлена (натуральное число) 3

Введите свободный элемент1

Введите x в степени 1 2

Введите x в степени 2 2

Введите x в степени 3 1

y=x3+2x2+2x+1

 

Наибольший общий делитель двух многочленов:

y=1x2+1x+1

 

Результаты расчетов «вручную» и при помощи программы совпадают.

 

2. Даны два многочлена А=x2 –x-3 и В=x+1. Применив алгоритм Евклида, получили НОД(А,В)= -1;

Результаты работы программы:

Первый многочлен:

       Введите степень многочлена (натуральное число) 2

       Введите свободный элемент-3

       Введите x в степени 1 -1

       Введите x в степени 2 1

       y=1x2-x-3

 

Второй многочлен:

       Введите степень многочлена (натуральное число) 1

       Введите свободный элемент 1

        Введите x в степени 1 1

         y=x+1

 

Наибольший общий делитель двух многочленов:

       y=1

 

Результаты расчетов «вручную» и при помощи программы совпадают.

 

3. Даны два многочлена А=x2 –x-3 и В=x+1. Применив алгоритм Евклида, получили НОД(А,В)= -1;

Результаты работы программы:

Первый многочлен:

       Введите степень многочлена (натуральное число) 3

       Введите свободный элемент -1

      Введите x в степени 1 2

       Введите x в степени 2 -2

       Введите x в степени 3 1

       y=1x3-2x2+2x-1

 

Второй многочлен:

       Введите степень многочлена (натуральное число) 3

       Введите свободный элемент 1

      Введите x в степени 1 0

      Введите x в степени 2 -1

      Введите x в степени 3 1

     y=1x3-1x2+1

 

Наибольший общий делитель двух многочленов:

      y=-1x2+2x-2

 

Результаты расчетов «вручную» и при помощи программы совпадают.

 


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

    Открываем программу «Многочлены» двойным щелчком мыши. Затем следуем инструкциям программы.

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

Многочлены представлены в стандартном виде, начиная от большей степени.

«^» обозначает, какая степень у данного x.


Заключение

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

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


Список использованных источников

1. Ю. А.  Макарычев  Алгебра. 7 класс. Учебник для общеобразовательных учреждений – СПб.: Просвещение, 2007

2. Н. Я. Виленкин Математика. 5 класс. Учебник для общеобразовательных учреждений – СПб.: Мнемозина, 2005

3. И. Г. Семакин, А.П. Шестаков Основы программирования. Среднее профессиональное образование – СПб.: Высшая школа, НМЦ СПО, Мастерство, 2001


Приложения

1. Найти наибольший общий делитель многочленов P(x) и Q(x).

#include <iostream>#include <cmath> #include <string> using namespace std; class mnogochlen { int stepen; int koof[100]; public:                      void sozdanie(); /* создание многочлена */      void vivod(); /* вывод многочлена */      mnogochlen operator +(mnogochlen m); /* сложение многочленов */      mnogochlen operator -(mnogochlen m); /* вычитание многочленов */      mnogochlen operator *(mnogochlen m); /* умножение многочленов */      bool operator ==(mnogochlen m); /* равны ли многочлены? */      bool operator!=(mnogochlen m); /* не равны ли многочлены? */      mnogochlen proizvodnaa(); /* нахождение производной от многочлена */      double znachenie(double x); /* нахождение значения при заданном x */      mnogochlen stepeny(int k); /*возведение многочлена в степень*/      mnogochlen operator /(mnogochlen m); /*деление многочленов */      mnogochlen operator %(mnogochlen m); /*нахождение остатка от деления*/      }; // находжение остатака от деления mnogochlen mnogochlen:: operator %(mnogochlen m){ mnogochlen c,d,g; bool a;    int i,l,k; l=stepen-m.stepen; for (i=0;i<100;i++) {c.koof[i]=0; d.koof[i]=0;} while (stepen>=m.stepen){ c.stepen=stepen-m.stepen;  c.koof[c.stepen]=koof[stepen]/m.koof[m.stepen]; d=m*c; * this =* this -d; }               c.stepen=l; return * this;} //Деление многочленов mnogochlen mnogochlen:: operator /(mnogochlen m){ mnogochlen c,d,g;    int i,l,k; l=stepen-m.stepen; for (i=0;i<100;i++) {c.koof[i]=0; d.koof[i]=0;} while (stepen>=m.stepen){ c.stepen=stepen-m.stepen;  c.koof[c.stepen]=koof[stepen]/m.koof[m.stepen]; d=m*c; * this =* this -d; }                  c.stepen=l; return c;}    /* Нахождение производной от многочлена */ mnogochlen mnogochlen::proizvodnaa(){mnogochlen c; int i, j;       c.stepen=stepen; for (i=1;i<=stepen;i++)   {c.koof[i-1]=koof[i]*i;}c.stepen--;          return c; } /* Равны ли многочлены? */ bool mnogochlen:: operator ==(mnogochlen m){ bool priznak;    int i; if (stepen!=m.stepen){priznak=0;} else { for (i=0;i<=stepen;i++) {          if (koof[i]!=m.koof[i]) {priznak=0; break;}   else {priznak=1;}      }        } return priznak; } /* не равны ли многочлены? */ bool mnogochlen:: operator!=(mnogochlen m){ bool priznak;    int i; if (stepen!=m.stepen){priznak=0;} else { for (i=0;i<=stepen;i++) {          if (koof[i]!=m.koof[i]) {priznak=1; break;}   else {priznak=0;}      }        } return priznak; }   /* умножение многочленов */ mnogochlen mnogochlen:: operator *(mnogochlen m) {mnogochlen d; int i,j,k; k=stepen+m.stepen; for (i=0;i<=k;i++) {               d.koof[i]=0; } for (i=0;i<=stepen;i++) {                         for (j=0;j<=m.stepen;j++) {                               d.koof[i+j]+=koof[i]*m.koof[j];                         } }     d.stepen=m.stepen+stepen;      return d; } /* разность многочленов */ mnogochlen mnogochlen:: operator -(mnogochlen m){mnogochlen d; int i,max; if (stepen>m.stepen) max=stepen; else max=m.stepen; if (stepen>m.stepen) { for (i=m.stepen+1;i<=max;i++)              m.koof[i]=0;} else      {     for (i=stepen+1;i<=max;i++) koof[i]=0;      }      for (i=0;i<=max;i++) {   d.koof[i]=koof[i]-m.koof[i]; }  d.stepen=max;          for (i=max;i>0;i--)  { if (d.koof[i]==0){d.stepen--;} else { break;}}        return d;} /* нахождение значения многочлена */ double mnogochlen::znachenie(double x){ double y; int i;        y=koof[0];        for (i=1;i<=stepen;i++)   {y+=pow(x,i)*koof[i];}          return y;} /* сложение многочленов */ mnogochlen mnogochlen:: operator +(mnogochlen m){mnogochlen d; int i,max; if (stepen>m.stepen) max=stepen; else max=m.stepen; if (stepen>m.stepen){              for (i=m.stepen+1;i<=max;i++)               m.koof[i]=0;} else       {        for (i=stepen+1;i<=max;i++)               koof[i]=0; }        for (i=0;i<=max;i++) {   d.koof[i]=koof[i]+m.koof[i]; }  d.stepen=max;          for (i=max;i>0;i--)  { if (d.koof[i]==0){d.stepen--;} else { break;}}        return d; return d;} /* Создание многочлена */ void mnogochlen::sozdanie(){ int i; cout<<”Введите степень многочлена (натуралное число)"<<endl; cin>>stepen;  cout<<"Введите свободный элемент"<<endl; cin>>koof[0];       for (i=1;i<=stepen;i++)      { cout<<"Введите x в степени "<<i<<" "; cin>>koof[i]; }} /* вывод многочлена */ void mnogochlen::vivod(){ int j,i; cout<<"y="; if (stepen==0){cout<<koof[0];} else { if (koof[stepen]>0)     {                       cout<<koof[stepen]<<"x^"<<stepen;     }      else {                        if (koof[stepen]<0) {cout<<koof[stepen]<<"x^"<<stepen;} else {cout<<"";} }     j=stepen-1;      for (i=j;i>=1;i--)     { if (koof[i]>0)     { cout<<"+"<<koof[i]<<"x^"<<i;}            else { if (koof[i]<0) {cout<<koof[i]<<"x^"<<i;}        else {cout<<"";}} } if (koof[0]>0)     { cout<<"+"<<koof[0]<<endl;}            else { if (koof[0]<0) {cout<<koof[i]<<endl;}        else {cout<<endl;} }}}   /* возведение многочлена в степень */  mnogochlen mnogochlen::stepeny(int k){ int i; mnogochlen d,c; c.stepen=stepen; for (i=0;i<=stepen;i++) {c.koof[i]=koof[i];} d.stepen=0;    d.koof[0]=1; for (i=1;i<=k;i++) {d=d*c; } return d;} int main() { mnogochlen P,Q,c; double s,r;   system("chcp 1251");    cout<<"Введите первый многочлен”<<endl;     P.sozdanie();     P.vivod();     cout<<"Введите второй многочлен"<<endl;     Q.sozdanie();     Q.vivod();     cout<<"Введите степень, в которую следует возвести первый многочлен"<<endl;     cin>>s;     P=P.stepeny(s);     cout<<" Введите степень, в которую следует возвести второй многочлен "<<endl;     cin>>r;     Q=Q.stepeny(r);     cout<<"Результат операций P^s-Q^r"<<endl;     c=P-Q;      c.vivod();     system ("PAUSE"); return 0;     }

2. На



Поделиться:


Последнее изменение этой страницы: 2020-03-02; просмотров: 134; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.191.171.235 (0.019 с.)