background image

 

 

Jakub Wietrzyński, gr.V  

 
 
 
 
 
 
 
 
 

Laboratorium z Metod Numerycznych 

Temat: Przybliżone rozwiązywanie równań 

różniczkowych 

Data realizacji: 04-05-2016, godz. 15:30-17:00 

 

 

 

 

 

 

 

 

 

 

 

background image

 

Zad.1. 
Kod programu: 
 

#include

 

<iostream>

 

 

using

 

namespace

 std; 

 

int

 main() { 

 

double

 x0, y0, h, xmax, f, dy, x, C, yd; 

 

int

 i=1; 

 
 

cout << 

"Podaj x0: "

 

cin >> x0; 

 

cout << 

"Podaj y0: "

 

cin >> y0; 

 

cout << 

"Podaj h: "

 

cin >> h; 

 

cout << 

"Podaj xmax: "

 

cin >> xmax; 

 
 

C=y0/(exp((x0*x0)/20)); 

 
 

x=x0; 

//zerowa iteracja

 

 

f=0.1*x*y0; 

 

dy=h*f; 

 

 

while

 (x<xmax) { 

 

 

x=x0+i*h; 

 

 

y0+=dy; 

 

 

f=0.1*x*y0; 

 

 

dy=h*f; 

 
 

 

yd = C*exp((x*x)/20); 

 
 

 

cout << 

"\n"

 << x << 

" "

 << y0 << 

" "

 << yd << endl; 

 
 

 

i++; 

 

 
 

system(

"pause"

); 

 

 

 

 

 

 

 

 

 

background image

 

Zad.2. 
Kod programu: 
 

#include

 

<iostream>

 

 

using

 

namespace

 std; 

 

int

 main() { 

 

double

 x0, y0, h, xmax, f, dy, x, C, yd, k, y, suma=0; 

 

int

 i=0; 

 
 

cout << 

"Podaj x0: "

 

cin >> x0; 

 

cout << 

"Podaj y0: "

 

cin >> y0; 

 

cout << 

"Podaj h: "

 

cin >> h; 

 

cout << 

"Podaj xmax: "

 

cin >> xmax; 

 
 

C=y0/(exp((x0*x0)/20)); 

 
 

x=x0; 

 

while

 (x<xmax) { 

 

 

x=x0; 

 

 

y=y0; 

 

 

k=h*(0.1*x*y); 

 

 

dy=k; 

 

 

suma+=dy; 

 
 

 

x=x0+0.5*h; 

 

 

y=y0+0.5*k; 

 

 

k=h*(0.1*x*y); 

 

 

dy=2*k; 

 

 

suma+=dy; 

 
 

 

x=x0+0.5*h; 

 

 

y=y0+0.5*k; 

 

 

k=h*(0.1*x*y); 

 

 

dy=2*k; 

 

 

suma+=dy; 

 
 

 

x=x0+h; 

 

 

y=y0+k; 

 

 

k=h*(0.1*x*y); 

 

 

dy=k; 

 

 

suma+=dy; 

 
 

 

dy=(1/6)*suma; 

 

 

y0=y+dy; 

 

 

x0=x; 

 
 

 

yd = C*exp((x*x)/20); 

 
 

 

cout << 

"\n"

 << i << 

" "

 <<  x << 

" "

 << y << 

" "

 << yd << endl; 

 

 

 

 

 

i++; 

 

 

background image

 

system(

"pause"

);