作者chrismachou (big absorber)
看板MATLAB
标题[讨论] function的使用?
时间Sat Mar 1 02:24:25 2014
想请问一下
我想要利用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
1F:推 JamesChen:你应该是没有搞清楚 function 在 MATLAB 怎表示 03/01 13:59