gpt4 book ai didi

vector - 从离散向量场中提取积分曲线(Mathematica)

转载 作者:行者123 更新时间:2023-12-04 05:14:34 27 4
gpt4 key购买 nike

我正在尝试编写一个 Mathematica 脚本,该脚本可以将离散矢量场插入到连续矢量场中。然后我想从连续向量场中提取积分曲线(场线)。

我知道 Mathematica 的 ListStreamPlot功能可以直观地呈现积分曲线;但是,我需要包含它们的实际点。

我考虑过写一个蛮力方法来达到以下效果:积分曲线似乎可以递归确定。如果在列表中选取了一个点,则积分曲线中的“下一个”点将是具有最接近斜率的点。 (每个“点”实际上是一个向量,因此每个点都有自己的斜率。)“下一个”点只有 4 个候选点——当前点的上、下、左或右。然后“下一个”点将成为新的起点,并且该过程将递归直到到达网格的边缘。

但是,我想知道是否有使用 Mathematica 的更高级别函数的更简单的方法。 (我也不知道我的方法在概念上是否正确。)

我非常感谢有关此任务的任何想法或建议。

谢谢!

最佳答案

仅供引用:http://mathematica.stackexchange.com

整理一些数据:

data = Table[{-1 - x^2 + y, 1 + x - y^2}, {x, -3, 3, 0.2}, {y, -3, 3, 0.2}];

建一个 ListStreamPlot
plot = ListStreamPlot[data, 
StreamStyle -> "Line", Frame -> False, PlotRangePadding -> 0]

enter image description here

在 Mathematica 中,一切都是 表达式 - 所以即使这个情节基本上是图形基元的可视化代码。您可以通过各种方式提取这些原语 - 包括您需要的线条。例如 - 只需选择表达的部分,您就可以找到包含该图的所有点:
points = plot[[1, 2, 1]];

如果您需要查看整个表达式评估 plot//InputForm .现在您还可以进行模式匹配以查看内部表达式。让我们找到包含所有行的所有索引:
indexes = Cases[plot, Line[index_] -> index, Infinity];

现在,您可以分析、绘制和风格化您的线条。例如 - 设计一个突出显示原始图中特定线条的应用程序:
Animate[Show[
plot,
Graphics[{Red, Opacity[.5], , Thickness[.02],
Line[points[[indexes[[k]]]]]}]]
, {{k, 1, "lines"}, 1, Length[indexes], 1}, FrameMargins -> 0]

enter image description here

关于vector - 从离散向量场中提取积分曲线(Mathematica),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14450570/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com