CF1                CF2                           CFn            
C0 =  --------------  +  --------------  +  ...... +  --------------         1                2                            n 
        (1+IRR)            (1+IRR)                      (1+IRR) 
也就是:
         n      CFt 
  C0  =  Σ  ----------------
        t=1   (1+IRR)t 现在要求IRR的解?如何解法?
请数学高手帮忙看看,提供个思路后者C/JAVA算法都可以.

解决方案 »

  1.   

    CSDN论坛的功能太差,连图片都不能贴,CFn是一个量还是 C * Fn ?
      

  2.   

    C0,CF1,CF2.....CFn,IRR都是變量。
      

  3.   

    ---CSDN论坛的功能太差,连图片都不能贴
    XML 在一个节点下的数据区分和parse 链接很难的!
    嘿嘿,也许CSDN该增加两个节点,一个是图片地址,一个是引用链接地址了.
      

  4.   

    Re:原来是内含报酬率二分搜索即可---请问这是什么意思?您知道解决方法吗?IRR不就是内含报酬率嘛(看来你对这个公式的来源还不了解)!         n      CFt 
             Σ  ----------------                 (1)
            t=1   (1+IRR)^t                      
    是IRR的单调函数,因此可以用二分,具体算法如下:初始化IRR_l,IRR_r,只要让IRR_l,IRR_r代入(1)式求出C_l,C_r,确保IRR_l>C0>IRR_r ,这个容易做到,
    比如可以:
    IRR_l=0 
    IRR_r=1e10 一个比较大的数字
    while(IRR_r-IRR_l>1e-6)
    {
        IRR_m=(IRR_l+IRR_r)/2;
        把IRR_m代入(1)求出C_m,
        if(C_m>C0)IRR_l=IRR_m;
        else IRR_r=IRR_m;
       
    }
    IRR_m=(IRR_l+IRR_r)/2
    就是你要的解
      

  5.   

    終于解決掉,感謝galois_godel() public class count { /**
     * @param args
     */

    public static double countIRR(double IRR,int n,double CF[])
    {
    //IRR內涵報酬率
    //n運算期數
    //CF[]現金流量
    double C0=0;
    int i;
    for(i=1;i<n+1;i++)
    {
    C0=C0+CF[i]/(Math.pow(1+IRR,i));//運算公式
    }
    return C0;

    }
    public static void main(String[] args) {

    // 程式方法:採用二分法獲取IRR

    double IRR=0;//內涵報酬率
    double C0=95000;//貸款金額-帳管費
    double IRR_S=0;//IRR可能開始值
    double IRR_E=1;//IRR可能結束值
    double Cn=0;
    int i=0;
    int n=36;//運算期數
    double CF[]=new double[n+1];//現金流量值
    for(i=1;i<n+1;i++)
    {
    CF[i]=3227.0;//1-36期的現金流量值
    }
    while(IRR_E-IRR_S>0.00000001)
    {
    IRR=(IRR_S+IRR_E)/2;
    Cn=countIRR(IRR,n,CF);
        if(Cn>C0)
    IRR_S=IRR;
        else 
    IRR_E=IRR;
    }
    System.out.println("IRR="+IRR);
    System.out.println("用IRR運算到的C0值="+countIRR(IRR,n,CF));
    }}