在R(v.4.2.1)中求解使函数达到目标最大值的参数x值
问题分析与解决方案
首先,你的函数f(x)是平方根包裹的二次型,由于平方根是单调递增函数,最大化f(x)等价于最大化其内部的二次型表达式,这样可以简化计算。
步骤1:展开二次型
设向量v = [a, b, c, x]^T,二次型为v^T %*% rho %*% v。代入a = b = c = 1000和给定的rho矩阵,展开后得到:
二次型 = x² + 2000x + 4200000
因此,函数可简化为:
f(x) = sqrt(x² + 2000x + 4200000)
步骤2:分析函数单调性
对f(x)求导可得:
f’(x) = (x + 1000) / sqrt(x² + 2000x + 4200000)
在x ≥ 0的区间内,分子x+1000 > 0,分母始终为正,因此f’(x) > 0,说明**f(x)在x ≥ 0时单调递增**。
两种场景的结果
场景1:在区间[0, 10000]内找使f(x)最大的x
由于函数单调递增,最大值出现在区间右端点:
x = 10000- 此时
f(x) = sqrt(10000² + 2000*10000 + 4200000) ≈ 11144.5
场景2:找使f(x) = 10000的x值
解方程sqrt(x² + 2000x + 4200000) = 10000,两边平方后整理为二次方程:
x² + 2000x - 95800000 = 0
用求根公式计算得正根:
x ≈ 2111.2(负根舍去,因为x ≥ 0)
你的代码运行结果说明
你使用optimize函数在[0, 10000]区间求最大值,由于函数单调递增,代码返回的output$maximum会是10000,对应output$objective约为11144.5。
内容的提问来源于stack exchange,提问作者Ric87
相关产品推荐
相关产品推荐

