[Mathematica] Grafico animato

thedarkhero
Ho bisogno di studiare una famiglia di polinomi con Mathematica.
Considero la funzione $y=x^2+ax+b$ al variare dei parametri reali $a$ e $b$.
Devo rappresentare in un grafico nel piano ab il luogo dei punti in cui il determinante si annulla, ovvero $a^2-4b=0$. Nello stesso grafico devo porre un Locator, che permetta di variare i parametri a e b.
Al variare dei parametri devo rappresentare un secondo grafico nel piano complesso: le due radici complesse del polinomio che avente i parametri descritti dal Locator.
Come posso fare?

Risposte
Eredir
Una funzione unica non credo, però basta usare Re ed Im come nell'esempio precedente.

val = {Re[z], Im[z]}

thedarkhero
Grazie ancora. Un'ultima cosa. Esiste una funzione che dato un numero complesso restituisce una coppia di valori che sono relativamente la parte reale e quella immaginaria?

Eredir
Prova con questo esempio, modificandolo un po' dovresti riuscire a fare quello che ti serve

DynamicModule[{p = {0.5, 0.5}}, {
  Show[{
    Plot[Sin[x], {x, 0, 1}],
    Graphics[Locator[Dynamic[p]]]
    }],
  Show[{
    Plot[Sin[x], {x, 0, 1}],
    Graphics[Locator[Dynamic[p]]]
    }],
  Dynamic[p]
}]


DynamicModule serve per creare l'interfaccia dinamica. Il resto sono due grafici su cui sono posizionati dei locator e una lista che contiene i valori espliciti della loro posizione. Muovendo uno dei due l'altro si muove di conseguenza, inoltre vengono scritte nella lista le coordinate. Per accedere e passare i valori del locator devi usare Dynamic

.


thedarkhero
Il problema principale è proprio come prendere i valori del locator del primo grafico in modo che muovendo il locator anche le radici vengano aggiornate dinamicamente.

Eredir
Per cosa ti serve aiuto esattamente?
Per la prima parte ti basta fare il grafico della parabola e mettere il Locator.
Per selezionare il punto ti conviene guardare il secondo esempio nella pagina dell'help del Locator.

Per la seconda, una volta ottenuti i valori di a e b, puoi fare una cosa del genere

root = x /. Solve[x^2 + a x + b == 0, x] /. {a -> 3, b -> 6}
ListPlot[{
  {Re[root[[1]]], Im[root[[1]]]},
  {Re[root[[2]]], Im[root[[2]]]}
  },
 PlotMarkers -> {Automatic, Large}]


dove ovviamente al posto di a e b vanno i valori selezionati dal grafico.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.