Как установить начальную позицию перетаскиваемых точек в JSXGraph на графике уравнений?
Я разрабатываю веб-программу, которая отображает интерактивное полиномиальное уравнение с 2 переменными на JSXGraph. Мне нужно, чтобы каждая точка, где производная уравнения была равна 0, имела перетаскиваемую точку, и чтобы при перетаскивании одной точки оставался только интервал между 1 точка после и 1 до того, как перетянутая точка кривой сойдет вместе, кто-нибудь знает, как я мог это сделать?
1 ответ
Извините за задержку. Я думаю, что вам нужно, Эрмита интерполяции. Недавно я привел пример в группах Google ( https://groups.google.com/forum/). Интерполяция Эрмита еще не интегрирована в JSXGraph, но кажется, что есть спрос на нее, поэтому мы можем подумать об этом.
Вот код:
JXG.Math.Numerics.hermitePolynomial = function (p, derivatives) {
var w = [],
Lii = [],
/** @ignore */
fct = function (x, suspendedUpdate) {
var i, k, xi, s,
L, Hi, Hi_hat,
len = p.length,
num = 0,
denom = 0;
if (!suspendedUpdate) {
// Compute denominator
for (i = 0; i < len; i++) {
w[i] = 1.0;
Lii[i] = 0.0;
xi = p[i].X();
for (k = 0; k < len; k++) {
if (k !== i) {
w[i] *= (xi - p[k].X());
Lii[i] += 1 / (xi - p[k].X());
}
}
w[i] = 1 / w[i];
}
}
s = 0.0;
for (i = 0; i < len; i++) {
xi = p[i].X();
L = w[i];
for (k = 0; k < len; k++) {
if (k !== i) {
L *= (x - p[k].X());
}
}
Hi = (1.0 - 2 * (x - xi) * Lii[i]) * L * L;
Hi_hat = (x -xi) * L * L;
s += p[i].Y() * Hi + derivatives[i] * Hi_hat;
}
return s;
};
return fct;
};
var board = JXG.JSXGraph.initBoard("jxgbox", {
boundingbox: [-5, 6, 6, -5],
axis: true
});
var p = [];
// Define the points
p[0] = board.create('point', [-1,2], {size:4});
p[1] = board.create('point', [1,-2], {size:4});
p[2] = board.create('point', [3,-1], {size:4});
// The derivates at this points are all zero.
var derivatives = [0, 0, 0];
var f = JXG.Math.Numerics.hermitePolynomial(p, derivatives);
var graph = board.create('functiongraph', [f, -10, 10], {strokeWidth:2});
Живая демоверсия находится по адресу https://jsfiddle.net/vcL7aepo/278/
С наилучшими пожеланиями, Альфред