Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- #include <ctime>
- #include <fstream>
- #include <iomanip>
- using namespace std;
- double f(double);
- double fa(double);
- int main()
- {
- const int nm = 2;
- double *YE, *YB, *YB50, *OS1E, *OS2E, *OS1B, *OS2B, t = 0, k = 0, h1 = 0.2, h2 = 0.02, w = 1, *w4;
- ofstream fout;
- char fname[15] = "Ish_dannye.txt";
- char const* pS[nm] = { "1. Diffury.",
- "0. Exit."
- };
- int v;
- do
- {
- cout << "\nMenu\n";
- for (int i = 0; i < nm; i++) cout << pS[i] << endl;
- cout << "\nYour choice - > ";
- cin >> v;
- cin.get();
- switch (v)
- {
- case 1:
- cout << "\n" << pS[0] << "\n\n";
- YE = new double[500];
- YB = new double[500];
- YB50 = new double[50];
- OS1E = new double[50];
- OS2E = new double[500];
- OS1B = new double[50];
- OS2B = new double[500];
- w4 = new double[4];
- //Ejler
- YE[0] = 1; OS1E[0] = 0; OS2E[0] = 0; w4[0] = 1;
- for (int i = 1; i < 500; i++)
- {
- k = k + 0.2; t = t + 0.02;
- if (i < 50)
- {
- YE[i] = w + h1*f(w);
- w = YE[i];
- OS1E[i] = fa(k) - YE[i];
- cout << fa(k) << " - " << YE[i] << " = " << fa(k) - YE[i] << endl;
- //cin.get();
- if (i < 4)
- {
- w4[i] = YE[i];
- }
- }
- YE[i] = YE[i - 1] + h2*f(YE[i - 1]);
- OS2E[i] = fa(t) - YE[i];
- }
- //Adams-Bawfort
- k = 0.6; t = 0.06;
- YB[0] = 1; OS1B[0] = 0; OS2B[0] = 0; YB50[0] = 1;
- for (int i = 1; i < 500; i++)
- {
- if (i < 4)
- {
- YB[i] = YE[i];
- YB50[i] = w4[i];
- OS1B[i] = OS1E[i]; OS2B[i] = OS2E[i];
- cout << " - " << YB50[i] << " (" << YE[i] << ") = " << "_________________" << endl;
- //cin.get();
- }
- else
- {
- t = t + 0.01; k = k + 0.05;
- if (i < 50)
- {
- YB50[i] = YB50[i - 1] + (h1 / 24)*(55 * f(YB50[i - 1]) - 59 * f(YB50[i - 2]) + 37 * f(YB50[i - 3]) - 9 * f(YB50[i - 4])); //метод Адамса
- YB50[i] = YB50[i - 1] + (h1 / 24)*(9 * f(YB50[i]) + 19 * f(YB50[i - 1]) - 5 * f(YB50[i - 2]) + f(YB50[i - 3])); //Метод Башфорта
- OS1B[i] = fa(k) - YB50[i];
- cout << fa(k) << " - " << YB50[i] << " (" << YE[i] << ") = " << fa(k) - YB50[i] << endl;
- //cin.get();
- }
- YB[i] = YB[i - 1] + (h2 / 24)*(55 * f(YB[i - 1]) - 59 * f(YB[i - 2]) + 37 * f(YB[i - 3]) - 9 * f(YB[i - 4])); //метод Адамса-Башфорта
- YB[i] = YB[i - 1] + (h2 / 24)*(9 * f(YB[i]) + 19 * f(YB[i - 1]) - 5 * f(YB[i - 2]) + f(YB[i - 3]));
- OS2B[i] = fa(t) - YB[i];
- }
- }
- fout.open(fname);
- fout << "Ejler znachenija:" << endl;
- for (int i = 0; i < 500; i++)
- {
- fout << YE[i] << " ";
- }
- fout << endl << endl;
- fout << "Ejler owibki h1=0.2:" << endl;
- for (int i = 0; i < 50; i++)
- {
- fout << OS1E[i] << " ";
- }
- fout << endl << endl;
- fout << "Ejler owibki h2=0.02:" << endl;
- for (int i = 0; i < 500; i++)
- {
- fout << OS2E[i] << " ";
- }
- fout << endl << endl;
- fout << "Adams-Bawf znachenija:" << endl;
- for (int i = 0; i < 500; i++)
- {
- fout << YB[i] << " ";
- }
- fout << endl << endl;
- fout << "Adams-Bawf owibki h1=0.2:" << endl;
- for (int i = 0; i < 50; i++)
- {
- fout << OS1B[i] << " ";
- }
- fout << endl << endl;
- fout << "Adams-Bawf owibki h2=0.02:" << endl;
- for (int i = 0; i < 500; i++)
- {
- fout << OS2B[i] << " ";
- }
- fout << endl << endl;
- fout.close();
- break;
- case 0:
- delete[] YE;
- delete[] YB;
- delete[] YB50;
- delete[] OS1E;
- delete[] OS2E;
- delete[] OS1B;
- delete[] OS2B;
- delete[] w4;
- break;
- default: cout << "\nIllegal choice\n\n";
- }
- } while (v != 0);
- return 0;
- }
- double f(double x)
- {
- double xy = 0;
- xy = 0.15*x - 0.03*x*x;
- return xy;
- }
- double fa(double t)
- {
- double xya = 0;
- xya = (0.15*exp(0.15*t)) / (0.12 + 0.03*exp(0.15*t));
- return xya;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement