Project Euler 190
题目
Maximising a weighted
product
Let be the -tuple of
positive real numbers with for which is maximised.
For example, it can be verified that ([ ] is the integer part
function).
Find for .
拉格朗日乘数法
拉格朗日乘数法(等式约束,与不等式约束相对)用于求多元函数在一定约束下的极值。拉格朗日乘数法可以将一个 元函数和 个约束条件的最优化问题转化成一个解 元方程组的解的问题。引入的一组新参数 ,称为拉格朗日乘数。
令 为需要求极值的多元函数,, 为 个等式的约束,那么构造以下 元拉格朗日函数:
问题转化成对函数 求极值。
解决方案
令 。
那么利用拉格朗日乘数法,构造拉格朗日函数:
为求最大值,对每个 求偏导数,有
令 ,得到 。
由这个式子不难发现, 的值,都是按比例分配的,即 。
因此根据 这个约束,可以得到最大值点为 。
代码
1 2 3 4 5 6 7 8 9
| N = 15 ans = 0 for m in range(2, N + 1): w = 1 for i in range(1, m + 1): w *= (2 * i / (m + 1)) ** i ans += int(w) print(ans)
|