Главная страница
Навигация по странице:

  • Список рекомендованої літератури

  • Основні елементи мови пакета Scilab

  • Посібник по ЧМ. Наближення функцій


    Скачать 0.83 Mb.
    НазваниеНаближення функцій
    АнкорПосібник по ЧМ.doc
    Дата18.06.2018
    Размер0.83 Mb.
    Формат файлаdoc
    Имя файлаПосібник по ЧМ.doc
    ТипДокументы
    #20442
    страница2 из 3
    1   2   3


    3. Нелінійні алгебричні рівняння

    Розглянемо систему нелінійних рівнянь (СНР) з n невідомими:

    . (3.6)

    Її можна записати у векторному вигляді:

    (3.7)

    де і .

    Розв’язання (3.6) — набагато складніша задача, ніж розв’язання одного рівняння. Такі системи, як правило, розв’язують лише ітераційними методами.

    Якщо то за нульове наближення до розв’язку можна взяти координати точок перетину графіків

    і

    До речі, якщо де замість такого рівняння можна розглядати систему нелінійних рівнянь:

    (3.8)

    де



    Для трьох і більше невідомих задовільних способів знаходження нульових наближень немає, але іноді можна вибрати, виходячи з фізичних міркувань або аналізу задачі.

    Удаючись до методу Ньютона (МН) знаходження розв’язку (3.6), якщо відомий будь-який наближений розв’язок до , здійснюють розв’язанням методом Гаусса такої СЛАР відносно приростів :

    (3.9)

    Тут

    Розв’язавши СЛАР методом Гаусса (МГ), знайдемо наступні наближення:

    (3.10)

    За вдалого вибору розрахунки за методом Ньютона збігатимуться, і досить швидко (3 – 5 ітерацій).

    На практиці ітерації припиняють за виконання умови

    (3.11)
    Приклад 3.2. Знайдемо методом Ньютона наближене значення розв’язку СНР



    за початкового наближення =(1.5, -1.5), яке є точкою перетину графіків і
    Лістинг 3.2. Файл newton:

    // newton

    // Розв’язання СНР (3.7) методом Ньютона (3.9)

    function [s , x1] = newton(x, eps , smax);

    // x – нульове наближення, eps – точність визначення

    // кореня, smax – допустиме число ітерацій.

    // s – число виконаних ітерацій, x1 – розв’язок (3.6)

    s=0;

    while (s<=smax) then

    s=s+1;

    // Звернення до sfdf для обчислення складових СНР (3.9)

    [ff ,dd] = sfdf(x);

    //Модифікація ПЧ СНР (3.9)

    ff(1)=-ff(1);

    ff(2)=-ff(2);

    // Розв’язання СЛАР (3.9) МГ на кожній ітерації

    CC=rref([dd ff]); [NN,MM]=size(CC); dx =CC(:,MM);

    // Уточнення розв’язку за (3.10)

    x(1)=x(1)+dx(1);

    x(2)=x(2)+dx(2);

    // Перевірка виконання умови (3.11)

    if(sqrt((dx(1)^2+dx(2)^2)/2)<=eps) then

    break;

    end

    end;

    x1=x

    endfunction;

    // Функція sfdf формування складових СНР (3.9)

    function [ff ,dd] = sfdf(x);

    x1=x(1); x2=x(2);

    // Обчислення матриці СНР (3.9)

    dd (1,1) = x1*2; dd(2,1) = exp(x1);

    dd (1,2) = x2*2; dd(2,2) = 1;

    // Обчислення ПЧ СНР (3.9)

    ff(1)=x1*x1+x2*x2-4; ff(2)=exp(x1)+x2-1;

    endfunction;

    //main program

    // Коментар до фактичних параметрів функції newton

    //[s , x1] = newton( x, eps , smax)

    [s , x1] = newton([1.5 -1.5], 0.001 , 9)
    Результати виконання newton

    X1(1) = 1.0041687 x1(2) = - 1.7296373 s = 4.

    Список рекомендованої літератури

    Мусіяка, В.Г. Основи чисельних методів [Текст]: Підручник /В.Г. Мусіяка — К.: Вища освіта, 2004. — 240 с.

    Поршнев, С.В. Вычислительная математика[Текст]: Курс лекцій /С.В. Поршнев. — СПб.: БХВ — Петербург, 2004. — 320 с.

    Алексеев, Е.Р. Scilab: Решение инженерных и математических задач [Текст]: пособие /Е.Р. Алексеев, О.В. Чеснокова, Е.А.Рудченко. — М.: ALT Linux; Бином. Лаборатория знаний, 2008. – 260 с.

    http://window.edu.ru/window/library/pdf2txt?p_id=28168

    Павлова, М.И. Руководство по работе с пакетом Scilab [Текст] /М.И. Павлова. — http://www.csa.ru/

    zebra/my_scilab/

    Тропин, И.С. Численные и технические расчеты в среде Scilab (ПО для решения задач численных и технических вычислений) [Текст]: Учеб. пособие /И.С. Тропин, О.И. Михайлова, А.В. Михайлов. — М.: 2008. — 65 с.

    Baudin, М. Введение в Scilab [Текст]/ М. Baudin; перевод с англ.:А. Glebov. 2010 г.

    http://forge.scilab.org/upload/docintrotoscilab/files/introscilab-v1.3-ru.pdf .

    http://www.scilab.org.Exec-файл scilab-5.2.2.exe.

    Додатки

    Додаток 1

    Основні елементи мови пакета Scilab
    Пакет Scilab – діалогова система, яка дозволяє вводити команди й відстежувати результати їх виконання. Після пуску пакета Scilab в OS Windows за допомогою scilab-5.2.2.exe на екрані дисплея з’явиться наведене нижче командне вікно (консоль):

    ___________________________________________

    scilab-5.2.2
    Консорціум Scilab (DIGITEO)

    Авторські права належать INRIA, ©1989–2010

    Авторські права належать ENPC, ©1989–2007

    ___________________________________________
    Команда запуску:

    завантаження початкового середовища

    -->
    Символ --> є запрошення до введення команд. Після цього символу вводять команду або програму. Їх введення завершується натисненням на клавішу <Enter>.

    Прикладом найпростішої програми мовою Scilab є програма gauss, яка реалізує метод Гаусса під час розв’язання СЛАР:



    // gauss

    A=[1 2 -3; 4 -1 1; 2 6 -1]; b=[ 0; 4; 7];

    C=rref([A b]); [NN,MM]=size(C); x=C(:,MM); x=x.'

    Результат виконання програми gauss: x = 1. 1. 1.
    Перший рядок – коментар, другий – формування матриціA та вектора b СЛАР. Перші три команди 3-го рядка саме й реалізують метод Гаусса розв’язання СЛАР, а 4-й – транспонує матрицю стовпчик (вектор) на матрицю-рядок для його друку у вигляді рядка.

    Якщо команда завершується крапкою з комою (;), то результат роботи команди не виводиться на консоль, у іншому ж випадку результат виводиться. Довгі командні рядки можна розбивати на два, додаючи в місці розбиття три крапки (…).

    Математичні вирази, як і знаки дій, записують подібно до інших мов програмування.

    Як і в інших мовах програмування, об’єктами Scilab є скалярні величини, вектори (одновимірні масиви) та матриці (багатовимірні масиви).

    Визначені в Scilab стандартні скалярні величини починаються з % (%pi - число π, %e – число e=2.71828 …).

    Порядок формування матриць і векторів у Scilab показано на прикладі програми gauss. Індекси елементів векторів та матриць починаються з одиниці. Імена змінних завжди починаються з букв.

    У пакеті Scilab є вбудовані функції (sin(x), cos(x), …), а втім того їх можуть будувати і користувачі двома способами:

    deff('f = ff(x)','f = log(1+x)'); y=ff(2)

    або

    function [f] =ff(x);

    f = log(1+x)

    endfunction; y=ff(2)

    Результат виконання обох програм однаковий: y = 1.0986123 .

    У пакеті Scilab прийнята загальновідома конструкція циклу. Цикл, як і умовний оператор, завершується командою еnd, наприклад:

    for n=n1:step:n2

    // n - змінна циклу, n1 і n2 початкове і кінцеве значення змінної циклу n,

    // step - крок змінювання i (якщо крок циклу step=1, його можна опускати)

    a=n*n; // тіло цикла

    еnd

    Приклад циклу while

    x=0;

    while x<10

    x=x^2+1

    end

    Виконання циклів while і for можна перервати командою break, наприклад,

    for i=1:n

    if(xj>=xx(i)&xj
    k=i;

    break;

    end

    end;

    Застосування команди plot для побудови графіка показано у процесі розв’язання задачі коливання математичного маятника у пакеті Scilab

    function dy = syst(t,y)

    dy=zeros(2,1); dy(1) = y(2); dy(2) = - y(1);

    endfunction;

    x0=[2;0];t0=0;t=0:0.5:2;

    y=ode(x0,t0,t,syst)

    plot(t,y); xgrid();
    y =

    2. 1.7551653 1.0806047 0.1414745 - 0.8322937

    0. - 0.9588513 - 1.6829421 - 1.9949901 - 1.818595


    На графіку верхня криварозв’язок u(x), а нижня крива – похідна від нього

    Додаток 2

    Завдання для лабораторних робіт із застосуванням числових методів розв’язання задач
    Вихідні дані для всіх завдань слід брати із відповідних таблиць згідно з одержаним шифром. Наприклад, якщо шифр 27964, то дані 1-го стовпчика необхідно брати з 2-го рядка, дані 2-го стовпчика – з 7-го рядка й т.д. Якщо у відповідній таблиці стовпчиків більше ніж 5, то потрібно взяти необхідну кількість перших цифр із шифру і доповнити ними заданий шифр. Наприклад, якщо у таблиці 8 стовпчиків, то новий шифр буде таким: 27964279.

    Текст робіт слід набирати на комп’ютері за допомогою текстового редактора Word і роздруковувати на одному боці аркуша білого паперу формату А4 (210×297 мм), дотримуючись таких розмірів полів: верхнє, ліве і нижнє – не менше 20 мм, праве – не менше 10 мм. Розмір шрифту повинен відповідати 14 (або 12) пунктам Times New Roman, міжрядковий інтервал при цьому має бути полуторний.
    Завдання 1. Інтерполяція функції поліномом Ньютона

    Побудувати інтерполяційний поліном у формі Ньютона для функції

    y(x)= k1 f1(x) + k2 f2(x) + C

    у точках , значення яких слід шукати за співвідношеннями

    a = 0.08 |k1|, b = 0.135 |k2|, ξ= а + k3 (b-a), = а + i h [ ; h=(b-a)/n].

    Необхідні дані взяти із табл. 1 відповідно до шифру. Значення сталої С підібрати так, щоб знак у(х) на відрізку [а,b] не змінювався й на кінцях відрізка функція не дорівнювала нулю.

    Одержаний ІПН застосувати для обчислення наближених значень y(x) у М точках, зокрема, серед них повинні бути вузли інтерполяції та точка ξ, у якій до того ж необхідно обчислити значення абсолютної похибки - та похибки інтерполяції rn (ξ).

    Побудувати графіки у(х) та за обчисленими їх М значеннями.

    Завдання 2. Інтерполяція функції вільними кубічними сплайнами

    Побудувати вільні кубічні сплайни для функції з попереднього завдання, взявши за вузли точки = а + i h [; h=(b-a)/N],й застосувати їх для обчислення значень y(x) у тих же точках, що й у завданні 1, та побудувати за обчисленими М значеннями графіки у(х) та s(x).

    Завдання 3. Наближення функції методом найменших квадратів

    Визначити коефіцієнти алгебричного полінома



    який апроксимує в середньому таблично задану функцію у(х) (із завдання 1) за знайденими її значеннями у точках = а + (i-1)h [; h=(b-a)/(N-1)] .

    Побудовану функцію φ(х) застосувати для обчислення наближених значень у(х) у тих же точках, що й у завданні 1, визначити середнє квадратичне відхилення φ(х) від у(х) та побудувати графіки функцій у(х) і φ(х).

    Завдання 4. Числове інтегрування

    Для заданої функції у(х) із завдання 1 обчислити значення інтеграла , застосовуючи КФ на рівномірних сітках = а + i h [; h=(b-a)/n].

    Завдання 6. Розв’язання систем нелінійних рівнянь

    Застосовуючи метод Ньютона та метод простих ітерацій, визначити один із розв’язків х=(х1, х2) системи нелінійних рівнянь з точністю ε

    f11, х2) = 0, f21, х2) = 0 . (1)

    Нульове наближення розв’язку знайти графічним способом. Функції f11, х2), f21, х2), що входять у (1), взяти з табл. 2 відповідно до шифру. Якщо графіки функцій f11, х2), f21, х2) не перетинаються, то, як і в завданні 5, до однієї з них слід додати сталу D, щоб вони перетнулись.

    Таблиця 1



    Рядок

    Стовпчик

    1

    2

    3

    4

    5

    f1(x)

    f2(x)

    k1

    k2

    k3

    1





    -1.5

    6.5

    1/3

    2





    2.0

    -7.0

    1/4

    3





    -2.5

    7.5

    1/5

    4





    3.0

    -8.0

    1/6

    5





    -3.5

    8.5

    1/7

    6





    4.0

    -9.0

    1/8

    7





    -4.5

    9.5

    1/9

    8





    5.0

    -10.0

    2/9

    9





    -5.5

    10.5

    2/3

    0





    6.0

    -11.0

    2/5

    Таблиця 2



    Рядок

    Стовпчик

    1

    2

    3

    4

    f11, х2)

    f21, х2)

    a

    b

    1

    sin (х12) - х1/b

    + -

    1.5

    6.5

    2

    sin (х12) - х1х2 -a/b

    + -

    2.0

    7.0

    3

    cos (х12) - х2/a

    + /b - 1

    2.5

    7.5

    4

    cos (х1-1/a)+х2 -1/b

    + - a/b

    3.0

    8.0

    5

    sec (х1х2+a/b) - х1 х1

    /b + /a - 1

    3.5

    8.5

    6

    cosec (х12/b) - х2х2

    + - b/a

    4.0

    9.0

    7

    sec (х1 х2-a/b) - х1 х1

    / + / - 1

    4.5

    9.5

    8

    sin (х1х2+a/b) - a/b

    /b + - 1

    5.0

    10.0

    9

    cos (х1-a/b)+х2 -1

    / + / - 1

    5.5

    10.5

    0

    cose (х1 х2) - a

    /a + /b - 1

    6.0

    11.0

    Додаток 3
    1   2   3


    написать администратору сайта