#include <math.h>
#include <stdio.h>
#define n 100
double f(double, double);
double ya(double);
int main(void)
{
double a = 2, b = 4, h = (b-a)/n, x = a, y = b;
printf("%7.3lf %10.6lf %10.6lf\n",x
,y
,ya
(x
)); while(x < b) // метод Рунге-Кутты
{
double m1 = h*f(x,y);
double m2 = h*f(x+h/2,y+m1/2);
double m3 = h*f(x+h/2,y+m2/2);
double m4 = h*f(x+h,y+m3);
x += h;
y += (m1 + 2*(m2+m3) + m4)/6;
printf("%7.3lf %10.6lf %10.6lf\n",x
,y
,ya
(x
)); }
}
double f(double x, double y) // правая часть
{
return (2*x-5)/(x*x)*y+5;
}
double ya(double x) // аналитическое решение
{
}
I2luY2x1ZGUgPG1hdGguaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CgojZGVmaW5lIG4gMTAwCgpkb3VibGUgZihkb3VibGUsIGRvdWJsZSk7Cgpkb3VibGUgeWEoZG91YmxlKTsKCmludCBtYWluKHZvaWQpCnsKICAgIGRvdWJsZSBhID0gMiwgYiA9IDQsIGggPSAoYi1hKS9uLCB4ID0gYSwgeSA9IGI7CgogICAgcHJpbnRmKCIlNy4zbGYgICAlMTAuNmxmICAgICUxMC42bGZcbiIseCx5LHlhKHgpKTsKICAgIHdoaWxlKHggPCBiKSAvLyDQvNC10YLQvtC0INCg0YPQvdCz0LUt0JrRg9GC0YLRiwogICAgewoKICAgICAgICBkb3VibGUgbTEgPSBoKmYoeCx5KTsKICAgICAgICBkb3VibGUgbTIgPSBoKmYoeCtoLzIseSttMS8yKTsKICAgICAgICBkb3VibGUgbTMgPSBoKmYoeCtoLzIseSttMi8yKTsKICAgICAgICBkb3VibGUgbTQgPSBoKmYoeCtoLHkrbTMpOwogICAgICAgIHggKz0gaDsKICAgICAgICB5ICs9IChtMSArIDIqKG0yK20zKSArIG00KS82OwoKICAgICAgICBwcmludGYoIiU3LjNsZiAgICUxMC42bGYgICAgJTEwLjZsZlxuIix4LHkseWEoeCkpOwogICAgfQp9CgoKZG91YmxlIGYoZG91YmxlIHgsIGRvdWJsZSB5KSAvLyDQv9GA0LDQstCw0Y8g0YfQsNGB0YLRjAoKewogICAgcmV0dXJuICgyKngtNSkvKHgqeCkqeSs1Owp9CgoKZG91YmxlIHlhKGRvdWJsZSB4KSAvLyDQsNC90LDQu9C40YLQuNGH0LXRgdC60L7QtSDRgNC10YjQtdC90LjQtQoKewogICAgcmV0dXJuIHBvdyh4LCAyKTsKfQ==