[求救] 疊代迴圈寫不出來

看板MATLAB作者時間7年前 (2017/12/03 16:09), 7年前編輯推噓2(207)
留言9則, 2人參與, 7年前最新討論串1/1
如題,疊代的演算法卡住了QQ 0~90度之內,每一度對應到一個 r 值 已知 r(1)=0 ,用迴圈疊代方式從前一個 r 算出下一個 r 假定 r(n+1)=sqrt(A+B) 其中 A 是由 r(n) 算出 B 則是依據 r(n) 的大小來決定其中一個變數 B 的算式中有一個 C 值 C 是 1X50 的數列(單純的正自然數,無規則) 然後現在有一串跟 r(n) 比大小的數列 R 是 1X51 (由0開始的等差數列) 如果 r(n) 的大小落在 R 的第一數值~第二數值的區間內,B 的計算就使用 C(1) 再求出 r(n+1) 如果 r(n) 的大小落在 R 的第二數值~第三數值的區間內,B 的計算就使用 C(2) 再求出 r(n+1) 以次類推到最後一個區間,求出 r(91),總共91個 r 值 註:R 的一個區間內可能同時對應到 好幾個角度 這個問題已經卡住兩禮拜了,還請各位指點迷津 目前自己只寫出一個很怪的東西 for i=0:1:90; for k=1:50; n = n+1; if r(n) >= R(k) && r(n) <= R(k+1) r(n+1) = sqrt(((sind(i)^2)/(C(k)))+r(n)^2); else r(n) > R(k+1); break end end end -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 120.107.168.98 ※ 文章網址: https://www.ptt.cc/bbs/MATLAB/M.1512288549.A.F3B.html

12/03 16:32, 7年前 , 1F
有跑過嗎? 問題是?
12/03 16:32, 1F
跑了之後 r 卡在第2個就中斷了 顯示 "Attempted to access r(3); index out of bounds because numel(r)=2." Error 在 if 那行

12/03 16:56, 7年前 , 2F
你的n要換個位置 而且沒有初始值
12/03 16:56, 2F
n有設定初始為0,只是這邊沒有寫上

12/03 16:59, 7年前 , 3F
然後else裡面有沒有運算 試著在每個運算後面加pause
12/03 16:59, 3F

12/03 16:59, 7年前 , 4F
讓程式暫停一下 看看跟你用手算的也不一樣
12/03 16:59, 4F
真的放錯位置了 囧

12/03 16:59, 7年前 , 5F
然後把if的條件 也獨立出來跑看看 確定程式會不會進入
12/03 16:59, 5F

12/03 16:59, 7年前 , 6F
那個condition去算你要的東西
12/03 16:59, 6F
我試試看 ※ 編輯: ccam (120.107.168.98), 12/03/2017 17:07:47 腦袋有點打結,還是抓不到問題點 ※ 編輯: ccam (120.107.168.98), 12/03/2017 18:44:55

12/11 06:41, 7年前 , 7F
for i=0:90
12/11 06:41, 7F

12/11 06:43, 7年前 , 8F
r(i+1)=sqrt(sind(i)^2/C(find(r(i)>=R,1))+r(i)^2);
12/11 06:43, 8F

12/11 06:43, 7年前 , 9F
end
12/11 06:43, 9F
文章代碼(AID): #1Q8x4byx (MATLAB)
文章代碼(AID): #1Q8x4byx (MATLAB)