简化问题
我有~40个电阻(所有相同值-5%),我需要选择其中的12个,以便它们尽可能相似.
解决方案:我按顺序列出它们,并以最小的RMS连续12次.
实际问题
我有~40个电阻(所有相同的值-5%),我必须选择12对电阻,以便对的电阻尽可能相似.
笔记
该对(R1,R2)的电阻为R1 R2.
我并不真正关心编程语言,但是我要说我正在寻找一种C或Python的解决方案,这是我最熟悉的两种语言.
最佳答案 这给出了相当好的结果(在MATLAB中)
a = ones(40,1) + rand(40,1)*0.1-0.05; % The resistors
vec = zeros(40,2); % Initialize matrix
indices = zeros(40,2); % Initialize matrix
a = sort(a); % Sort vector of resistors
for ii = 1:length(a)
vec(ii,:) = [a(ii) a(ii)]; % Assign resistor values to row ii of vec
indices(ii,:) = [ii,ii]; % Corresponding resistor number (index)
for jj = 1:length(a)
if sum(abs((a(ii)+a(jj))-2*mean(a))) < abs(sum(vec(ii,:))-2*mean(a))
vec(ii,:) = [a(ii) a(jj)]; % Check if the new set is better than the
indices(ii,:) = [ii, jj]; % previous, and update vec and indices if true.
end
end
end
[x, idx] = sort(sum(vec')'); % Sort the sum of the pairs
final_list = indices(idx); % The indices of the sorted pairs
这是我绘制时的结果: