(1)问题分析
由于K肯定是在1到NM之间的整数,因此相应的非线性优化问题不需要采用复杂的优化算法,直接对K在1和NM之间遍历就可以了。此外,题主的问题描述似乎有笔误,公式中1/2的指数应该是k而不是N*M,否则得到的解不是127。
(2)问题的matlab解决代码
rho_fa=1e-4;
N=10;
M=16;
min_obj_val=inf;
warning off;
for K=1:N*M
tmp_rho_fa=0;
for k=K:N*M
tmp_rho_fa=tmp_rho_fa+(1/2)^(k)*nchoosek(N*M,k);
end
obj_val=abs(rho_fa-tmp_rho_fa);
if obj_val<min_obj_val
min_obj_val=obj_val;
solution_K=K;
end
end
warning on;
fprintf('solution_K=%d\n',solution_K);
(3)代码运行结果
引用new bing部分回答作答:
运行结果如下:
代码如下:
N=10;
F=16;
p_fa=1e-4;
minobj=inf;
warning off;
for K=1:N*F
tmp_p_fa=0;
for k=K:N*F
tmp_p_fa=tmp_p_fa+(1/2)^(k)*nchoosek(N*F,k);
end
obj=abs(p_fa-tmp_p_fa);
if obj<minobj
minobj=obj;
result=K;
end
end
warning on;
fprintf('result=%d\n',solution_K);
求:
>> syms x
>> y = 4*x^5
y =
4*x^5
>> yprime = diff(y)
yprime =
20*x^4
>>
>> syms x
>> f = (exp(x^2))/(x^3-x+3)
f =
exp(x^2)/(x^3 - x + 3)
>> diff(f)
ans =
(2*x*exp(x^2))/(x^3 - x + 3) - (exp(x^2)*(3*x^2 - 1))/(x^3 - x + 3)^2
>>