找回密码
 欢迎注册
楼主: mathematica

[提问] 由“陈计的一道代数不等式”所发出的疑问

[复制链接]
发表于 2010-7-7 18:49:24 | 显示全部楼层
数值计算表明,除了n=4以外,其他都是取切线???
  1. s0()=
  2. {
  3.     sqrt(2+sqrt(5))
  4. }

  5. f0(x)=
  6. {
  7.     (sqrt(x^4+x^2-1)+x)/(x^2-1)
  8. }

  9. df0(x)=
  10. {
  11.     local(t);
  12.     t=sqrt(x^4+x^2-1);
  13.     -((x^2+1)*t+3*x^3-x)/((x^4-2*x^2+1)*t)
  14. }

  15. pl(n)=
  16. {
  17.     local(s,b,e);
  18.     b=s0();
  19.     e=2*b;
  20.     s=-1.0/(n-1.0);
  21.     while(df0(e)<=s,e=e*2);
  22.     solve(X=b,e,df0(X)-s)
  23. }

  24. getsr(n)=
  25. {
  26.     local(b,ex,ey,e);
  27.     b=s0();
  28.     ex=pl(n);
  29.     ey=f0(ex);
  30.     e=(ex+(n-1)*ey)/n;
  31.     [e,b]
  32. }

  33. getub(n)=
  34. {
  35.    local(b,e);
  36.    b=pl(n);
  37.    e=2*b;
  38.    while(e+(n-1)*f0(e)<n*s0(),e=2*e);
  39.    [b,e]
  40. }

  41. fx(n,b,e,s)=
  42. {
  43.     solve(X=b,e,X+(n-1)*f0(X)-n*s)
  44. }

  45. hx(n,b,e,s)=
  46. {
  47.     local(x,y);
  48.     x=fx(n,b,e,s);
  49.     y=(n*s-x)/(n-1);
  50.     log(x+1/x)+(n-1)*log(y+1/y)
  51. }

  52. pf(n)=
  53. {
  54.     local(ub,sr);
  55.     ub=getub(n);
  56.     sr=getsr(n);
  57.     plot(s=sr[1]+0.000001,sr[2],n*log(s/n+n/s)-hx(n,ub[1],ub[2],s));
  58. }
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-7-8 06:55:32 | 显示全部楼层
呵呵,上面代码错了一个小地方。(主要由于hujunhua和我使用的记号不同迷惑了我)
改了以后就可以看出解总是存在而且唯一

  1. s0()=
  2. {
  3.     sqrt(2+sqrt(5))
  4. }

  5. f0(x)=
  6. {
  7.     (sqrt(x^4+x^2-1)+x)/(x^2-1)
  8. }

  9. df0(x)=
  10. {
  11.     local(t);
  12.     t=sqrt(x^4+x^2-1);
  13.     -((x^2+1)*t+3*x^3-x)/((x^4-2*x^2+1)*t)
  14. }

  15. pl(n)=
  16. {
  17.     local(s,b,e);
  18.     b=s0();
  19.     e=2*b;
  20.     s=-1.0/(n-1.0);
  21.     while(df0(e)<=s,e=e*2);
  22.     solve(X=b,e,df0(X)-s)
  23. }

  24. getsr(n)=
  25. {
  26.     local(b,ex,ey,e);
  27.     b=s0();
  28.     ex=pl(n);
  29.     ey=f0(ex);
  30.     e=(ex+(n-1)*ey)/n;
  31.     [e,b]
  32. }

  33. getub(n)=
  34. {
  35.    local(b,e);
  36.    b=pl(n);
  37.    e=2*b;
  38.    while(e+(n-1)*f0(e)<n*s0(),e=2*e);
  39.    [b,e]
  40. }

  41. fx(n,b,e,s)=
  42. {
  43.     solve(X=b,e,X+(n-1)*f0(X)-n*s)
  44. }

  45. hx(n,b,e,s)=
  46. {
  47.     local(x,y);
  48.     x=fx(n,b,e,s);
  49.     y=(n*s-x)/(n-1);
  50.     log(x+1/x)+(n-1)*log(y+1/y)
  51. }

  52. pf(n)=
  53. {
  54.     local(ub,sr);
  55.     ub=getub(n);
  56.     sr=getsr(n);
  57.     plot(s=sr[1]+0.000001,sr[2],n*log(s+1/s)-hx(n,ub[1],ub[2],s));
  58. }
复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-7-8 06:58:06 | 显示全部楼层
添加一个函数计算边界s的数值解,采用hujunhua的记号,即s是所有$x_i$的平均值:
  1. sf(n)=
  2. {
  3.     local(ub,sr);
  4.     ub=getub(n);
  5.     sr=getsr(n);
  6.     solve(s=sr[1]+0.0000000001,sr[2],n*log(s+1/s)-hx(n,ub[1],ub[2],s))
  7. }
复制代码
(06:56) gp > sf(3)
%6 = 2.002867408063500179411985161
(06:56) gp > sf(4)
%7 = 1.928358916474980428360084936
(06:56) gp > sf(5)
%8 = 1.864007650000524850777355005
(06:56) gp > sf(6)
%9 = 1.810514381228163166929447075
(06:56) gp > sf(7)
%10 = 1.765782350018739829894444919
(06:56) gp > sf(8)
%11 = 1.727864312049133923676339702
(06:56) gp > sf(9)
%12 = 1.695269424440409338819703692
(06:56) gp > sf(10)
%13 = 1.666891983135502143928659033
(06:56) gp > sf(20)
%14 = 1.501387153741824255507396749
(06:56) gp > sf(100)
%15 = 1.250349255508031551479807498
(06:56) gp > sf(1000)
%16 = 1.090580657781168832151185931
(06:57) gp > sf(2)
%17 = 2.058171027371492250321981048

评分

参与人数 2威望 +10 金币 +4 贡献 +4 经验 +4 鲜花 +14 收起 理由
wayne + 6 + 6 正确!!!
hujunhua + 4 + 4 + 4 + 4 + 8 应该是正确的

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-7-8 07:10:11 | 显示全部楼层
将plot函数改成ploth可以画出高精度的图(但是速度很慢)
dw.GIF
如图,4个图分别是n=3,4,100,1000的情况
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-7-8 09:54:40 | 显示全部楼层
现在我们记$f(x)=ln(x+1/x),x>0$,那么我们现在的简化后的问题是已知
$x+(n-1)y=n*s$,求$f(x)+(n-1)f(y)$的最小值
我们可以改目标函数为$g(y)=f(n*s-(n-1)*y)+(n-1)f(y)$
于是$g'(y)=-(n-1)f'(x)+(n-1)f'(y)$,所以在$f'(y)=f'(x)$时才有$g'(y)=0$
同样$g''(y)=(n-1)^2f''(x)+(n-1)f''(y)$
其中$f'(y)={y^2-1}/{y^3+y},f''(y)={1+4y^2-y^4}/{y^2(y^2+1)^2}$

评分

参与人数 1鲜花 +6 收起 理由
wayne + 6 这个分析很精彩,不过好像陷入循环了?

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-7-8 12:48:50 | 显示全部楼层
23# mathe

能保证精度吗?

我是说,有误差分析吗
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-7-8 13:07:52 | 显示全部楼层
我们应该改为在约束条件${(x+(n-1)y=ns),(f'(x)=f'(y)):}$之下,求目标函数$f(x)+(n-1)f(y)-nf(s)$的情况,而我们需要证明这个目标函数关于s是单调的,也就是说,上面目标函数只能在边界取到最值。
对这个函数采用拉格朗日极值法,得到
${(f'(x)+lambda_1+lambda_2*f''(x)=0),((n-1)f'(y)+(n-1)lambda_1-lambda_2*f''(y)=0),(-nf'(s)-nlambda_1=0):}$
于是$lambda_1=-f'(s)$,再由$f'(x)=f'(y)$这个已知条件得出$f'(s)=f'(x)$或$(n-1)f''(x)+f''(y)=0$
由于我们已经知道在我们讨论的范围内必然有$f'(s)!=f'(x)$,所以只能取第二种可能。
也就是我们需要证明方程
${(f'(x)=f'(y)),((n-1)f''(x)+f''(y)=0):}$没有符合要求的解
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-7-8 13:12:53 | 显示全部楼层
23# mathe

能保证精度吗?

我是说,有误差分析吗
wayne 发表于 2010-7-8 12:48

计算精度应该足够高了,而且计算结果也很合理。现在余下问题主要就在于如果能够证明差值函数是关于s的单调增函数就好办了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-7-8 13:20:27 | 显示全部楼层
23#的结果与14#的结果,小数点前5位是相同的。我没带本本(太重,2.7公斤),无法精算,只能用execel或者几何画板计算,可以保证前5位。

现在终于敢说:wayne在8#算的6.0043029605431965656237025541486不正确。因为6.00430.../3=2.00143...<2.00286...
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-7-8 13:26:22 | 显示全部楼层
呵呵,现在找到解决方法了。
我们查看hujunhua定义的曲线$x^2y^2=(x+y)^2+1$,它等价于$f'(x)=f'(y)$
把后面的表达式看成y关于x的隐函数,我们可以得到$dy/dx={f''(x)}/{f''(y)}$
于是27#最后的要求相当于在曲线$x^2y^2=(x+y)^2+1$上取一点,这个点处切线的斜率为$-1/{n-1}$,于是这个唯一的极值点对应与我们一直关注的那条切线的切点,也就是说正好在我们讨论的范围的边界上。而对于我们感兴趣的那个区域,整个区域里面不在存在任何极值点,所以如果将目标函数$f(x)+(n-1)f(y)-nf(s)$看成s的隐函数,在我们讨论的范围里面它是单调的,这个正好解释了24#的图像。也就是说,我上面用二分法来计算总是不会出问题的,而我们讨论的s的分界点是唯一存在的。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-3-29 03:13 , Processed in 0.046300 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表