Несколько минут ковыряния в документации привели к следующему: для рисования поля направлений и интегральных кривых имеется модуль slopefield, а для рисования изоклин — модуль contour.
Ну и вот что получилось:
import contour; import slopefield; import graph; // чтобы оси нарисовать settings.outformat = "png"; unitsize(2cm); pair a = (-5, -5); pair b = (5, 5); limits(a, b); // картинка ограничена прямоугольником с углами в a и b xaxis("$x$", EndArrow); yaxis("$y$", EndArrow); real f(real x, real y) { return x^2 + y^2 - 1; } real[] isoclines = map(new real(real x){return x*x;}, // анонимная функция применяется к uniform(1, 10, 9) // массиву {1,2,3,4,5,6,7,8,9,10} ); add(slopefield(f, a, b)); draw(contour(f, a, b, isoclines), green); currentpen = red + 1.5; // 1.5 - толщина пера в bp (bp == 1/72 дюйма) for (var i : uniform(-5, 5, 20)) { // range-based for, так сказать draw(curve((i, i), f, a, b)); draw(curve((0, i), f, a, b)); }
No comments:
Post a Comment