c 程序思路 求助

[复制链接]
查看11 | 回复1 | 2010-7-10 19:10:51 | 显示全部楼层 |阅读模式
一非线性的函数,将函数值列了一张表作为数组保存了
然后现在知道 函数值,怎么去反求落在哪个区域呢?
例如数组这样的y=[1,2,5,8,10,15,19,20]

相对于的x=[1,2,3,4,5,6,7,8,9]
现在有一个值 例如 17,怎么反求x落在那个区域呢?把右边的值当做它的x
用逐次逼近吗、还有啥好办法呢都是整形的数
任何建议都很感谢

回复

使用道具 举报

千问 | 2010-7-10 19:10:51 | 显示全部楼层
没有你想的那么复杂,假设该函数为一一映射关系,且假设y[0]=f(0),那么y[x]=f(x),设反函数为g=g(y),则:int Y[MAX] = {1,2,5,8,10,15,19,20};int g(int y){ int i = 0; for(i = 0; i<MAX-1; i++)
if(Y <= y && y <= Y[i+1]) return i;}这样x=g(y)返回的是区间[f(x), f(x+1)]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行