Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Опорний конспект лекцій.doc
Скачиваний:
46
Добавлен:
11.02.2016
Размер:
3.99 Mб
Скачать

2. Розробка програми

2.1 Обчислювальна схема методу Рунге-Кута:

  1. Виклик функції Yravnen() - приклади рівнянь користувачу.

  1. Вводимо вихідні дані:

    • а). номер рівняння, яке потрібно вирішити - chose;

    • б). початок і кінець даного відрізка [x0,x];

    • в). кількість кроків n;

    • г).значення y0.

  1. Обчислюємовеличинукроку. h=(x-x0)/h

  2. Привласнюємоу0 до першогоелементумасивуу. y[0]=y0

  3. Обчислюємо розв’язаннярівняння, яке вибрали. Для цьогоробимоцикл від 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 Обчислювальна схема методу Адамса:

  1. Виклик функції Yravnen() - приклади рівнянь користувачу.

2. Вводимо вихідні дані:

а). номер рівняння, яке потрібно вирішити - chose;

б). початок і кінець даного відрізка [x0,x];

в). кількість кроків n;

г).значення y0.

3. Обчислюємо величинукроку. h=(x-x0)/h

  1. Привласнюємоу0 до першогоелементамасивуу. y[0]=y0

  1. Обчислюємо розв’язаннярівняння, яке вибрали. Для цього робимо цикл від 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; описана вище, у методіРунге-Кута.