[討論] 多個條件下的寫法已回收
在下是只學過一點點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
10/19 08:29, 1F
→
10/19 12:10, , 2F
10/19 12:10, 2F
→
10/20 02:07, , 3F
10/20 02:07, 3F
→
10/20 02:08, , 4F
10/20 02:08, 4F
→
10/20 02:09, , 5F
10/20 02:09, 5F
推
10/20 09:06, , 6F
10/20 09:06, 6F
→
10/20 09:07, , 7F
10/20 09:07, 7F
→
10/20 21:55, , 8F
10/20 21:55, 8F
→
10/21 03:07, , 9F
10/21 03:07, 9F