Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
На сортировку / 4 / практика каз.doc
Скачиваний:
24
Добавлен:
20.02.2017
Размер:
1.67 Mб
Скачать

1.2 Түбірді іздеу үшін Надстройка-Поиск решения қолдану

Бұл мәселені шешу үшін MS Excel программасы басқа әдісті ұсынады – надстройка-Поиск решения.

Ескерту: бұл надстройка MS Excel программасында келісім бойынша орнатылмайды және активтендірілмейді. Надстройка-Поиск решения іске қосу үшін Сервис – Надстройки-Поиск решения белгісін орнату қажет.

Теңдеу 1-нші формада жазылады. В3 ұяшығына бастапқы жуықтау енгізіледі - х= (0.8), ал В4 ұяшығына – =В3^3-17*В3+12 формуласы орнатылады (1.2.- сурет).

1.2. - Сурет

Ары қарай Сервис – Поиск решения қолданылады.

Установить целевую ячейку өрісінде мақсатталған ұяшық ретінде формула қойылған В4 ұяшығы қолданылады. Надстройка-Поиск решения мақсатталған ұяшық 0-ге тең болғанға дейін шешімін іздеуді жалғастырады (өйткені теңдеудің оң бөлгінде 0 тұр).

Ол үшін ауыстырғышты по значению: күйіне қойып, ал сәйкес өріске 0 мәнін енгізу керек. Изменяя ячейки: өрісінде жобаланған мән орналасқан - В3 ұяшық адресі енгізіледі.

Барлық көрсеткіштер енгізілгеннен кейін Орындау кнопкасын шертіңіз.

Надстройка-Поиск решения көмегімен 0,73-ке тең түбір табылды. Басқа түбірлерді табу үшін Жобаланған мәнді өзгертіп Надстройка-Поиск решения командасын қайта жіберу керек.

Надстройка-Поиск решения артықшылығы: қолдануы қарапайым және теңдеудің барлық түбірлерін табуға мүмкіндік береді.

1.3 Кесіндіні қақ бөлу алгоритмі (дихотомия әдісі).

Берілген  оң мәнінен аспайтын қателікпен түбірдің мәнін табу қажет. Кесіндіні қақ бөлу әдісін қолдануға болады.

Түбір орналасқан [a,b] кесінді ортасын алып (яғни координатасы с=(а+b)/2 нүктесін) түбірді іздеу диапазонын кішірейтуге болады: f (с) таңбасына байланысты [a,b] кесіндісінен [a,c] кесіндісіне немесе [c,b] кесіндісіне өту керек: егер f(a)f(c)<0, онда [а,с] кесіндісіне өтеді, егер f(a)f(c)>0, онда [c,b] кесіндісіне өтеді. Егер содан кейін кесіндінің ортасын тауып және ол үшін f(x) функциясының мәнін есептесе, онда тағы да іздеу диапазонын кішірейтуге болады және ары қарай тура солай жүреді. Бірнеше қадамнан кейін ұзындығы берілген  санынан кіші болатын кесінді табылады.

Бұл әдісті қолдану С++ алгоритмдік тілінде жазылған программада көрсетілген.

Әдістің артықшылығы: электронды кестеде, алгоритмдеу тілдерінде оңай іске асады. Алгоритмдеу тілдерінде бардық түбірлерді табуға мүмкіндік береді.

Әдістің кемшілігі: f(x) өте кіші болса және f(x) мәнін есептеу қателігі оның мәнінен үлкен болғанда f(x)-тің жуық мәні бойынша әрқашанда f(x)<= 0 теңсіздігінің дұрыс екенін табу мүмкін емес.

Бұл алгоритмді іске асыратын программаның сұлбасы: a және b айнымалылары үшін a<b теңсіздігі орынды және f(a)f(b)<0. fa мәні f(a), с – [a,b] кесіндісінің ортасын білдіреді, fc - f(c) тең.

Бұл программа бір түбірді табуға мүмкіндік береді. Сондықтан алдын-ала а және b шекараларын сол кесіндіде тек бір түбір ораналасатындай етіп дәл анықтау керек (графикалық әдісті қолдануға болады). Бұл әртүрлі а және b мәндерін көрсете отырып әртүрлі түбірледі табуға мүмкіндік береді. Нақты бір f(x)=x3-17*x+12 функциясы үшін, түбірлерінің бірі [0,2] кесіндісінде жатса а=0,b=2 программа келесі түрде болады

#include<iostream.h>

#include<conio.h>

#include<math.h>

float f(float x) // нақты бір функция мәнін есептейтін функция

{float ff;

ff=x*x*x-17*x+12;

return (ff);}

void main() // Негізгі функция

{float a,b,c,fa,fc,eps; int n=0;

clrscr();

cin>>a>>b>>eps;

fa=f(a);

do

{ c=(b+a)/2;

fc=f(c);

if (fa*fc<0) b=c;

else

{

a=c;fa=fc;

} cout<<c<<endl;n=n+1;

} while (b-a>eps) ;

cout<<a<<endl;

cout<<n<<endl;

}

Соседние файлы в папке 4