- •Модуль 1 (Лекції №1-3) Розв’язання нелінійних алгебраїчних і трансцендентних рівнянь Лекція 1
- •1. Методи розв’язання нелінійних рівнянь.
- •Одне рівняння
- •2. Теоретичні положення.
- •3. Чисельні методи розв’язання нелінійних рівнянь
- •3.1 Метод половинного ділення.
- •Лекція 2
- •3.2 Метод пропорційних частин (хорд)
- •3.3 Метод Рибакова
- •Лекція 3
- •3.4 Метод Ньютона (дотичних)
- •3.5 Метод січних
- •Лекція 4-5. Початкова обробка даних
- •Лекція 6-7 Інтерполяція функцій Постановка задачі інтерполяції
- •Поліноміальна інтерполяція
- •Багатоінтервальна інтерполяція
- •Інтерполяція для випадку рівновіддалених вузлів
- •Інтерполяційні формули Ньютона
- •Інтерполяційні формули Гаусса
- •Перша інтерполяційна формула Гауса:
- •Друга інтерполяційна формула Гауса:
- •Інтерполяційна формула Стірлінга
- •Інтерполяційна формула Бесселя
- •Інтерполяція для випадку довільних вузлів. Інтерполяційна формула Лагранжа
- •Лінійних алгебраїчних рівнянь.
- •Метод гауса.
- •Метод Рунге-Кута
- •Метод а.Н. Крилова послідовних наближень
- •Метод Адамса
- •2. Розробка програми
- •2.1 Обчислювальна схема методу Рунге-Кута:
- •2.2 Обчислювальна схема методу Адамса:
- •2.3 Обчислювальна схема методу Крилова:
- •2.4 Структура програми
- •2.5 Опис роботи програми
- •2.6 Опис інтерфейсу користувача
- •2.7 Приклад роботи програми
- •Список літератури:
- •Лекція 14-15.Чисельне інтегрування функцій
- •1. Вступ. Загальні відомості про чисельні інтегрування.
- •2. Огляд методів чисельного інтегрування.
- •2.1 Метод прямокутників.
- •2.2 Метод трапецій
- •1.1.2 Метод Сімпсона (парабол)
- •1.1.3Метод Ньютона-Котеса.
- •2. Функції обчислення інтегралів у вигляді підпрограм.
- •Обчислення інтеграла за допомогою методу трапецій та парабол
- •Лекція 17. Системи диференціальних рівнянь.
- •Дифференціальні рівняння вищого порядку
- •Метод прогону.
- •Проекційні методи (на прикладі методу Гальоркіна).
- •Метод прогону.
- •Проекційні методи (на прикладі методу Гальоркіна).
2. Розробка програми
2.1 Обчислювальна схема методу Рунге-Кута:
Виклик функції Yravnen() - приклади рівнянь користувачу.
Вводимо вихідні дані:
а). номер рівняння, яке потрібно вирішити - chose;
б). початок і кінець даного відрізка [x0,x];
в). кількість кроків n;
г).значення y0.
Обчислюємовеличинукроку. h=(x-x0)/h
Привласнюємоу0 до першогоелементумасивуу. y[0]=y0
Обчислюємо розв’язаннярівняння, яке вибрали. Для цьогоробимоцикл від 0 до n і для кожного значенняхобчислюємо значенняу: for(inti=0;i<=n;i++)
{
а). обчислюємо i-ий крок.x1=x0+i*h;
б). визначаєм першийкоефіциєнтданого методу.k1=h*F(x1,y[i],chose)
в). визначаємдругийкоефіцієнтданого методу.k2=h*F(x1+h/2,y[i]+k1/2,chose)
г). визначаємтретійкоефіцієнтданого методу.k2=h*F(x1+h/2,y[i]+k2/2,chose)
д). визначаємчетвертийкоефіцієнтданого методу.k2=h*F(x1+h,y[i]+k3,chose)
е). обчислюємо значення у: y[i+1]=y[i]+(k1+2*k2+2*k3+k4)/6;
ж). виводимо значення у[i+1] при його значенні х1:cout <<x1<<” ”<<y[i+1]
}// кінець цикла при i=n.
6. Кінець програми.
Опис функції F(x,y,chose).
Функція має три формальні змінні:
1. значення х;
2. значення у;
3. номер обраного рівнянняchose.
double F(float x,float y,int chose)
Дана функція, вибирає потрібне рівняння, по значенню chose:
double f;
if (chose==1) f=x+y;
if (chose==2) f=cos(x)+sin(y);
if (chose==3) f=2*x*x+sqrt(y+x);
if (chose==4) f=cos(x)+y/6;
if (chose==5) f=(x*x+2*y)/sin(x);
Дана функція повертає значення типу double
return f;
Опис функції Yravnen();
Дана функція не має формальних перемінних і повертає тип void.
У ній виводяться на екран приклади рівнянь для користувача:
cout<<"1. f=x+y \n";
cout<<"2. f=cos(x)+sin(y) \n";
cout<<"3. f=2*x*x+sqrt(y) \n";
cout<<"4. f=cos(x)+y/6 \n";
cout<<"5. f=(x*x+2*y)/sin(x) \n";
Блок – схема.
|
x, x0 , y0, ---------| (k1+2*k2+2*k3+k4)/6
n,chose |
х1, y[i+1]
Yravnen()
1. f=x+y
2. f=cos(x)
+sin(y)
3. f=2*x*x
+sqrt(y)
4.f=cos(x)
+ y/6
5.f=(x*x+
2*y)/sin(x)
F(x,y)-вибір функції
ні ні
так так
ні
так
ні
так
ні
так
x, x0 , y0,
n,chose
|
-------------|(h/24)*(55*y1-59*y2+37*y3-*y4).
|
y[i+1]
2.2 Обчислювальна схема методу Адамса:
Виклик функції Yravnen() - приклади рівнянь користувачу.
2. Вводимо вихідні дані:
а). номер рівняння, яке потрібно вирішити - chose;
б). початок і кінець даного відрізка [x0,x];
в). кількість кроків n;
г).значення y0.
3. Обчислюємо величинукроку. h=(x-x0)/h
Привласнюємоу0 до першогоелементамасивуу. y[0]=y0
Обчислюємо розв’язаннярівняння, яке вибрали. Для цього робимо цикл від 3 доn+2 і при кожнім наступному кроці обчислюємо значенняу: for(inti=3;i<=n+2;i++)
{
а). обчислюємо i-ий шаг. x1=x0+(i-2)*h;
б). визначаємоперше початкове значення методу Адамса.y1=F(x0+i*h,y[i],chose)
в). визначаємодруге початкове значення методу Адамса. y2=F(x0+(i-1)*h,y[i-1],chose)
г). визначаємотретєпочаткове значення методу Адамса. y3=F(x0+(i-2)*h,y[i-2],chose)
д). визначаємочетверте початкове значення методу Адамса.y4=F(x0+(i-3)*h,y[i-3],chose)
е). обчислюємо значення у: y[i+1]=y[i]+(h/24)*(55*y1-59*y2+37*y3-9*y4);
ж). виводимо значення у[i+1] при його значенні х1: cout <<x1<<” ”<<y[i+1]
}// кінець цикла при i=n+2.
6. Кінець програми.
Функція F(x,y) має три формальнізмінні і вона ідентична функції, що описана в методіРунге-Кута.
Функція Yravnen() не має формальних перемінних, повертає значення типуvoid; описана вище, у методіРунге-Кута.