matlab邏輯等於錯誤,語句a 1 1 a1 2 0 1 為什麼得到的結果是

2021-05-02 11:24:26 字數 2842 閱讀 8532

1樓:

應該是精度的問題。計算機用0,1表示的時候。eps

ans =

2.2204e-016

這是計算機能表示的最小的數,然後資料表示的時候有誤差。當誤差大於eps時,可能就導致了上述錯誤。

另外我測試了一些其他的。

k0=1.1==1.3-0.2

k1=1.1==1.2-0.1

k2=1.01==1.02-0.01

k3=1.001==1.002-0.001

k4=1.0001==1.0002-0.0001

k5=1.00001==1.00002-0.00001

k6=1.000001==1.000002-0.000001

k7=1.0000001==1.0000002-0.0000001

k8=1.00000001==1.00000002-0.00000001

k9=1.000000001==1.000000002-0.000000001

k10=1.0000000001==1.0000000002-0.0000000001

k11=1.00000000001==1.00000000002-0.00000000001

k12=1.000000000001==1.000000000002-0.000000000001

k13=1.0000000000001==1.0000000000002-0.0000000000001

k14=1.00000000000001==1.00000000000002-0.00000000000001

k15=1.000000000000001==1.000000000000002-0.000000000000001

最後只有

k0 =1

k2 =1

k4 =1

k10 =1

k11 =1

k14 =1

補充:k1=vpa(1.1)==vpa(1.2-0.1)

k1 =1

但是k6=vpa(1.000001)==vpa(1.000002-0.000001)

kk6=vpa(1.000001)==vpa(1.000002)-vpa(0.000001)

k6 = 0

kk6 =0

2樓:匿名使用者

果然啊,好大一個bug

matlab:a=0.2:0.2:1.4,a(5)==1,為什麼結果ans是0(logical)而不是1

3樓:匿名使用者

a的資料型別是double,預設是用64位二進位制表示,因此在儲存的時候會有微小的誤差。通過下圖的驗證會版

發現a(5)與1確實存在權這樣的差距,因此a(5)==1的結果是0。

如果判斷條件是想表達某個變數等於某個數,建議寫為變數與該數的差值的絕對值小於一個很小的數,例如 if( abs(a(5)-1)<1e-6 )

請教高手:matlab中symsum函式的計算結果為什麼是表示式,不是數值呢?

4樓:monkey家園

符號演算也會做一些化簡,但是你要區分哪些它是會去做,哪些它不會去做:

①當數字是有理數且有窮,會被化簡到單數,比如:

symsum(n+n^2,n,1,5)

②當數字是無理且無窮,會保留原式,顯然這時保留原來的形式更簡潔:

symsum(n+n^(1/2),n,1,5)以及你舉的例子

5樓:匿名使用者

syms是進行符號宣告的,即在接下來的執行過程中n都被看做是常值進行相關運算了,在matlab中這個被稱作符號運算,如果你想得到具體的數值解,可以在執行完上述命令後,對n進行賦值,然後使用subs命令,實現**段如下:

syms n

a=symsum(sin(n),n,1,5);

n=1.0;

subs(a)

*****==

ans=0.1762

希望對你有幫助

的這句話是什麼意思?

6樓:匿名使用者

c與a是什來麼東西樓主不說明

自怎麼解答?

只能說c(a(:,2:end)==0是判斷c的第a(:

,2:end)個元素是否等於0.而a(:

,2:end)的意思是,a中除去第一列以外的其他元素。:表示所有行(列),end表示到最後一個元素。

matlab中,r0=abs(z1-z2)<=0.1什麼意思,r0為什麼值

7樓:宇逸

>> x=rand(1,10)

x =0.9501 0.2311 0.

6068 0.4860 0.8913 0.

7621 0.4565 0.0185 0.

8214 0.4447

>> a=x<=0.5

a =0 1 0 1 0 0 1 1 0 1

>> y=x(a)

y =0.2311 0.4860 0.4565 0.0185 0.4447

>>給你舉了一bai個例子

生成一系列

隨機du數,找到這zhi

裡隨機數中小於dao0.5 的數。

x為生內成的隨機數;

a=x<=0.5是判斷x的每個容元素是否小於0.5,返回的是邏輯值;

y=x(a)是把邏輯值為真的x元素提取出來。

犯了什麼邏輯錯誤

首先,作為正確的提問,惠施應對莊子說 你怎麼知道魚快樂呢?而惠施卻又加上了一個前提 你不是魚,怎麼能知道魚快樂呢?這就構成了一個省略推理,省略的大前提是 凡魚以外的事物,都不能知道魚快樂。其次,作為正確的回答,莊子應當說明自己為什麼知道魚快樂的理由。莊子避開了正面回答,而是抓住了惠施的 子非魚,安知...

matlab錯誤使用datenum line 75 輸入

是在說datenum這個函式輸入值個數太少了,可能本身預設3個,你只輸入了兩個,所以出錯。建議你help datenum一下。matlab錯誤使用 feedback line 71 輸入引數的數目不足。就是當執行函式的時候,沒有提供足夠的引數。比如,如果需要計算一個數 x 的正弦值,那麼,如果不給定...

selectfrom語句錯誤

1全部str t and txt tj.text combo1.list j 改為str t and txt tj.text combo1.list j rec.open select count cb1 i text from results where cb1 i text cb2 i text...