解不等式之代数和不等式

本文探讨了解正整数n的代数和不等式d < 1+1/2-1/3+1/4+1/5-1/6+...±1/n的方法。通过两种方案,一种寻找区间解,另一种寻找离散解,并提供了程序运行示例。文章强调了解过程中避免遗漏离散解的重要性,并提出了不等式规律变化后的求解问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代数和概念:数学用语。将数(实数)的加减法算式视为省略加号的几个有理数的和,称这个算式的结果为这几个有理数的代数和。

试解下列关于正整数n的代数和不等式:
d < 1+1/2-1/3+1/4+1/5-1/6+···±1/n
其中d为从键盘输入的正数,式中代数和表达式中的符号为两个“+”号后一个“-”。

1.说明:
式中符号为两个“+”号后一个“-”号,即分母能被3整出时为“-”。

2.程序设计:

方案一:

设置条件循环,每三项(包含二正一负)一起求和。若加到1/n+1/(n+1)-1/(n+2)后代数和s>d,退出循环,得一个区间解[n+1,∞]

注意
此时n还必须进行进一步检测,然后设置k(1~n)循环一项项求和,包括对n的检测,得离散解

#include<stdio.h>
void main()
{
  long n,i;
  double s,d;
  printf("请输入正数d:");
    scanf("%lf",&d);
  printf("%lf<1+1/2-1/3+1/4+1/5-1/6+···±1/n的解:\n",d);
  n=1;
  s=0;
  while(1)
  {
    s=s+1/n+1/(n+1)-1/(n+2);
    if(s>d)
      break;
    n=n+3;
  }
  printf("n>=%ld\n",n+1);
  for(i=1;i<=n;i++)
  {
    if(i%3!=0)
      s=s+1/i;
    else
      s=s-1/i;
    if(s>d)
      printf("n=%ld\n",i);
  }
  getch();
}

方案二:

方案一的程序通过循环累加和判断可以得到区间和的下限,但离散解必须从头开始逐一试探才能够获得。
如果设置条件循环,首先对前两项求和(即3/2),然后从第三项开始每三项(包含一负二正)一起求和。若加到-1/n+1/(n+1)+1/(n+2)后代数和s>d,退出循环,得到第一个离散解n+2,且可以证明所有小于n+2的值都不是解。

注意:n+2只是第一个离散解,同时所有的n+2+3i(i=1,2,3……)至少都可以保证是离散解,对于区间解的下限还需要进一步检测。

为求区间解的下限,需要对第n+2项后的代数项进行逐项累加并检测项n+2+3i-1或者n+2+3i-2(i=1,2,3……)(由于项n+2+3i已经是离散解,因此并不需要对它们进行检测),直至s>d为止。这是所得的项n+2+3i-1或n+2+3i-2即为区间解的下限。

#include<stdio.h>
void main()
{
  long n,i;
  double s,d;
  printf("请输入正数d:");
    scanf("%lf",&d);
  printf("%lf<1+1/2-1/3+1/4+1/5-1/6+···±1/n的解:\n",d);
  n=3;
  s=3.0/2;
  while(1)
  {
    s=s-1.0/n+1.0/(n+1)+1.0/(n+2);
    if(s>d)
      break;
    n=n+3;
  }
  printf("n=%ld\n",n+2);
  i=n+2;
  while(1)
  {
    if((s=s-1.0/(++i))>d)
      break;
    if((s=s+1.0/(++i))>d)
      break;
    s=s+1.0/(++i);
    printf("n=%ld\n",i);
  }
  printf("n>=%ld\n",i);
  getch();
}

3.程序运行示例及其注意事项:
方案一:请输入正数d:5
5.000000<1+1/2-1/3+1/4+1/5-1/6+···±1/n的解:
n>=203939
n=203936
n=203938
方案二:请输入正数d:7
7.000000<1+1/2-1/3+1/4+1/5-1/6+···±1/n的解:
n=82273511
n>=82273513

注意:一个是离散解,后一个是区间解。特别要注意不要遗失离散解
以上两个枚举法的循环次数取决于解n的上限,当输入的参数d越大时,n的上限也就越大,枚举的复杂度也就越高,求解也就变得越困难由于数值过大,上述示例运行需要一定时间
例如当d逐渐增加到大于7时,解值会迅速增长而变得非常大。甚至超出相应变量的范围或计算机的计算范围,这时就不可能得到不等式的解。

变式:把不等式中的“二正一负”的规律改变为“三正一负”,程序应该怎样修改?试求出修改后的不等式大于5的解。

由代数和的计算规律总结该不等式求解的一般规律

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值