МЕТОДИ УТОЧНЕННЯ КОРЕНІВ НЕЛІНІЙНИХ РІВНЯНЬ

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
Комп’ютеризовані системи
Кафедра:
Не вказано

Інформація про роботу

Рік:
2010
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Комп’ютерні методи дослідження систем керування

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” ІКТА кафедра „КОМП’ЮТЕРИЗОВАНІ СИСТЕМИ, АВТОМАТИКА І УПРАВЛІННЯ” ЗВІТ до лабораторної роботи № 3 З КУРСУ “Комп’ютерні методи дослідження систем керування” на тему: „ МЕТОДИ УТОЧНЕННЯ КОРЕНІВ НЕЛІНІЙНИХ РІВНЯНЬ ” Варіант № 3 Мета роботи: вивчити основні методи уточнення коренів нелінійних рівнянь з одним невідомим. № п/п Завдання (метод та проміжок локалізації кореня)  3 Метод хорд    №3     Метод хорд У літературі цей метод також зустрічається під назвами методу помилкового положення, методу лінійного інтерполювання та методу пропорційних частин. Нехай нам дано відрізок  на якому є локалізовано корінь , при цьому . Ідея методу хорд полягає в тому, що на достатньо малому проміжку  дуга кривої  замінюється стягуючою хордою. В якості наближеного значення кореня  приймається крапка перетину хорди з віссю  (рис. 5). Запишемо рівняння хорди   (3.1) У крапці перетину з віссю  , а . Перепишемо рівняння (3.1)  (3.2) Далі обчислюємо значення функції . Якщо , тоді ділянку  відкидаємо з розгляду, в іншому випадку відкидаємо ділянку . Це реалізовується шляхом присвоєння координаті  чи  значення . Після цього будуємо нову пряму та шукаємо її перетин з віссю  згідно такого рівняння  (3.3) Ітераційний процес завершується згідно умови близькості двох послідовних наближень  (3.4) або згідно умови (2.6). Загальний алгоритм методу хорд   ;    якщо  {} інакше {} Умова збіжності    Опис алгоритму На початку алгоритму задаємо значення величин ,  та відносну похибку  у відсотках. При цьому приймаємо як найперше наближення для , наприклад, значення координати . Обчислюємо значення функції у координатах , , уточнене значення  і значення функції для нього  та згідно умови  виконуємо наступне звуження робочого відрізку. Здійснюємо перевірку умови збіжності. Якщо вона не виконується, то процес уточнення повторюємо (п.2). Для перевірки вірності роботи алгоритму підставляємо наше уточнене значення кореня  у функцію . Значення функції має бути близьким нулю, у залежності від вибраного значення . Якщо ж нам замість значень відрізку  дано лише одну з його координат, наприклад , та поставлено завдання самому віднайти відрізок локалізації кореня , то підхід буде ідентичним тому, що описаний у попередньому методі поділу проміжку навпіл. Загальний алгоритм методу хорд з пошуком ділянки локалізації  ;  якщо ( та ) {}   поки  ;  ;    Пошук ділянки локалізації:   ;    якщо  {} інакше {} Умова збіжності    Ітераційний процес: Опис алгоритму На початку алгоритму задаємо значення величин ,  та відносну похибку  у відсотках. Визначаємо напрямок пошуку ділянки локалізації кореня . Обчислюємо координату . У циклі виконуємо пошук ділянки локалізації кореня . Приймаємо як найперше наближення для , наприклад, значення координати . Ітераційний процес методу: обчислюємо значення функції у координатах , , уточнене значення  і значення функції для нього  та згідно умови  виконуємо наступне звуження робочого відрізку. Здійснюємо перевірку умови збіжності. Якщо вона не виконується, то процес уточнення повторюємо (п.3). Для перевірки вірності роботи алгоритму підставляємо наше уточнене значення кореня  у функцію . Значення функції має бути близьким нулю, у залежності від вибраного значення . Блок-схема розробленої програми:  Список змінних, які використовуються в коді програми, та їх пояснення: A[n][n] – матриця розмірністю 4*4; P[n], inx[n], V[n][n], X[n], Y[n], C[n][n], max, value, z ,p, k, s, b – змінні типу double; B[n] – стовпець вільних членів; l, f, h, w, i, j – змінні типу int; Остаточна версія програми //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include<math.h> #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { double x, b, xold, h=0.01 , a=0.1, ee=0.000001; double fa, fb, fx; b = a + h; fa = sin(a/4)-log(a); fb = sin(b/4)-log(b); if((fabs(fb))>(fabs(fa))&& fa*fb > 0) h= -1 * h; b=a+h; fb=sin(b/4)-log(b); while(fa*fb<0) { a=b; b=a+h; fa=sin(a/4)-log(a); fb=sin(b/4)-log(b); } x=a; do { xold=x; fa=sin(a/4)-log(a); fb=sin(b/4)-log(b); x= a-fa*(b-a)/(fb-fa); fx=sin(x/4)-log(x); if(fx*fa>0) a=x; else b=x; } while(fabs((x-xold)/x)*100 < 0.05); Memo1->Lines->Add(x); Memo1->Lines->Add(sin(x/4)-log(x)); } //--------------------------------------------------------------------------- Результат роботи програми  Висновок На цій лабораторні роботі я вивчив основні методи уточнення коренів нелінійних рівнянь з одним невідомим.
Антиботан аватар за замовчуванням

28.01.2013 18:01-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!