假设尝试将复值函数 $f:\mathhbb{C} \to \mathhbb{C}$ 绘制为 jsx 图中的 $f(z) =z$。它可能并不像看起来那样复杂。需要的是两个相连的平面。domain planr 中的点 (x, y) 映射到 codomain 平面中的点 (x, y)。当在域平面上拖动点时,在共域平面上的点也会发生相应的变化。所以唯一的问题是如何连接两个平面。这只是二维的问题。如果可以将类似于以下的内容添加到 jsx 图形中,那将是 jsx 图形的绝佳补充。然后可以研究复值函数的许多性质。链接在这里。 http://www.jimrolf.com/java/complexTool/bookComplexTool.html
问问题
124 次
1 回答
1
两块板子board1
,board2
可以连在一起board1.addChild(board2)
。这意味着,中的每个更新都会board1
触发中的更新board2
。这是一个基本示例,请参阅https://jsfiddle.net/zfbrsdwh/:
const board1 = JXG.JSXGraph.initBoard('jxgbox1', {
boundingbox: [-5, 5, 5, -5], axis:true
});
var p = board1.create('point', [1,2], {name:'Drag me'});
const board2 = JXG.JSXGraph.initBoard('jxgbox2', {
boundingbox: [-5, 5, 5, -5], axis:true
});
var q = board2.create('point', [function() { return [-p.Y(), p.X()]; }],
{name:'image'});
board1.addChild(board2);
更新以回复第一条评论:在复平面中可视化保角贴图可以通过将贴图应用于四边形来完成。有必要用曲线定义四边形的边:
var p0 = board1.create('point', [2, -2]);
var p1 = board1.create('point', [2, 2]);
var p2 = board1.create('point', [-2, 2]);
var p3 = board1.create('point', [-2, -2]);
// Draw the quadrangle through p0, p1, p2, p3 as curve
// defined by [fx, fy]
var fx = function(x) {
if (x < 0 || x > 4) { return NaN; }
if (x < 1) {
return (p1.X() - p0.X()) * x + p0.X();
} else if (x < 2) {
return (p2.X() - p1.X()) * (x - 1) + p1.X();
} else if (x < 3) {
return (p3.X() - p2.X()) * (x - 2) + p2.X();
} else if (x < 4) {
return (p0.X() - p3.X()) * (x - 3) + p3.X();
}
};
var fy = function(x) {
if (x < 0 || x > 4) { return NaN; }
if (x < 1) {
return (p1.Y() - p0.Y()) * x + p0.Y();
} else if (x < 2) {
return (p2.Y() - p1.Y()) * (x - 1) + p1.Y();
} else if (x < 3) {
return (p3.Y() - p2.Y()) * (x - 2) + p2.Y();
} else if (x < 4) {
return (p0.Y() - p3.Y()) * (x - 3) + p3.Y();
}
};
var graph1 = board1.create('curve', [fx, fy, 0, 4]);
然后应该很容易定义一个保形贴图并在第二块板上绘制两个贴图的组成:
// Conformal complex map z -> 1/z
var map = function(x, y) {
var s = x*x+y*y;
return [x / s, -y/s];
};
// Draw the image of the quadrangle under the map
f2x = function(x) {
return map(fx(x), fy(x))[0];
};
f2y = function(x) {
return map(fx(x), fy(x))[1];
};
var graph2 = board2.create('curve', [f2x, f2y, 0, 4]);
于 2019-07-18T09:27:35.307 回答