你的問題是(正如nkjt指出的),將浮點值與==
進行比較。
FYI:如果你的目標是要找到這X
,M == N
,那麼你就可以做到這一點更簡單的使用例如fzero
:
f = @(X) (((sqrt(2.*X)-(1/3))^2)*(2.*X-1))- ...
((10.99743./sqrt(X)-(23/30))^2)*((53.75263./X)-1);
y = fsolve(f,1)
y = 6.0304
這給:
M - N = -1.3743e-05
這是相當接近零(儘可能接近你)。
如果你絕對要嘗試和失敗,看看你能不能破解這個(基於nkjt的想法):
step = 1;
X = 1:step:100
M=(((sqrt(2*X)-(1/3)).^2).*(2*X-1));
N=((10.99743./sqrt(X)-(23/30)).^2).*((53.75263./X)-1);
[Y, idx] = min(abs(N-M))
err = 1e-10; % Arbitrary tolerance > 1e-14 (typically)
it = 0;
while Y > err && it < 10
step = step/10;
it = it + 1;
X = X(idx) + (-step*10:step:step*10);
M=(((sqrt(2*X)-(1/3)).^2).*(2*X-1));
N=((10.99743./sqrt(X)-(23/30)).^2).*((53.75263./X)-1);
[Y, idx] = min(abs(N-M))
end
這個問題並不需要* *重新打開,因爲它已經有一個被接受的答案,但是*,我不同意關閉它的原因。 OP不知道使用'=='不能比較浮點數值的事實並不是解決問題的理由,這是回答問題的理由。 OP已經包含他/她嘗試的解決方案,並想知道爲什麼它不起作用。 IMO:*在* - 專題! –