在我执行计算时 MATLAB 给我偏差是否有原因?

Is there a reason MATLAB is giving me deviations as I perform the calculations?

我有这些随机高斯变量 A 和 B 来表示电压。我还有分别与电压 RA 和 RB 串联的电阻。我想测量 RA 和 RB 之间的电压,我想测量从 A 到 B 的电流。我已经实现了,

I = (A-B)/(RA+RB);
U = I*RA-A;

假设 RA 具有很高的值 RH,但我想使用排除法找出答案。我已经实现了,

A_calc = U+I*RL; %guess the low value first

现在我想检查计算是否匹配。

if A_calc==A
    disp('RA=RL');
else
    disp('RA=RH');
end

现在的问题是,A_calc永远不会等于A。无论我将电阻值设置为多少,总会有偏差。

可能是什么错误?是分辨率丢失了吗?我以为MATLAB是16位分辨率的?

我需要整个代码来找出您的问题所在 - 但一般来说,在此类计算中发现数值不准确是很常见的。你几乎总是定义某种差异阈值,在它之下变量被认为是相等的。 请使用:

function eq = isalmostequal(a,b,tol)
if ~exist('tol','var'); 
   tol = 1e-9;
end

eq = (abs(a - b) < tol)
end

称之为:

if isalmostequal(A,A_calc)
   disp('RA=RL');
else
   disp('RA=RH');
end