gpt4 book ai didi

wolfram-mathematica - 告诉 Plot 在 Mathematica 中设置矢量值黑盒函数的样式

转载 作者:行者123 更新时间:2023-12-04 02:10:50 24 4
gpt4 key购买 nike

假设我编写了一个黑盒函数,它以数值方式计算一个昂贵的复值函数,然后返回实部和虚部。

fun[x_?InexactNumberQ] := Module[{f = Sin[x]}, {Re[f], Im[f]}]

然后我可以像往常一样在 Plot 中使用它,但 Plot 无法识别该函数返回一对,并且将两条曲线着色为相同的颜色。如何告诉 Mathematica 指定的函数总是返回一个固定长度的向量?或者一个人如何设计这个情节?

screen-shot of plot with both curves being the same color

编辑:鉴于试图回答这个问题的尝试,我认为只有将样式作为获得的图形的后处理来执行,才有可能避免双重重新评估。以下很可能不是健壮的,但它似乎适用于我的示例:
gr = Plot[fun[x + I], {x, -1, 1}, ImageSize -> 250];
k = 1;
{gr, gr /. {el_Line :> {ColorData[1][k++], el}}}

two images, one with styling applied

最佳答案

一种可能性是:

Plot[{#[[1]], #[[2]]}, {x, -1, 1}, PlotStyle -> {{Red}, {Blue}}] &@ fun[x + I]  

enter image description here

编辑

如果您的函数不是 真的平滑(即几乎是线性的!),您无能为力来防止双重评估过程,因为由于 Plot[] 网格探索算法的性质,无论如何它都会(某种程度上)发生。

例如:
fun[x_?InexactNumberQ] := Module[{f = Sin[3  x]}, {Re[f], Im[f]}];
Plot[{#[[1]], #[[2]]}, {x, -1, 1}, Mesh -> All,
PlotStyle -> {{Red}, {Blue}}] &@fun[x + I]

enter image description here

关于wolfram-mathematica - 告诉 Plot 在 Mathematica 中设置矢量值黑盒函数的样式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5597566/

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