2017-07-29 10 views
0

私は、水平線と曲線の間の領域を塗りつぶそうとしていました。私はthisの指示に従っています。 2つの曲線はIグラフを生成するために使用していたコードがMatlab 2017の塗りつぶし機能が機能しません

alpha = [0:0.01:1]; 
mu = 1; 
V = [0:0.01:10]; 
Lambda1 = 2; 
y2 = (1./(mu-alpha*Lambda1)+2*alpha*Lambda1./((mu-alpha*Lambda1).^2)).*(alpha<=0.3)+max(V).*(alpha>0.3); 
f0 = max(V).*ones(1,length(alpha)); 
A = [alpha,fliplr(alpha)]; 
Y1 = [f0,fliplr(y2)];  
figure 
h1 = fill(A,Y1,'k'),axis([0 1 0 11]), 
set(h1, 'FaceAlpha', 0.1) 

考えある

enter image description here

あることalphaが実行変数、すなわち、横軸であることです。青い曲線は、区分的な関数、すなわちalpha=0.3の前には、それはqudratic関数であり、alpha=0.3の後には、それは10のままです。基本的には、0<=alpha<=0.3が陰影付けされているときに領域を持ちたいと思います。

fill機能の仕組みを理解していると思ったので、上記のコードがうまくいくと思いました。 fill(x,y,'r')x,yは、2D空間内の共有の境界の座標を表す2つのベクトルです。

私の場合、なぜ動作しないのか分かりません...

答えて

0

あなたのコードは正しいですか?しかし、あなたの関数はalpha=0.5の特異点を持っています:(mu-0.5*Lambda1)=0

あなたのy2(51)=NaNとMatlabは正しくネジを締めます。

+0

ありがとうございました!私は元々それを認識しませんでした。私は私の 'y2'の最初の部分が' alpha = 0.5'で特異点を持つことを知っています。しかし、私はインジケータ関数 '(alpha <= 0.3)'を持っているので、問題ではないはずだと思っていました。今私は思ったように明らかにmatlabは計算をしません。私は今それを学ぶ。 –

関連する問題