Como plotar uma função de duas variáveis ​​em 2D?

Oct 10 2020

Diga que tenho uma função $y = ax^2$. Eu quero um enredo de '$y$'vs'$x$'. Aqui '$a$'é um parâmetro. Posso definir diferentes valores de '$a$'e obter alguns conjuntos separados de gráficos pelo seguinte comando:

Plot[{1*x^2, 2*x^2, 3*x^2},{x,0,10}]

onde eu coloco $a= 1,2,3$valores. Mas os enredos aqui são desconexos, pois$a$não assume valores contínuos. O que eu quero é obter um enredo de '$y$'vs'$x$'variando'$a$'continuamente entre $1$ para $3$. Como eu faço isso?

Observe que DensityPlot[a*x^2,{x,0,10},{a,1,3}]dá um gráfico com '$a$'como eixo y e'$x$'como eixo x. Não é isso que eu quero. Também usando o comando Manipulate[Plot[a*x^2,{x,0,10}],{a,1,3}], obtemos uma imagem em movimento. Novamente, não é o que eu preciso.

Espero ter esclarecido qual é a minha exigência. Não consegui encontrar este problema online. Eu vi que isso pode ser feito em alguns jornais. Alguma ideia?

Respostas

3 kglr Oct 10 2020 at 03:13

Você pode tentar ParametricPlot:

ParametricPlot[{x, a x^2}, {x, 0, 10}, {a, 1, 3}, AspectRatio -> 1]

Você pode destacar as linhas correspondentes a valores específicos de auso das opções MeshFunctionse Mesh:

alist = {1, 2, 3};
colors = Opacity[1, #] & /@ {Red, Green, Purple};
mesh = Thread[{alist, Directive[Thick, #] & /@ colors}];

ParametricPlot[{x, a x^2}, {x, 0, 10}, {a, 1, 3}, AspectRatio -> 1, 
 PlotStyle -> LightOrange,
 BoundaryStyle -> None,
 MeshFunctions -> {#4 &},
 Mesh -> {mesh},
 PlotLegends -> 
  LineLegend[colors, alist, LegendLabel -> Style["a = ", 16]]]

2 cvgmt Oct 10 2020 at 06:48

Aqui, damos um exemplo que Fillingnem sempre é fácil de manusear. Portanto, temos que usar ParametricPlotouParametricRegion

f[x_, a_] = Sin[x + a] ((a - 1) (a - 3) + x);
curves = Plot[Table[f[x, a], {a, 1, 3, .1}] // Evaluate, {x, -2, 2}, 
   AspectRatio -> 1];
region = ParametricPlot[{x, f[x, a]}, {a, 1, 3}, {x, -2, 2}, 
   PlotStyle -> Directive[Opacity[0.2], Yellow]];
Show[curves, region]

2 yawnoc Oct 10 2020 at 15:07

Com base na resposta de @kglr, mas usando a opção ColorFunctionem ParametricPlot. Basicamente, os argumentos de ColorFunctionsão as coordenadas cartesianas reais (que chamei xxe yy) seguidas pelas variáveis ​​de parâmetro (neste caso xe a):

{xMin, xMax} = {0, 10};
{aMin, aMax} = {1, 3};
ital[str_] := Style[str, Italic];
ParametricPlot[
  {x, a x^2}
  , {x, xMin, xMax}
  , {a, aMin, aMax}
  , AspectRatio -> 1 / GoldenRatio
  , ColorFunction -> Function[{xx, yy, x, a}, Hue[a]]
  , FrameLabel -> ital /@ {"x", "y"}
  , LabelStyle -> Directive[Black, 14]
  , RotateLabel -> False
  , PlotLabel -> ital["y"] == ital["a"] ital["x"]^2
  , PlotLegends -> Placed[
      BarLegend[{Hue, {aMin, aMax}}
        , LegendLabel -> ital["a"]
        , LegendLayout -> "Column"
      ],
      After
    ]
]

1 SamapanBhadury Oct 10 2020 at 03:30

Após a resposta de @kglr, encontrei outra solução:

Plot[{x^2, 3*x^2}, {x, 0, 10}, Filling -> {1 -> {2}}]

Isso gera: