设第 i 方人数为 pi,已占有 ni 个席位,i=1,2,…,m。当总席位增加 1 席时,计算
应将这一席位分给 Q 值最大的一方。 某学校有甲乙丙三个系共有 200 名学生,其中甲系有 103 人,乙系有 63 人,丙系有 34 人。
1. 有 20 个代表席位,采用 Q 值法分别求出甲乙丙系的“席位分配结果”和“求解过 程”。
2. 有 21 个代表席位,采用 Q 值法分别求出甲乙丙系的“席位分配结果”和“求解过程”。 下面是 Q 值法的求解函数:
%输入:p 为各单位人数(行向量),n 为总席位(标量)。
%输出:ni 为各单位所得席位(行向量),c 为求解过程(矩阵)。
%文件名:fapt2.m
function [ni,c]=fapt2(p,n)
ni=floor(p*n/sum(p));
c=ni;
while sum(ni)<n
Qi=(p.*p)./(ni.*(ni+1)); %ni>0
[MAXQ,i]=max(Qi); %求最大值元素及下标
ni(i)=ni(i)+1;
c=[c;Qi;ni]; %拼接
end
1. 在命令窗口分别调用以上函数求解(使用最佳定点或浮点格式(5 位数字)控制命 令 format short g)。
2. 两个结果比较,合理吗?
看起来挺合理的