下面是我根據之前公司**抽象的乙個需求:
已知 剩餘人數=總人數-總人數*中毒概率 -總人數*中毒概率*死亡概率 ,單位時長為1ms,記為f(x);隨著時間的變化,剩餘的人數將作為引數x傳入f(x),求50ms時f(x)的值?在時間變化n上 f(x)的值?
解:不妨設其中總人數為x
則剩餘人數 f(x) = x - x * %c - (x * %c - x * %c * %d)
其中%c,%d為常數概率,在定義中體現
化簡後原式如下:
f(x)=x(1-%c(1+%d))
若執行函式的單位統一為1ms
則在f(x)的執行的頻率上:
存在et變數 為單位時間的倍數 50ms (則標誌 f(x)的函式遞迴執行50次),可表示為如下演算法:
f(x) _et=f ( f( f(...)_48)_49 )_50
推導:遞迴一次 => f(x) = x(1-%c(1+%d))
遞迴兩次 => f(f(x)) = f(x)* (1-%c(1+%d)) = x(1-%c(1+%d2)) *( 1-%c(1+%d))
=x(1-%c(1+%d))^2
遞迴三次 => f(f(f(x))) = x(1-%c(1+%d))^2 * (1-%c(1+%d)) = x(1-%c(1+%d))^3
遞迴n次 => f _n = x(1-%c(1+%d))^n
則在計算機中可以定義為介面函式:
function_modpeople(unsigned int recurnum,double allpeople, double& surpuls)
#define ppoisoning 0.02 //中毒概率
#define dpoisoning 0.01 //死亡概率
void function_modpeople(unsigned int _ms_recurnum,double allpeople, double& surpuls)
void function_rmodpeople(double allpeople, double& surpuls)
int main()
{#ifdef _win32
consoleoutformat();
#endif
double surpulspeople;
function_modpeople(50,2000,surpulspeople);
std::cout最終結果:
迭代跟最終演算法結果一致為720.944。
以上是自定義單位週期50ms上的執行結果,那麼我們可以進行如下的推導:
不妨設迭代演算法:
f _n = g(x,n) 其中 x 為 遞迴演算法f(x) _1中的x 也就是初始化引數(2000),那麼n就是在時間時間片上的單位時長。
我們可以用如下的函式影象表示:
其中常數a = (1-%c(1+%d)) 為常數,則抽象函式 y=a^x * c, 上圖是關於人數衰減曲線。
已知以上函式,則關於時間x 和 剩餘f(x),及可以動態算出任意的週期時間的人數,在函式抽象的過程中,我們發現計算人數和中毒概率始終可能為double 型別,則上圖描述衰減變化時存在侷限性,則當x->∞+時始終不會得到剩餘人數為0的f(x)計算結果。則推導此函式為分段函式,
f(n) < 1 時, f(n)=0;
f(n) >= 1 時, f(n)= x(1-%c(1+%d))^n , 其中x=2000;
結果統計中能夠用到演算法:
當0=1; 可求出衰減趨勢:
得到以上函式之後,我們就可以對函式進行 d(f(n))/dn 存在 f(n)>1時,也就是求導,這樣我們對n代入導數計算中,就可以得到瞬時變化率,這裡可以用人員衰減趨勢表示(導數定義),當然,可以進行更多擴充套件(某一時刻內衰減最值)。
基本的遞迴函式
以前一開始接觸遞迴,真的很難理解那到底是怎麼執行的。但是昨天化了一晚上理解完了一段python語言中的一段遞迴後,頓時豁然開朗了。完全搞明白後,自己又寫了cpp中的pow函式和iterate函式,分別用於求某數的次方和累加和。遞迴函式前面的一部分要寫明什麼時候跳出這個迴圈。比如求a的b次方的函式,就...
遞迴函式的基本概念
遞迴函式說白了就是乙個自己呼叫自己的函式 比方說def print num num if num 10 這是跳出的條件 return 這是跳出的位置 else print num num 1 print num num 再次呼叫自己 print num 1 這就算是乙個簡單的遞迴函式,依次列印1 1...
C語言 函式的基本使用和遞迴
三 函式的呼叫 四 函式的宣告和定義 五 函式遞迴 1 庫函式 為了支援可移植性和提高程式的效率,c語言的基礎庫中提供了一系列庫函式,滿足一些基礎功能,他們不是業務性的 在開發的過程中每個程式設計師都可能用的到,方便程式設計師進行軟體開發。c語言常用庫函式 使用庫函式,必須包含 include對應的...