[問題] 迴圈內的答案無法...

看板MATLAB作者 (Science & Truth)時間13年前 (2012/10/19 04:31), 編輯推噓1(104)
留言5則, 2人參與, 最新討論串1/1
有個小問題 煩請高手解答 ORZ ___________________________________________________________ format short e; %一些初始參數~ 不用鳥他@@ wa=2997.6090; wb=2998.0895; wc=2998.0111; w1=2973.5256; w2=2998.0304; w3=3003.9367; ga1=1-(wa/w1)^2; gb1=1-(wb/w1)^2; gc1=1-(wc/w1)^2; ga2=1-(wa/w2)^2; gb2=1-(wb/w2)^2; gc2=1-(wc/w2)^2; ga3=1-(wa/w3)^2; gb3=1-(wb/w3)^2; gc3=1-(wc/w3)^2; M1=ga1*gb1*gc1 ; M2=ga2*gb2*gc2 ; M3=ga3*gb3*gc3 ; % Solutions: options = optimset('MaxFunEvals',1e+18); options = optimset('TolFun',1e-50,'TolX',1e-50); for i=1:50; a(1)=0; b(1)=0; c(1)=0; guess=[a(i) b(i) c(i)], f=@(x)([ga1*x(1)^2+gb1*x(2)^2+gc1*x(3)^2-2*x(1)*x(2)*x(3)-M1;ga2*x(1)^2+gb2*x(2)^2+gc2*x(3)^2-2*x(1)*x(2)*x(3)-M2;ga3*x(1)^2+gb3*x(2)^2+gc3*x(3)^2-2*x(1)*x(2)*x(3)-M3]); [x,fval,exitflag,output]=fsolve(f,guess,options), [x]=[a(i+1) b(i+1) c(i+1)]; end ___________________________________________________________________ 這樣算是希望前一次fsolve解完的答案可以當作下一次的猜值, 看看會不會變準. 我想問的是 當我運行完了以後 出現: Attempted to access a(2); index out of bounds because numel(a)=1. fsolve算出來的解有三個, 但為什麼沒辦法指定x到新的參數呢? ~~~崩潰~~~ 拜託哩 @@ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.44.50.188

10/19 11:01, , 1F
你的abc三個變數是什麼?你只有設a(1)是多少
10/19 11:01, 1F

10/19 11:01, , 2F
訊息是跟你說這個a沒有a(2)
10/19 11:01, 2F

10/19 13:41, , 3F
我是想把fsolve算出來的x值(3個)存到 a b c
10/19 13:41, 3F

10/19 13:42, , 4F
然後讓這組abc當做下一圈裡fsolve的初始猜值
10/19 13:42, 4F

10/19 13:44, , 5F
只是不知道這樣寫為什麼不行@@
10/19 13:44, 5F
文章代碼(AID): #1GW6SByk (MATLAB)