[討論] function的使用?

看板MATLAB作者 (big absorber)時間11年前 (2014/03/01 02:24), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
想請問一下 我想要利用function產生一個f(S)的函數S裡面又有t變數,想要變成f(S(t+1))函數 此函數表示如下: f(S(t+1)) = S(t)+0.5*3600*(I(t)+I(t+1))-0.5*3600*(Q(t)+((S(t+1)/k)^(1/p))/3600) -S(t+1) 假設我有10筆資料 已知資料為I(10),S(1),Q(1),(k=3,p=1) 利用牛頓法推求S(t+1) 最後求出10組>>>S(10) 想請問我寫(檔名:f_S)funtion Y=f_S(S(t+1) Y = S(t)+0.5*3600*(I(t)+I(t+1))-0.5*3600*(Q(t)+((S(t+1)/k)^(1/p))/3600) -S(t+1) S裡面的變數隨著t改變,這樣我要在寫是對的嗎?是要在令什麼嗎?將這funtion替換 到下面方程式中 似乎會發生錯誤(Not enough input arguments),可以指點一下迷津嗎? 方程式中變數的影響關係 之前是沒用function這用法自己用牛頓法原理寫出來求出來的 附上一小段我寫的 I = load('XXX.txt') Q = 56; S = 3600*k*Q^p; for t =1:10 error = 10; Sg = 200000;% S(t+1) while abs(error)>0.01 fs =S(t)+0.5*3600*(I(t)+I(t+1))-0.5*3600*(Q(t)+((Sg/k)^(1/p))/3600)-Sg; %f(S(t+1)) fs_1 = S(t)+0.5*3600*(I(t)+I(t+1))-0.5*3600*(Q(t)+((1.01*Sg/k)^(1/p))/3600) -1.01*Sg; %f(1.01S(t+1)) fs_dif = [fs_1-fs]/(0.01*Sg); %微分項公式 S_new = Sg-(fs/fs_dif); %新猜測 error = S_new-Sg Sg = S_new; end S = [S;Sg]; Q_new = (Sg/k)^(1/p)/3600; Q = [Q;Q_new]; end -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.40.82.225

03/01 13:59, , 1F
你應該是沒有搞清楚 function 在 MATLAB 怎表示
03/01 13:59, 1F
文章代碼(AID): #1J4DHRKG (MATLAB)
文章代碼(AID): #1J4DHRKG (MATLAB)