2017-02-06 52 views
6

I Matlab yukarıdaki işlevini çizmek için istediği yüzdençizme kapalı fonksiyon x + y - log (x) - (y) log -2 = 0 MATLAB

ezplot('-log(x)-log(y)+x+y-2',[-10 10 -10 10]); 

Ancak aşağıdaki kod kullanılır I Sadece boş bir ekran alıyorum. Fakat açıkça en azından denklemi tatmin eden nokta (1,1) vardır. Ben

ezplot('-log(y)+x+y-2',[-10 10 -10 10]); 

gibi işlevler için grafikleri alıyorum olarak çizici ayarlarında bir sorun Ben resim :)

cevap

3

konumunu belirlemek için contourc kullanabilirsiniz.

Not: minimum value of x - log(x) is 1 and that happens when x = 1. Açıkçası, aynı y - log(y) için geçerlidir. Yani, -log(x)-log(y)+x+y her zaman 2'den büyüktür, burada tam olarak 2'ye eşittir.

Denkleminiz yalnızca tek bir çözüme sahip olduğundan, çizim üzerinde hiçbir çizgi yoktur.

Bu görselleştirmek için, en C çeşitli değerleri için denklemi

ezplot('-log(x)-log(y)+x+y-C',[-10 10 -10 10]); 

çizmek edelim.

% choose a set of values between 5 and 2 
C = logspace(log10(5), log10(2), 20); 

% plot the equation with various values of C 
figure 
for ic=1:length(C) 
    ezplot(sprintf('-log(x)-log(y)+x+y-%f', C(ic)),[0 10 0 10]); 
    hold on 
end 
title('-log(x)-log(y)+x+y-C = 0, for 5 < C < 2'); 
büyük eğri C = 5 için elde edilir

enter image description here

not edin.C'un değeri azaldıkça, eğri de C = 2'a kadar tamamen küçülür.

6

kullandığımız takdirde gömmek için yeterli temsilcisi yok olduğunu sanmıyorum solve işlevinizde, işlevinizin sıfıra eşit olduğu iki noktanın olduğunu görebiliriz. , ezplot ele MATLAB eski sürümlerinde sanki biz fonksiyonu yakından bakarsak Bu noktalar biz değerler aslında karmaşık olduğunu görebilirsiniz, (1, 1) ve

syms x y 
result = solve(-log(x)-log(y)+x+y-2, x, y); 

result.x 
% -wrightOmega(log(1/pi) - 2 + pi*(1 - 1i)) 
%           1 

result.y 
% pi 
% 1 

(0.3203 + 1.3354i, pi) altındadır

[x,y] = meshgrid(-10:0.01:10, -10:0.01:10); 
values = -log(x)-log(y)+x+y-2; 

whos values 
% Name   Size     Bytes Class  Attributes 
% values  2001x2001   64064016 double complex 

görünüyor karmaşık işlevler, yalnızca gerçek veri bileşenini dikkate alarak. Bunun gibi, bu şu arsa Ancak

enter image description here

doğuracak, yeni sürümleri veri büyüklüğünü düşünün ve gerçek ve sanal bileşenleri hem sıfır iken sıfır yalnızca ortaya çıkar. Bunun doğru olduğu iki noktadan sadece bu noktalardan biri gerçek ve çizilebilir; Bununla birlikte, ezplot'un nispeten kaba örneklemesi bu tek noktayı gösteremez. x = y = 1 verilen denklemin tek çözümü olduğu için

Bu olan bu noktada

imagesc(abs(values), 'XData', [-10 10], 'YData', [-10 10]); 
axis equal 
hold on 

cmat = contourc(abs(values), [0 0]); 
xvalues = xx(1, cmat(1,2:end)); 
yvalues = yy(cmat(2,2:end), 1); 

plot(xvalues, yvalues, 'r*') 

enter image description here