tk=linspace(0,1,101);
R = 35.9; L = 3.98; C = 0.000360; P = ceil(R/(2*L));
M = ceil(sqrt( (1/(L*C)) - ( (R^2)/ (4*(L^2)) )));
syms q(t);
syms i(t);
q(t) = 40*exp((-R/(2*L))*t).*cos(t*sqrt((1/(L*C))-((R^2)/(4*L^2))));
i(t) = diff(q);
exact_intensity_values = 1:101;
aux = 1:101;
for ix = 1:101
exact_intensity_values(ix) = i(tk(ix));
disp('exact intensity value');
disp(exact_intensity_values(ix));
aux(ix) = (exact_intensity_values(ix))^(-1/(P * tk(ix)));
disp('aux value exact');
disp((aux(ix))^(-P * tk(ix)));
end
因此,有时两个显示的值应该是相同的,但有时却有很大不同。我在做什么错了?
这里有一些例子,我不会全部张贴。通常,当精确强度值是负值时,辅助值是对称的,就像在绝对值相同但正值中一样。其他时候,数字彼此无关。其他时候它们是相同的。我完全迷路了,我已经调试了很长时间了。
这个是针对tk(ix)= 0的。这毫无意义。
精确强度值 -180.4020
精确的辅助值 1
编辑-现在,我考虑得更多了,因为tk(1)= 0,我们有了exact_intensity_values(ix)^(-1/0)
,这很可能会引起问题。可以安全地忽略这一点。
这些具有正确的绝对值,但符号不正确。
精确强度值 -422.8061
精确的辅助值 422.8061
精确强度值 -616.2485
精确的辅助值 616.2485
这些是正确的: 精确强度值 464.3460
精确的辅助值 464.3460
精确强度值 412.2708
精确的辅助值 412.2708
精确强度值 337.3326
精确的辅助值 337.3326
精确强度值 246.4757
精确的辅助值 246.4757
这些精确数值为负但正确:
精确强度值 -48.4391
精确的辅助值 -48.4391 + 0.0000i
精确强度值 -132.0104
精确的辅助值 -1.3201e + 02 + 2.2673e-14i
精确强度值 -199.6144
精确的辅助值 -1.9961e + 02 + 6.9122e-14i
我看不到任何导致某些值正确而其他值不正确的模式,这似乎是绝对随机的。我已经尝试了^和幂函数,但结果却完全相同...
MATLAB版本:9.5.0.944444(R2018b)
编辑#2:因此,该值仅对于曲线的第一个值不正确。这是图形,第一个具有所有正确的值,第二个具有不正确的值以及一些正确的值。
答案 0 :(得分:0)
我知道您说过您已经解决了这个问题,但是我正在提供此答案,以确保问题不会一直没有答案。
看起来“非常不同”的值只是具有 small 虚构分量。否则,实际部分似乎是相同的(在数值误差内),并且只有符号是不同的(这可能是复式双打的默认显示格式):
-1.3201e+02
的含义可能与-132.0104
相同。-1.9961e+02
的含义可能与-199.6144
相同。0.0000i
,2.2673e-14i
和6.9122e-14i
的意思是0
,实际上是,但是不是,是数字 em>。我建议用real()
包围真实的值。