Per il tracciamento è necessario utilizzare un intervallo di valori. Quindi, utilizzando x = a + b*i
:
[a,b] = meshgrid(-10:0.1:10); %// creates two grids
ComplexValue = a+1i*b; %// get a single, complex valued grid
CompFun = @(x)(- real(x.^3) + imag((10 + x.*1i)./(- 100.*x.^2 + x.*5i + 20))); %// add dots for element wise calculation
result = CompFun(ComplexValue); %// get results
pcolor(a,b,result) %// plot
shading interp %// remove grid borders by interpolation
colorbar %// add colour scale
ylabel 'Imaginary unit'
xlabel 'Real unit'
ho dovuto aggiungere punti (vale a dire elemento saggio moltiplicazione) per l'equazione per farlo funzionare.
Inoltre con la contourf
come suggerito nella comment by @AndrasDeak:
figure
contourf(a,b,result,51) %// plots with 51 contour levels
colorbar
ho usato un meshgrid di -10:0.01:10
qui per maggiori Risoluzione:
Se siete riluttanti a mano copiare il soluzione per aggiungere i punti di moltiplicazione dell'elemento saggio, è possibile ricorrere a loop:
grid = -10:0.1:10;
result(numel(grid),numel(grid))=0; %// initialise output grid
for a = 1:numel(grid)
for b = 1:numel(grid)
x = grid(a)+1i*grid(b);
result(a,b) = ImaginaryPart(x);
end
end
Questo fornisce lo stesso risultato, ma con pro e contro entrambi. È più lento della moltiplicazione della matrice, ad esempio dell'aggiunta di punti alla tua equazione, ma non richiede la manipolazione manuale dell'output.
Considera l'uso di un 'contourf 'piuttosto che /, con molti livelli: gli zeri sono chiaramente visibili. –
@LuisMendo qui è in 'jet', appositamente per te: https://i.imgur.com/QQijOZb.png – Adriaan
@Adriaan Questa dovrebbe essere una buona illustrazione di cosa significhi" percettivamente uniforme "e perché le persone non come "jet". È il Comic Sans delle mappe a colori! –