数学太烂,无奈求助

眼睛猥琐男 2010-09-01 09:42:11
Ci*Xi/(C1X1 + ... + CnXn) - Ci = d,其中C1到Cn是常量,例如C1 = 1220, C5 = 3400;而Xi是变量,取值范围是1,2,...,100。而且n也不会很大,是有限的

问题就是如何保证 d 能在一定范围内呢? 例如 | d | <= 100


各位数学大牛,一定要救偶。

...全文
359 29 打赏 收藏 转发到动态 举报
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
xingzhe2001 2010-09-02
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 xingzhe2001 的回复:]
求偏导应该可以,但是我不记得公式了,下面用笨办法
楼主的意思是
……
[/Quote]

不好意思敲错了,最后一个是个小于号
xingzhe2001 2010-09-02
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 six_dimensional 的回复:]
Ci*Xi/(C1X1 + ... + CnXn) - Ci = d,其中C1到Cn是常量,而Xi是变量
那么
C1*X1/(C1X1 + ... + CnXn) - C1 = d
C2*X2/(C1X1 + ... + CnXn) - Cn = d



Cn*Xn/(C1X1 + ... + CnXn) - Cn = d
n个等式相加,
(C1X1 + ... + Cn……
[/Quote]
右边的不是d,而是di, 每个d都不一样,只不过都满足|d|<100
beyond071 2010-09-02
  • 打赏
  • 举报
回复
[Quote=引用 26 楼 six_dimensional 的回复:]
Ci*Xi/(C1X1 + ... + CnXn) - Ci = d,其中C1到Cn是常量,而Xi是变量
那么
C1*X1/(C1X1 + ... + CnXn) - C1 = d
C2*X2/(C1X1 + ... + CnXn) - Cn = d



Cn*Xn/(C1X1 + ... + CnXn) - Cn = d
n个等式相加,
(C1X1 + ... + Cn……
[/Quote]
应该就是这样,通过|d|<100推出|1 - (C1+C2+...Cn)|/n < 100,这个就是条件
Six_dimensional 2010-09-02
  • 打赏
  • 举报
回复
Ci*Xi/(C1X1 + ... + CnXn) - Ci = d,其中C1到Cn是常量,而Xi是变量
那么
C1*X1/(C1X1 + ... + CnXn) - C1 = d
C2*X2/(C1X1 + ... + CnXn) - Cn = d



Cn*Xn/(C1X1 + ... + CnXn) - Cn = d
n个等式相加,
(C1X1 + ... + CnXn)/(C1X1 + ... + CnXn) - (C1+C2+。。。。+Cn) = nd
1-(C1+C2+。。。。+Cn)=nd
ci为常数,这样算的d为常数有哪里不对吗?



眼睛猥琐男 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 pirixiu 的回复:]
好像还是没理解 如果Xn=2 其余Xi都等于1,所有C都相等,那么当i=n的时候,d=[2C/(N+1)C]*NC-C=[(N-1)/(N+1)]*C约等于C 好像还是没范围吧?到底哪些东西是定下来的?
[/Quote]

你的这个特例,的确不在我要范围内,现在就是要找出满足的。

定下来就是:每一个Ci,但值不一定一样(你可以理解为1000--5000)。 还有n是定的,(可以假设为100),
barbara2008 2010-09-01
  • 打赏
  • 举报
回复

#include <stdio.h>

#define N 3
#define THRESHOLD 100

bool GetValueRange(int* X);

int main()
{
int Array[N] = {0};

for( int i = 1; i < THRESHOLD; i++)
{
for( int j = 1; j < THRESHOLD; j++)
{
for( int k = 1; k < THRESHOLD; k++)
{
Array[0] = i;
Array[1] = j;
Array[2] = k;
GetValueRange(Array);
}
}
}


return 0;
}

bool GetValueRange(int* X)
{
int ConstCoefs[N] = {1220,2220,3101};

float CoefSum= 0;

float sum = 0;

for(int i = 0; i < N; i++)
{
sum += ConstCoefs[i]*X[i];
}

for(int i = 0; i < N; i++)
{
CoefSum += ConstCoefs[i];
}

for(int i = 0; i < N; i++)
{
if (X[i]*CoefSum/sum >= ( (double)THRESHOLD/ ConstCoefs[i] + 1) )
{
return false;
}
}

return true;
}

用穷举简单的试了下,其中把式子做一下变形:
( Ci*Xi/(C1X1 + ... + CnXn) )* (C1 + ... Cn) - Ci = d (1)

两边同加Ci有:
( Ci*Xi/(C1X1 + ... + CnXn) )* (C1 + ... Cn) = d + Ci (2)

两边同除以Ci有
( Xi/(C1X1 + ... + CnXn) )* (C1 + ... Cn) - Ci = d/Ci + 1 (3)

如果d < 100, 那么有 (1 + d/Ci) < 100/Ci + 1;
pirixiu 2010-09-01
  • 打赏
  • 举报
回复
好像还是没理解 如果Xn=2 其余Xi都等于1,所有C都相等,那么当i=n的时候,d=[2C/(N+1)C]*NC-C=[(N-1)/(N+1)]*C约等于C 好像还是没范围吧?到底哪些东西是定下来的?
air_snake 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 23 楼 xingzhe2001 的回复:]

求偏导应该可以,但是我不记得公式了,下面用笨办法
楼主的意思是
显然假如随便有一个不为0的数k, 有x0=x1...=xn = k, 带入公式有 d=0
这是一个特解。现在假设我们只改变一个值 xi = k+e, 那么我们考察+e带来的变化

该式减去第一个式子,得到

因为都是Cj都是常数,xj都是k除了第i个为k+e,所以用符号代替一大堆为

这个不等式很好求了吧,对每一个……
[/Quote]
我先拜一下。
眼睛猥琐男 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 pirixiu 的回复:]
我可不可以这么理解,就是对于给定的N个常量C[N],我可以给出相应的N个变量X[N]。来保证,无论i为多少时,d的绝对值都小于某个值。还有一个问题,这个值也是和C[N]一样给定的么?
[/Quote]
恩,大概就是你那个意思。 但是Xi的取值范围在 1 到100 随机。 正是因为这个变,所以才麻烦。如果这个也定了,那么不存在d 的范围问题了
眼睛猥琐男 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 michael122 的回复:]
是让求xi的值,使得每个式子的|d|<=100 ?
Ci*Xi/(C1X1 + ... + CnXn) 是个介于0到1之间的数
d基本就和-ci差不多大小,这个不一定有解,要看你的系数的值
[/Quote]

我晕是在不好意思,改一下:
( Ci*Xi/(C1X1 + ... + CnXn) )* (C1 + ... Cn) - Ci = d
pirixiu 2010-09-01
  • 打赏
  • 举报
回复
我可不可以这么理解,就是对于给定的N个常量C[N],我可以给出相应的N个变量X[N]。来保证,无论i为多少时,d的绝对值都小于某个值。还有一个问题,这个值也是和C[N]一样给定的么?
michael122 2010-09-01
  • 打赏
  • 举报
回复
是让求xi的值,使得每个式子的|d|<=100 ?
Ci*Xi/(C1X1 + ... + CnXn) 是个介于0到1之间的数
d基本就和-ci差不多大小,这个不一定有解,要看你的系数的值
眼睛猥琐男 2010-09-01
  • 打赏
  • 举报
回复
各位数学大牛,一定要救偶。两个帖子一共200分。 分还比较客观的嘛。
http://topic.csdn.net/u/20100901/09/5a87e06c-adc7-4d3a-a004-9e80d6101ef8.html?027636438929600743
眼睛猥琐男 2010-09-01
  • 打赏
  • 举报
回复
一个哥们说,跟概率统计有关系。偶连高数都没学好。
眼睛猥琐男 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 pirixiu 的回复:]
你的意思是数组C是已经给定的了是不是?
[/Quote]

是的,Ci ,i取值 1...n 都定了
pirixiu 2010-09-01
  • 打赏
  • 举报
回复
你的意思是数组C是已经给定的了是不是?
眼睛猥琐男 2010-09-01
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 davidfracs 的回复:]
没看懂题啊。
[/Quote]

哪里没看懂哦,请说
DavidFracs 2010-09-01
  • 打赏
  • 举报
回复
没看懂题啊。
xingzhe2001 2010-09-01
  • 打赏
  • 举报
回复
求偏导应该可以,但是我不记得公式了,下面用笨办法
楼主的意思是
显然假如随便有一个不为0的数k, 有x0=x1...=xn = k, 带入公式有 d=0
这是一个特解。现在假设我们只改变一个值 xi = k+e, 那么我们考察+e带来的变化

该式减去第一个式子,得到

因为都是Cj都是常数,xj都是k除了第i个为k+e,所以用符号代替一大堆为

这个不等式很好求了吧,对每一个i重新算一遍这些值然后算出一个ei来,
xingzhe2001 2010-09-01
  • 打赏
  • 举报
回复
图片不正常?
加载更多回复(8)

33,006

社区成员

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

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