How to shader the stability area ?
2 views (last 30 days)
Show older comments
sadeem alqarni
on 16 Jul 2018
Edited: Star Strider
on 18 Jul 2018
x0 = -5; x1 = 5; Nx = 301;
y0 = -5;
y1 = 5;
Ny = 301;
xv = linspace(x0,x1,Nx);
yv = linspace(y0,y1,Ny);
[x,y] = meshgrid(xv,yv);
h = x + i*y;
g = -(118224803259250638877444968353370600910051934512743.*h.^9 - 237428789745399453892107883780168786708111749629870080.*h.^6 + 8178108279897162920859527218771768255678191550351802368.*h.^3 + 196159429230833773869868419475239575503198607639501078528)./(32*(2846779580313514030178888018748426609395855663955.*h.^9 + 1850166005134036192585345683694925738701755489714176.*h.^6 + 31532715869896263823264459664257271745814644580679680.*h.^3 - 6129982163463555433433388108601236734474956488734408704))
gmag = abs(g);
% Plot contours of gmag
contour(x,y,gmag,[1 1],'b-')
axis([x0,x1,y0,y1]);
axis('square');
xlabel('Real ')
ylabel('Imag ')
grid on
0 Comments
Accepted Answer
Star Strider
on 16 Jul 2018
What region do you want to plot?
You appear to have specified a transfer function. Plotting it is straightforward:
f = @(h) (25.*h.^8 + 765.*h.^7 + 12423.*h.^6 + 131310.*h.^5 + 962910.*h.^4 + 4944240.*h.^3 + 17191440.*h.^2+36741600.*h + 36741600) ./ (25.*h.^8 -765.*h.^7 + 12423.*h.^6 - 131310*h.^5 + 962910.*h.^4 - 4944240.*h.^3 + 17191440.*h.^2-36741600.*h + 36741600);
hv = linspace(0, 20, 1E+3);
figure
plot(hv, f(hv))
grid
The function quickly approaches zero outside the specified limits I defined for ‘hv’.
4 Comments
Star Strider
on 16 Jul 2018
Edited: Star Strider
on 18 Jul 2018
Run all the code in my original Answer to find out (repeated here):
f = @(h) (25.*h.^8 + 765.*h.^7 + 12423.*h.^6 + 131310.*h.^5 + 962910.*h.^4 + 4944240.*h.^3 + 17191440.*h.^2+36741600.*h + 36741600) ./ (25.*h.^8 -765.*h.^7 + 12423.*h.^6 - 131310*h.^5 + 962910.*h.^4 - 4944240.*h.^3 + 17191440.*h.^2-36741600.*h + 36741600);
hv = linspace(0, 20, 1E+3);
figure
plot(hv, f(hv))
grid
EDIT — (18 Jul 2018 at 01:04 UTC)
Your edited code is entirely different from your previous code.
I am not certain what you want. Filling in the contours with different colours is straightforward with the contourf function:
contourf(x,y,gmag,[0.001 1],'b-');
colormap([1 0 0; 0 1 0]) % Colour Values < 1 Red, Values >= 1 Green
Change a colormap row to [1 1 1] to make it white if you only want one area coloured.
More Answers (0)
See Also
Categories
Find more on Lighting, Transparency, and Shading in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!