相对误差和Matlab

时间:2015-04-12 15:08:46

标签: matlab

我得到了2个方程式以便找到电流。 我试图找到相对误差,但我得到的曲线对我来说没有任何意义 - 至少 - 。

a = 0:.0001:pi;
a0 = .2744;
ws = .5;
I2 = (-sin(pi/ws)/(cosh(pi*a0/ws)+cos(pi/ws)));
Ucpw = (((a0*sin(pi/ws)-sinh(pi*a0/ws))/(cosh(a0*pi/ws)+cos(pi/ws))));
exp2 = exp(-a0/ws*a);
I1 =(-sin(1/ws*pi))/(cosh(a0/ws*pi)+cos(1/ws*pi));
phi2 = atan(-I2/(1-Ucpw - a0*I2));
i1 = exp2.*(I1.*cos(1/ws.*a)+(1-Ucpw-a0*I1).*sin(1/ws.*a));
i2 = (-I2./sin(phi2)).*exp2.*sin(a/ws - phi2);
e = abs((i1-i2)./i1);
plot(a,e)

Var a表示应以弧度显示的角度, 该曲线是否意味着解决方案仅在pi / 2处具有误差,振幅为5.05e-12?

1 个答案:

答案 0 :(得分:0)

在这个例子中使用相对误差不是一个好主意,因为i1在pi / 2时变为零。这就是相对误差激增的原因,它淹没了图的其余部分。我建议改为绘制绝对误差的对数:plot(a,log(abs(i1-i2)))

error

如您所见,错误不仅限于pi / 2值。幅度exp(-36)大约是我机器上eps的值;两者都约为2e-16。丹尼尔在评论中说,它来自浮点精度的限制。