作者ccam ()
看板MATLAB
标题[求救] 叠代回圈写不出来
时间Sun Dec 3 16:09:03 2017
如题,叠代的演算法卡住了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://webptt.com/cn.aspx?n=bbs/MATLAB/M.1512288549.A.F3B.html
1F:→ LiamIssac: 有跑过吗? 问题是? 12/03 16:32
跑了之後 r 卡在第2个就中断了
显示 "Attempted to access r(3); index out of bounds because numel(r)=2."
Error 在 if 那行
2F:→ LiamIssac: 你的n要换个位置 而且没有初始值 12/03 16:56
n有设定初始为0,只是这边没有写上
3F:推 LiamIssac: 然後else里面有没有运算 试着在每个运算後面加pause 12/03 16:59
4F:→ LiamIssac: 让程式暂停一下 看看跟你用手算的也不一样 12/03 16:59
真的放错位置了 囧
5F:→ LiamIssac: 然後把if的条件 也独立出来跑看看 确定程式会不会进入 12/03 16:59
6F:→ LiamIssac: 那个condition去算你要的东西 12/03 16:59
我试试看
※ 编辑: ccam (120.107.168.98), 12/03/2017 17:07:47
脑袋有点打结,还是抓不到问题点
※ 编辑: ccam (120.107.168.98), 12/03/2017 18:44:55
7F:推 tml: for i=0:90 12/11 06:41
8F:→ tml: r(i+1)=sqrt(sind(i)^2/C(find(r(i)>=R,1))+r(i)^2); 12/11 06:43
9F:→ tml: end 12/11 06:43