[問題]向量代入非線性方程以fsolve求解

看板MATLAB作者 (司)時間13年前 (2012/06/01 01:39), 編輯推噓0(0011)
留言11則, 2人參與, 最新討論串1/1
版上的高手好!! 新手我只認真專研matlab不到三個月,底下發問有太離譜的問題請見諒, 還有有些程式多於我也寫進去是想說,不清楚到底需不需要它= =...哈 這是一個四連桿參數設計的一個例子, 直接以程式介紹好了 function F=myfun1(x) % 一開始宣告我的非線性方程 f=zeros(1,25); %就想說因為底下要跑25種data所以F開25零 for i=1:25 %跑25次 xlsFile = 'ex3befoeradjust.xls'; %這個是我把一些已知常數向量以記錄在excel檔 tt2 = xlsread(xlsFile,1,'A1:Z1'); %從excel叫出底下t2(角度2)的data ww4 = xlsread(xlsFile,1,'A4:Z4'); %從excel叫出底下w4(角速度4)的data rr4= xlsread(xlsFile,1,'A7:Z7'); %從excel叫出底下r4(桿長4長度)的data t2=tt2(1,i); %t2(角度2) w4=ww4(1,i); w4(角速度4) r4=rr4(1,i); r4(桿長4長度) F=f(i); F=[x(1)*10*sind(t2)+10*(x(2))*sind(x(3))-r4*(w4)*sind(x(4)); x(1)*10*cosd(t2)+10*(x(2))*cosd(x(3))-r4*(w4)*cosd(x(4)); x(1)*cosd(t2)+10*cosd(x(3))-r4*cosd(x(4))-10; x(1)*sind(t2)+10*sind(x(3))-r4*sind(x(4)) ]; end %然後我就以for迴圈1~25跑每一次代不同的常數進去 %接著求解的程式看底下 clear all options=optimset('MaxFunEvals',5000,'MaxIter',5000,'TolFun',1e-10,'Display','iter'); for i=1:25 %求解這裡一樣給他for環圈求解25次 [x,fval]=fsolve(@myfun1,x0,options); [x,fval]; r2(i)=x(1); % 讓每一次解出第i個x(1)解等於 w3(i)x(2); 第i種常數代進去所求出來第i個r2的解 theta3(i)=x(3); % x(2);w3 一樣意思 theta4(i)=x(4); % x(3);theta3一樣意思 end % x(4);theta4一樣意思 我的問題是, 我想要寫這個程式的目標是; 從excel檔讀取,三個常數係數向量代進去非線性方程是求解出 每一組不同的的係數條件下 所求解出的r2,w3,theta3,theta4(一樣把25種不同的解寫成向量) 而我程式寫這樣的意思,跟我的目的是一樣意思嗎? 因為他一直跑好久快四個小時了跑不完現在還在跑= = 想說是不是寫錯 拜託高手幫我看一下`; 如果錯了可以導正我應該怎麼嗎? 感謝感謝 發問的不清楚可以再詢問 謝謝謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.117.58.140

06/01 02:49, , 1F
讀excel的動作不應該放在myfun1裡 而是在外面讀完後當做
06/01 02:49, 1F

06/01 02:51, , 2F
myfun1的輸入 myfun1基本上只需要最下面四行 然後讀取的
06/01 02:51, 2F

06/01 02:53, , 3F
動作也不應該放在迴圈裡 而是讀一次之後每次抓一組參數
06/01 02:53, 3F

06/01 02:57, , 4F
你程式的意思變成解25次F 每當需要計算F時就讀取25次 但最
06/01 02:57, 4F

06/01 02:59, , 5F
後每一組參數都算了F卻只用第25組
06/01 02:59, 5F

06/01 03:03, , 6F
還有A-Z應該有26組參數
06/01 03:03, 6F

06/02 13:49, , 7F
喔對吼應該是B1~Z1
06/02 13:49, 7F

06/02 13:50, , 8F
謝謝你幫我找到問題
06/02 13:50, 8F

06/02 13:51, , 9F
還是寫不出來,雖然看起來好像不難 = =
06/02 13:51, 9F

06/02 13:51, , 10F
繼續想怎麼ˊ寫!!XD
06/02 13:51, 10F

06/02 13:51, , 11F
還是有誰要給我一點指點建議
06/02 13:51, 11F
文章代碼(AID): #1FnwovqT (MATLAB)