編輯:我現在有程序的第一部分工作,在方程兩邊輸入方程式(感謝您的幫助)。現在,我似乎更遠有相關的問題下來一大塊,看起來像這樣的程序:新版matlab輸入問題。試圖使用舊程序
for J = 1:M
Z = H*F(J,M,V,ss);
K1(J) = Z;
end;
它給我這個錯誤:
??? Undefined function or method 'F' for input arguments of type
'cell'.
Error in ==> RungeKuttaSystem at 110
Z = H*F(J,M,V,ss);
再次好像它不喜歡我的方程的格式,我不太明白'細胞'在做什麼。請耐心等待,我正在盡我所能自行解決這個問題,但我被卡住了。謝謝
從原來的問題: 我正在爲大學數值方法類的項目工作,我的教科書(負擔和faires 9e)有一個過時的在線伴侶,其中包括我們正在工作的一些算法的matlab代碼用。這些程序是在2004年發佈的,顯然它們是爲早期版本的matlab編寫的,但我已經運行了其中的十個或十五個,並且它們都與MatLab 2010b一起運行良好。這個特定的程序似乎與新版本不兼容。
代碼的開頭:
% RUNGE-KUTTA FOR SYSTEMS OF DIFFERENTIAL EQUATIONS ALGORITHM 5.7
%
% TO APPROXIMATE THE SOLUTION OF THE MTH-ORDER SYSTEM OF FIRST-
% ORDER INITIAL-VALUE PROBLEMS
% UJ' = FJ(T, U1, U2, ..., UM), J = 1, 2, ..., M
% A <= T <= B, UJ(A) = ALPHAJ, J = 1, 2, ..., M
% AT (N+1) EQUALLY SPACED NUMBERS IN THE INTERVAL (A,B).
%
% INPUT: ENDPOINTS A,B; NUMBER OF EQUATIONS M; INITIAL
% CONDITIONS ALPHA1, ..., ALPHAM; INTEGER N.
%
% OUTPUT: APPROXIMATION WJ TO UJ(T) AT THE (N+1) VALUES OF T.
syms('OK', 'M', 'I', 'A', 'B', 'ALPHA', 'N', 'FLAG');
syms('NAME', 'OUP', 'H', 'T', 'J', 'W', 'L', 'K','ss');
syms('K1','K2','K3','K4','Z','kk');
TRUE = 1;
FALSE = 0;
fprintf(1,'This is the Runge-Kutta Method for Systems of m equations\n');
fprintf(1,'This program uses the file F.m. If the number of equations\n');
fprintf(1,'exceeds 7, then F.m must be changed.\n');
OK = FALSE;
while OK == FALSE
fprintf(1,'Input the number of equations\n');
M = input(' ');
if M <= 0 | M > 7
fprintf(1,'Number must be a positive integer < 8\n');
else
OK = TRUE;
end;
end;
ss = cell(M,1);
for I = 1:M
fprintf(1,'Input the function F_(%d) in terms of t and y1 ... y%d\n', I,M);
fprintf(1,'For example: y1-t^2+1 \n');
kk = input(' ');
ss{I} = kk;
end;
回答這個問題是不可能的,因爲我們不知道'ss'的預期數據類型。 'kk = input('','s');'會移除此錯誤,但可能會導致其他錯誤。 'ss'似乎是函數句柄或字符串。 – Daniel