[討論] 多個條件下的寫法已回收

看板MATLAB作者 (100)時間14年前 (2011/10/19 00:24), 編輯推噓2(207)
留言9則, 4人參與, 最新討論串1/1
在下是只學過一點點C++的新手 在matlab中想跑出兩個符合理論的值 (分別為 e1 u1 ) 一開始隨便輸入兩個初值 (ex: e1=3 u1=3) e1=3 u1=3 for i=2;1;999 ab(1)=....; ac(1)=....; ab(i)= (e1,u1)的函數; ac(i)= (e1,u1)的函數; 我想得到在ab剛好等於零時 所對應的ac也會剛好符合理論值(不符合會再調整) 因此就可以輸出此時的 e1 u1 因此我寫了 if ab(i-1)*ab(i)<=0 ad=(ac(i-1)*(ab(i-1)-ab(i))-ab(i-1)(ac(i-1)-ac(i)))./(ab(i-1)-ab(i)); (這句意思是,因為matlab可能不會使ab剛好跑到零 所以用兩個ab相乘為負可以確定 中間有零 而這兩個ab 對應兩個ac 兩個ac中間的值我設為ad 目的是希望ad剛好 剛好對到 ab=0的點) 下面接 if abs(ad-0.5)>0.00001 (0.5即是理論上ab=0所對應的ad值 也就是ac 這句是判斷ad離0.5太遠不符合) e1=e1+(ad-0.5)/0.5; (所以用逼近法修正e1 u1 重新回到for迴圈再判斷) u1=u1+(ad-0.5)/0.5; end; end; (希望這邊會跳出裡面跟外面的if 然後重新進入for迴圈) if abs(ad-0.5)<0.00001 (斷定ad就是我想要的理論值了) break; (跳出迴圈) disp(e1); (輸出此時的e1 u1) disp(u1); end; 因為對matlab很不熟悉 可能語法有錯 一直跑不出來(毫無反應) 不知可否有人能解惑 感激不盡! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.243.152.183

10/19 08:29, , 1F
很明顯的問題就是你用了C/C++的語法結構
10/19 08:29, 1F

10/19 12:10, , 2F
break 就跳出迴圈了,就不會執行後面的 disp
10/19 12:10, 2F

10/20 02:07, , 3F
我的確是用C++的邏輯來寫 但是matlab沒有顯示哪邊的語
10/20 02:07, 3F

10/20 02:08, , 4F
法有問題 而我覺得code邏輯上也對 所以一直不知道怎麼
10/20 02:08, 4F

10/20 02:09, , 5F
改它....對matlab真的不太熟悉 先謝過樓上們的指教!
10/20 02:09, 5F

10/20 09:06, , 6F
原來是這樣阿,我沒幫上什麼
10/20 09:06, 6F

10/20 09:07, , 7F
不過s大真的細心多了
10/20 09:07, 7F

10/20 21:55, , 8F
如果程式是抄自你原始程式的話,那for後面加:你加成;了
10/20 21:55, 8F

10/21 03:07, , 9F
抱歉 那是打上來的時候沒注意....= =
10/21 03:07, 9F
文章代碼(AID): #1EdQX96- (MATLAB)