2-тажриба иши мавзу: Бошланѓич шартли оддий дифференциал тенгламаларни сонли ечиш усуллари
Download 241 Kb.
|
2-tajriba km
912-17 guruh talabasi Masharipov Sanjarning Kompyuterli modellashtirish fanidan
Керакли техник воситалар: Шахсий компьютер. Керакли дастурий воситалар: Турбо Паскаль дастурлаш системаси ва бошланѓич шартли оддий дифференциал тенгламаларни таќрибий ечиш учун тузилган дастурлар. Ишнинг маќсади: Талабаларни бошланѓич шартли оддий дифференциал тенгламалар учун Эйлер, Рунге-Кутта усуллари алгоритми билан таништириш ва унга Паскаль тилида тузилган дастурда ишлашга ўргатиш. Топшириќ. 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]); } }
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]; } } Download 241 Kb. Do'stlaringiz bilan baham: |
ma'muriyatiga murojaat qiling