求解的未知数在上下限 matlab程序怎么写

img


这种求累加和,求解的未知数在上下限 matlab程序怎么写?
完全没有思路,以前用for solve解 但是syms K 之后 for里面不能是符号啊,我就蒙了,有没有教教我

(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)代码运行结果

img

引用new bing部分回答作答:
运行结果如下:

img

代码如下:

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);