f(n) = n^4 + 100n^2 + 50 的上限是多少?

What's the upper bound of f(n) = n^4 + 100n^2 + 50?

我正在解决一些与 Big-O 相关的练习,但我被困在这个练习上:

Exercise - Find upper bound for f(n) = n^4 + 100n^2 + 50

我试图一步步解决它但是出了点问题......:

1.=> n^4 + 100n^2 + 50 <= O(g(n))
2.=> n^4 + 100n^2 + 50 <= Cn        ** Added -n^4 to both sides
3.=> n^4 + 100n^2 + 50 -n^4 <= Cn -n^4
4.=> 100n^2 + 50 <= Cn - n^4         ** Put n in common
5.=> 100n^2 + 50 <= n(C - n^3)       ** Divided n in the opposite site
6.=> (100n^2 + 50)/n <= C -n^3       ** Assumed 1 for n
7.=> 100 + 50 <= C - 1                      
8.=> 151 <= C

有问题,因为答案是 c = 2 和 n=11。我在 Whosebug 上看到了同样的问题,但没有一步一步的解决方案

很容易猜到这个函数的上界是 O(n^4),因为 k * n^4 可以压倒 n^3 的任何倍数和其他小于 4 的 n 的倍数,在一定的 n 值之后(其中 k 是倍数)。

让我们举几个例子:

  1. n^4 < 2*n^4,对于所有 n>1。

  2. n^4 + n^3 < 2*n^4,对于所有 n>2.

在您的情况下,您需要找到满足方程式的系数 K,使得 n^4 + 100n^2 + 50 <= k * (n^4).

我会把正确的方程留给你来解决,因为你给出的那个显然是不正确的:

n^4 + 100n^2 + 50 <= O(g(n))
n^4 + 100n^2 + 50 <= O(n^4)
n^4 + 100n^2 + 50 <= k * n^4
n^4 + 100n^2 + 50 <= n^4 + 100*n^4 + 50*n^4
n^4 + 100n^2 + 50 <= 151 * (n^4)
// O(n^4) achieved, for all n >= 1.

将n^2代入t,将此方程化为二次方程求解,方程化简为:

t^2 + 100t + 50 <= k * t^2
// left for you to solve this.
// check for what value of `k` and `t`, this equation gets satisfied.

据我所知,我们可以用一种简单的方法解决这个问题:-

  1. n^4+100*n^2+50 -- 让我们通过假设 n^2 = t
  2. 将这个方程简化为二次方程
  3. t^2+ 100*t+50 -- 等式变化如前所述
  4. 使用二次方程并求解这个方程 (t^2+100*t+50) 我们得到两个答案。
  5. t = -100 +/- sqrt( 100^2 - 4*1*50)/2.1
  6. t = -71.8 & -128.2 -- 现在将值替换回 n^2
  7. n^2 = -71.8 & -128.2
  8. n = sqrt(-71.8) & sqrt(-128.2) = 8.47 & 11.32 -- 查看上限数字并尝试解决第一个可以替代 n 的最大数字。
  9. n = 11 因此,我们将 n = 11 作为可用于查找上限的第一个最大数

希望对您有所帮助!

n^4 + 100n^2 + 50 <= 2n^4 , for all n>=11.

因为直到10,n都会有负值。

n0 的答案是 11 因为如果我们假设 n 值 =11 和 c 值 2 ,那么条件满足大 oh 符号 f(n)<=O g(n),把 n =11 并求解二次方程,你会得到你的答案尝试在数学上使用它。 谢谢.

我们需要找到最小的增长率 g(n) 使得

c g(n) >= f(n) 对于 n>=k。

对于 c 和 k 的某个常数值,上述等式将成立。我们不考虑较低的 n 值。这意味着对于较低的 n 值,g(n) 并不重要。对于较大的 n 值,g(n) 将是 f(n) 的最大增长率。

这里,f(n)= n^4 + 100 n^2 + 50

当n很大时,g(n) = n^4

求c和k,使得c n^4 >= n^4 + 100 n^2 + 50

如果我们舍弃 100 n^2 和 50 的低项。我们可以说 c 应该是 2。

2 n^4 >= n^4 .

要找到 k 的值,请尝试替换 n^2 = t、n^4 = t^2 和 c=2,

2t^2 >= t^2 + 100t + 50

t^2 >= 100t +50

如果我从 1、2、3、4、5,6、7、8、9 和 10 开始输入 t 的值,并且 t^2 =100

10岁了,我还有

100,00 <= 100, 00 +50

在 t= 11,t^2 = 121,我有以下

14,641 >= 12150.

所以我的 k 将是 11。