2016-11-17 13 views
5

Mam następujący problem podczas kreślenia z Plots.jl. I jak wykreślić funkcyjnych ROSENBROCKwykreślając funkcję 2d jako powierzchnię w przestrzeni 3d z `Plots.jl`

rosenbrock(x) = (1.0 - x[1])^2 + 100.0 * (x[2] - x[1]^2)^2 

jako powierzchnia, która oczekuje 2d Tuple{Float64,Float64} jako wejście.

Co mogę wymyślić, jest następujący:

using Plots 
gr() 

rosenbrock(x) = (1.0 - x[1])^2 + 100.0 * (x[2] - x[1]^2)^2 

ts = linspace(-1.0, 1.0, 100) 
x = ts 
y = map(rosenbrock, [(x, z) for (x,z) in zip(ts,ts)]) 
z = map(rosenbrock, [(x, y) for (x,y) in zip(ts,ts)]) 
# plot(x, x, z) 
plot(x, y, z, st = [:surface, :contourf]) 

co daje tej działki: wrong rosenbrock surface

myślę pomieszane kilka wymiarów, ale ja nie wiem, co mam źle.

Czy muszę zagnieździć obliczenia odwzorowań dla y i x, aby uzyskać wynik?

+0

Sugeruję, abyś próbował sformułować swoje pytanie nieco jaśniej, nie mam pojęcia, co próbujesz zrobić i nie mam pojęcia, co to jest pytanie – isebarn

+0

@isebarn Zaktualizowałem pytanie. Lubię rysować funkcję jako powierzchnię, ale nie jestem pewien, jak to zrobić. – swiesend

Odpowiedz

7

Po szybkim dochodzeniu funkcji Rosenbrocka znalazłem, i mnie poprawić, jeśli im źle, ale trzeba określić y-vector arent rzekomą zagnieździć go w z lub coś podobnego ktoś inny próbował to samo jak pokazano here ale wykorzystując Wykresy

roztwór następująco jako wykonywane przez Patrick Kofod Mogensen

using Plots 

function rosenbrock(x::Vector) 
    return (1.0 - x[1])^2 + 100.0 * (x[2] - x[1]^2)^2 
end 

default(size=(600,600), fc=:heat) 
x, y = -1.5:0.1:1.5, -1.5:0.1:1.5 
z = Surface((x,y)->rosenbrock([x,y]), x, y) 
surface(x,y,z, linealpha = 0.3) 

powoduje

enter image description here

dygresja

Im zadowolony Szukałem tego jako Szukałam dla plotera 3D dla Julii inny niż PyPlot (jak to może być trochę kłopotów, aby skonfigurować dla użytkowników mojego programu), a nawet wygląda lepiej i obrazy można obracać.

+0

Dziękuję bardzo! Składnia 'Surface(), surface()' sprawia, że ​​jest o wiele łatwiej. – swiesend

+0

, z których rekwizytów i rekwizytów koloru korzystałeś? – swiesend

+0

Wybiegłem prekursyjnie z kodu, który napisałem, żadnych innych poprawek – isebarn

Powiązane problemy