gpt4 book ai didi

Matlab 幂函数随机出现故障

转载 作者:行者123 更新时间:2023-12-04 17:42:22 26 4
gpt4 key购买 nike

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:因此只有曲线的第一个值的值不正确。这是图表,第一个具有所有正确的值,第二个具有不正确的值以及一些正确的值。 enter image description here

enter image description here

最佳答案

我知道你说过你解决了这个问题,但我提供这个答案是为了让问题不会一直没有答案。

看起来“非常不同”的值只是有一个虚部。否则,实部看起来是相同的(在数字错误范围内),只是符号不同(这可能是复数 double 的默认显示格式):

  • -1.3201e+02 可能与 -132.0104 含义相同。
  • -1.9961e+02 可能与 -199.6144 含义相同。
  • 0.0000i2.2673e-14i6.9122e-14i 表示0 实际上,但不是数字

我建议用 real() 包围应该真实的值.

另请参阅:Why is 24.0000 not equal to 24.0000 in MATLAB?

关于Matlab 幂函数随机出现故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53882845/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com