2016-10-02 86 views
0

我想在二叉樹上做一個簡單的突變積累過程的陰謀...... 我在gnuplot的技術問題是,我想繪製一個具體的獲取2突變的可能性(2 **(k + 1)/(1-(1/2)),這是確定它的等式:Gnuplot求和問題

P_ {2 mutation} = sum [k = 0:n] 2)** k))的)(1-EXP(-mu k))的

(不要與式IM不知道這是正確的還:))打擾 其中n是數二叉樹的水平,mu是突變率,m是previo的數量usly隨機拋出突變到圖形邊緣... 我想打一個情節是這種可能性取決於二叉樹的水平...

因此,我寫了一個腳本這是這樣的:

set term pngcairo size 800,600 
set title "Két mutáció megjelenésének valószínűsége, egy n szintű bináris fa egyik sejtvonalában" 
set xlabel"szintek száma (n)" 
set ylabel"Két mutáció megjelenésének valószínűsége (P_{2^{lin})" 
set xrange[1:10] 
set yrange[0:1] 

set output '2mutvalsz.png' 

set multiplot 
do for[i=1:10]{ 
mu = 0.1+(i*0.1) 
m = 4 
f(x)=(x/((2**(x+1))*(1-(0.5)**x))) 

    if(m<floor(f(x))) 
    { 
     p(x)=sum [k=0:floor(x)](m*(1/((2**(x+1))*(1-(0.5)**x))))*(1-exp(-mu*k)) 
    } 

    else 
    { 
     p(x)=1 
    } 

plot p(x) lt i lw 1 
} 
unset multiplot 
set output 

所以我的問題是,我不知道這是否是正確的做我想做的 if語句... 我想是脫俗的條款M < F(X),其中f(x )是關於n的邊的數量,這是一個整數值,因此我使用floor(f(x)),並且通過x值求和(這是層數的數量,必須是一個整數的...所以地板(x)的,像一個heavyside功能,使x軸離散的)中的總和...

並且還我得到的錯誤消息: gnuplot的>負載「2mutvalsz.plt」 線27:未定義的變量:X

,其中第27行是循環的DO結束...

所以我的問題是,它是一個正確的方法,使求和整數x值當然爲什麼和我收到錯誤信息...

謝謝,我希望一切都很清楚...

回答

1

錯誤消息是由於Gnuplot加載腳本時解釋腳本中的if語句而產生的 - 它試圖評估if語句的條件,並且由於變量x未定義,它會生成所提到的消息。

你可以把一切融合在一起使用三元運算符爲:

p(x)=(m<floor(f(x)))?(sum [k=0:floor(x)](m*(1/((2**(x+1))*(1-(0.5)**x))))*(1-exp(-mu*k))):1; 

然而,由於功能f(x)是對[0,1]少徵收x -range比1,病情m<floor(f(x))將始終爲false。

+0

ohh ...是的,我的壞... 非常感謝,它幫助了很多! –