Смекни!
smekni.com

Разработка алгоритма программы нахождения производной методом неопределённых коэффициентов (стр. 3 из 3)

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

При невыполнение данного условия программа переходит к следующему оператору if и производит те же самые действия, что и с первым оператором. Так продолжается до тех пор, пока в программе не выполнится выше указанное условие.

else if(g!=0){

c1=c0;c2=(c1+a)/2;c3=(c2+c)/3;c4=(c3+e)/4;c5=(c4+g)/5;c5=(c4+g)/5;

cout<<"Poluchennoe uravnenie:"<<"y2="<<c1<<"+"<<c2<<"x"<<"+"<<c3<<"x*x"<<"+"<<c4<<"x*x*x"<<"+"<<c5<<"x*x*x*x"<<endl;}

else if(e!=0){

c1=c0;c2=(c1+a)/2;c3=(c2+c)/3;c4=(c3+e)/4;c5=(c4+g)/5;

cout<<"Poluchennoe uravnenie:"<<"y2="<<c1<<"+"<<c2<<"x"<<"+"<<c3<<"x*x"<<"+"<<c4<<"x*x*x"<<endl;}

else if(c!=0){

c1=c0;c2=(c1+a)/2;c3=(c2+c)/3;c4=0;c5=0;c6=0;

cout<<"Poluchennoe uravnenie:"<<"y2="<<c1<<"+"<<c2<<"x"<<"+"<<c3<<"x*x"<<endl;}

else if(a!=0){

c1=c0;c2=(c1+a)/2;c3=0;c4=0;c5=0;c6=0;

cout<<"Poluchennoe uravnenie:"<<"y2="<<c1<<"+"<<c2<<"x"<<endl;}

При выполнении условия и выводе на экран уравнения, программа выводит на экран отдельно от полученного уравнения неопределённые коэффициенты.

cout<<"c1="<<c1<<endl<<"c2="<<c2<<endl<<"c3="<<c3<<endl<<"c4="<<c4<<endl<<"c5="<<c5<<endl<<"c6="<<c6<<endl;

В случае невыполнения ни одного из пяти условий программа выдаст сообщение об ошибке:

else {cout<<"Uravnenie smisla ne imeet"<<endl;}

Выводы:

Произведённые в предыдущих пунктах исследования позволили составить алгоритм поиска значений неопределённых коэффициентов;

1) Обоснован выбор языка программирования;

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

3) На основе составленного алгоритма составлена программа поиска неопределённых коэффициентов.


3.Экспериментальное исследование алгоритма и программы

3.1 Решение задачи методом неопределённых коэффициентов

Метод неопределённых коэффициентов состоит в том, что решение уравнения ищется в форме ряда с неизвестными коэффициентами:

y=a + b(x-x0)+c(x-x0)2+ …,

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

Применим метод неопределённых коэффициентов к рассмотренной выше задаче. Так как x0 = 0, то пишем

y=a+bx+cx2 +dx3 +ex4

y'=b+2cx+3dx2+4ex3

Подставляя x0 = 0, получаем в силу начального условия, что a=1.Производим подстановку ряда в уравнение y'=y-2x2-3x:

b+2cx+3dx2= a+bx+cx2 +dx3 -2 x2-3x

Приравнивая коэффициенты при одинаковых степенях x, приходим к соотношениям:

a=b; c=(b-3)/2; d=(c-2)/3

И так мы получаем, что b=1, c= -1; d= -1.


3.2 Тестирование программы

Решим при помощи программызадачу, рассматриваемую в прошлом разделе:

Для этого подставим коэффициенты перед переменной x, во всех степенях начиная с наименьшей соответственно.

При решении двумя способами результаты совпали.

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

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

· Центральный процессор: IntelPentium 166 MHz(рекомендуется P2 400 MHz)

· Операционныесистемы: Microsoft Windows 98, Windows Millennium (Me), Windows 2000, Windows ХР

· Оперативная память: 128 Mb (рекомендуемая 256 Mb)

· Памяти на жестком диске: 115 Mb (при компактной установке),

675 Mb (при полной установке), 580 Mb (при профессиональной установке),

480 Mb (при персональной установке)

· CD-ROM drive

Монитор с разрешением VGA и выше.

Заключение

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

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

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

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


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

1.«Основы численных методов»-Л.И Турчак (1987г);

2. «Численные методы» Бохвалов Н.В.


Приложение A

#include <iostream.h>

double main(){

cout<<"Programma dli naxoshdenui neopredelennux koefficientov"<<endl;

cout<<"Rukovodstvo:"<<endl;

cout<<"Vvedite koeffichenti pered X, nachinai s naimen'shey stepeni X-a"<<endl;

cout<<"Primechanie:"<<endl;

cout<<"Esli v uravnenie otsutstvuet X c kakoy libo stepen'u, ne bol'she 5-oy,"<<endl;

cout<<"to ego koefficent = 0"<<endl;

cout<<"Uslovia:"<<endl;

cout<<"Maximal'nai stepen' X-a ne bol'she 5-oy"<<endl;

cout<<"Maximal'nai stepen' y-ka ne bol'she 1-oy"<<endl;

cout<<"x0=0 , c0=1"<<endl;

int c0=1;

double c1,c2,c3,c4,c5,c6;

double a,c,e,g,j;

cin>>a;

cin>>c;

cin>>e;

cin>>g;

cin>>j;

if(j!=0){

c1=c0;c2=(c1+a)/2;c3=(c2+c)/3;c4=(c3+e)/4;c5=(c4+g)/5;c6=(c5+j)/6;

cout<<"Poluchinoe uravnenie:

y2="<<c1<<"+"<<c2<<"x"<<"+"<<c3<<"x*x"<<"+"<<c4<<"x*x*x"<<"+"<<c5<<"x*x*x*x"<<"+"<<c6<<"x*x*x*x*x"<<endl;}

else if(g!=0){

c1=c0;c2=(c1+a)/2;c3=(c2+c)/3;c4=(c3+e)/4;c5=(c4+g)/5;c5=(c4+g)/5;

cout<<"Poluchinoe uravnenie:

y2="<<c1<<"+"<<c2<<"x"<<"+"<<c3<<"x*x"<<"+"<<c4<<"x*x*x"<<endl;}

else if(e!=0){

c1=c0;c2=(c1+a)/2;c3=(c2+c)/3;c4=(c3+e)/4;c5=(c4+g)/5;

cout<<"Poluchinoe uravnenie:

y2="<<c1<<"+"<<c2<<"x"<<"+"<<c3<<"x*x"<<endl;}

else if(c!=0){

c1=c0;c2=(c1+a)/2;c3=(c2+c)/3;c4=0;c5=0;c6=0;}

else if(a!=0){

c1=c0;c2=(c1+a)/2;c3=0;c4=0;c5=0;c6=0;}

else {cout<<"Uravnenie smisla ne imeet"<<endl;}

cout<<"c1="<<c1<<endl<<"c2="<<c2<<endl<<"c3="<<c3<<endl<<"c4="<<c4<<endl<<"c5="<<c5<<endl<<"c6="<<c6<<endl;

return 0;}

Приложение Б