[討論] function的使用?
想請問一下
我想要利用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
03/01 13:59, 1F
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章