912-17 guruh talabasi
Masharipov Sanjarning
Kompyuterli modellashtirish fanidan
2-ТАЖРИБА ИШИ
Мавзу: Бошланѓич шартли оддий дифференциал тенгламаларни сонли ечиш усуллари.
Керакли техник воситалар:
Шахсий компьютер.
Керакли дастурий воситалар:
Турбо Паскаль дастурлаш системаси ва бошланѓич шартли оддий дифференциал тенгламаларни таќрибий ечиш учун тузилган дастурлар.
Ишнинг маќсади: Талабаларни бошланѓич шартли оддий дифференциал тенгламалар учун Эйлер, Рунге-Кутта усуллари алгоритми билан таништириш ва унга Паскаль тилида тузилган дастурда ишлашга ўргатиш.
Топшириќ.
1-масала. Ќуйидаги Коши масалаларини Эйлер усулида ечинг (n=10; h=0.1).
8. y’=x-1-1-lnx-x+y, y(1)=-1
Dastur kodi(C++)
#include
#include
#include
using namespace std;
double funksiya(double x, double y){
return y - sqrt(pow(x,2)+2*log(x)*(x-1)); // funksiya ifodasi
}
main(){
double a, b, n, y0;
cout << "a = "; cin >> a;
cout << "b = "; cin >> b;
cout << "n = "; cin >> n;
cout << "y0 = "; cin >> y0;
double h, x;
h = (b - a) / n;
x = a;
cout << "x = " << x << " y = " << y0 << endl;
for(int i = 1; i <= n; i++){
y0 = funksiya(x, y0) * h + y0;
x = x + h;
cout << "x = " << x << " y = " << y0 << endl;
}
}
2-масала. Ќуйидаги Коши масалаларини Рунге-Кутта усулида ечинг(n=10; h=0.1).
8.
#include
#include
#include
using namespace std;
int nurav = 2;
double y[3], yz[3];
int n;
double a, b, x0, x1, h;
void pv(double x, double y[3], double *dy){
dy[1] = 2 * exp(-x) - y[1];
}
void rungikyyta(double x, double yn[3], double *dy){
double v3[3], fc[3], fk1[3], fk2[3], fk3[3], fk4[3];
pv(x, yn, fc);
for(int i = 1; i <= nurav; i++){
fk1[i] = h * fc[i];++
v3[i] = yn[i] + 0.5 * fk1[i];
}
x = x + 0.5 * h;
pv(x, v3, fc);
for(int i = 1; i <= nurav; i++){
fk2[i] = h * fc[i];
v3[i] = yn[i] + fk2[i];
}
pv(x, v3, fc);
for(int i = 1; i <= nurav; i++){
fk3[i] = h * fc[i];
v3[i] = yn[i] + fk2[i];
}
x = x + 0.5 * h;
pv(x, v3, fc);
for(int i = 1; i <= nurav; i++){
fk4[i] = h * fc[i];
dy[i] = yn[i] + 0.1666666666667 * (fk1[i] + 2 * fk2[i] + 2 * fk3[i] + fk4[i]);
}
}
main(){
cout << "a = "; cin >> a;
cout << "b = "; cin >> b;
cout << "n = "; cin >> n;
h = (b - a) / n;
x0 = a;
for(int i = 1; i <= nurav; i++){
cout << "y0[" << i << "] = "; cin >> yz[i];
}
cout << endl << "x = " << x0 << endl;
for(int i = 1; i <= nurav; i++) cout << "y[" << i << "] = " << y0[i] << endl;
cout << endl;
x1 = a;
for(int j = 1; j <= n; j++){
rungikyyta(x1, yz, y);;
x1 = a + j * h;
cout << "x = " << x1 << " ";
for(int i = 1; i <= nurav; i++) cout << "y[" << i << "] = " << y[i] << " ";
cout << endl;
x0 = x1;
for(int i = 1; i <= nurav; i++)
yz[i] = y[i];
}
}
Dostları ilə paylaş: |