请教一利率算法,分不够另开帖

huangxinru 2003-10-15 04:16:57
已知某一天(日期D)借款M元,现等期限还款,还款日期、金额依次分别为:
d1,m1
d2,m2
. .
. .
d(n),m(n) 其中(m1+m2+...+m(n))>M,D<d1
共n期,求借款月利率(按月复利)
有否现成的计算程序?
...全文
29 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangxinru 2003-10-16
  • 打赏
  • 举报
回复
对,就是这意思,那位大虾有现成的程序吗,给高分。
BlueSky2008 2003-10-16
  • 打赏
  • 举报
回复
方程你应该会列吧,设利率是x,根据那些还款规则,最后还清,得到一个方程:
f(x)=0;再把f'求出来,代入到程序中的Func函数中就行了。
迭代初值x就是你猜测的利率,一般设0就行了。也可以设成可能的利率值。
//////////////////////////////////////////////////////////////////////
// 求非线性方程一个实根的牛顿法
//
// 调用时,须覆盖计算方程左端函数f(x)及其一阶导数f'(x)值的虚函数
// void Func(double x, double y[])
// y(0) 返回f(x)的值
// y(1) 返回f'(x)的值
//
// 参数:
// 1. double *x - 传入迭代初值(猜测解),返回在区间求得的一个实根
// 2. int nMaxIt - 递归次数,默认值为60
// 3. double eps - 精度控制参数,默认值为0.000001
//
// 返回值:BOOL 型,求解是否成功
//////////////////////////////////////////////////////////////////////
BOOL CNLequation::GetRootNewton(double* x, int nMaxIt /*= 60*/, double eps /*= 0.000001*/)
{
int l;
double y[2],d,p,x0,x1;

// 条件值
l=nMaxIt;
x0=*x;
Func(x0,y);

// 求解,控制精度
d=eps+1.0;
while ((d>=eps)&&(l!=0))
{
if (y[1] == 0.0)
return FALSE;

x1=x0-y[0]/y[1];
Func(x1,y);

d=fabs(x1-x0);
p=fabs(y[0]);
if (p>d)
d=p;
x0=x1;
l=l-1;
}

*x=x1;

return TRUE;
}
Cyberweaver 2003-10-16
  • 打赏
  • 举报
回复
月利率M 是不是可以这样表示:
假如每日利率D ,一个月有n天,
1+M=(1+D)^n,对吗?
zzwu 2003-10-15
  • 打赏
  • 举报
回复
好象向银行贷款,银行就要给你一张清单,叫你几次还款,还款日期、金额依次写成了一个你所希望要的那种结果。
zzwu 2003-10-15
  • 打赏
  • 举报
回复
除非有现成的,否则不是立时立刻就能出手的。
huangxinru 2003-10-15
  • 打赏
  • 举报
回复
谁有现成的程序,1k分送上
BlueSky2008 2003-10-15
  • 打赏
  • 举报
回复
蛮繁的,要解一个高次方程,可以用迭代法逼近。
huangxinru 2003-10-15
  • 打赏
  • 举报
回复
难道这里没有金融方面的大侠吗?

33,008

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧