Please tell me why if I replace the line printf("%lf %lf\n", u1, u2); , then the cycle ends under the condition specified in the if, and if this line is not fixed, then the cycle continues indefinitely:
double originalF1(double); double originalF2(double); double f1(double, double, double); double f2(double, double, double); int main() { int a = 1, b = 3; double u1 = 2, u2 = exp(1.0), h = (double)(ba)/10, x = a; do { u1 = u1 + h*f1(x, u1, u2); u2 = u2 + h*f2(x, u1, u2); printf("%lf %lf\n", u1, u2); if (x >= b && fabs(u1 - originalF1(x)) <= 0.0001 && fabs(u2 - originalF2(x)) <= 0.0001) break; else if (x >= b) { x = a; h /= 2; u1 = 2; u2 = exp(1.0); } x += h; } while (true); return 0; } double originalF1(double x) { return 2 * x; } double originalF2(double x) { return exp(x); } double f1(double x, double u1, double u2) { return u1 / x - u2 / exp(x) + 1; } double f2(double x, double u1, double u2) { return u1 / (2 * x) + u2 - 1; }
%lf %lf? - Alexey Shimansky