酷徒LOGO

在Matlab中,如何输出具有指定标题列的表?


问题:

我在表中使矢量出现在"列"变量中的技术只是工作时间的一部分。 下面代码中的与索引有什么不同? 我正在调试一个数值方法,我需要列的索引,X,K1,K2,K,Y 。 在我添加 K1.K2和K 之前一切正常?

函数代码:


function [index,X,K1,K2,K,Y] = impeulerT(x,y,x1,n)


% modified version of Improved Euler method found in


% Elementary Differential Equations by Edwards and Penney 


X=x; % initial x


Y=y; % initial y


x1 = x1; % final x


n = n; % number of subintervals


h = (x1-x)/n; % step size


index = 0; % initialize index


k1=0;


k2=0;


k=0;


for i=1:n; % begin loop


k1=f(x,y); % first slope


k2=f(x+h,y+h*k1); % second slope


k=(k1+k2)/2; % average slope


x=x+h; % new x


y=y+h*k; % new y


X=[X;x]; % update x-column 


Y=[Y;y]; % update y-column


index = [index;i]; % update index-column


K1=[K1;k1]; Line 22


K2=[K2;k2];


K= [K;k];


end % end loop


ImprovedEulerTable=table(index,X,K1,K2,K,Y)


end



调用代码:


[index,X,K1,K2,K,Y] = impeulerT(0,1,1,10);



日志:


>> [index,X,K1,K2,K,Y] = impeulerT(0,1,1,10);


Undefined function or variable 'K1'.



Error in impeulerT (line 22)


K1=[K1;k1];



22 K1=[K1;k1];


>> 




回答 1:

这段代码更好。第一行输出可以改变,以更好地匹配手工完成的事情。 基本上,这意味着,K1.K2和K 列可以移动一行。 其他列也可以保持相同。 这跟Edwards和Penney匹配。 请注意这里如何定义 K1.K2和K 。 干杯MM !

函数代码:


function [index,X,Y,K1,K2,K] = impeulerT(x,y,x1,n)


% modified version of Improved Euler method found in


% Elementary Differential Equations by Edwards and Penney 


X=x; % initial x


Y=y; % initial y


x1 = x1; % final x


n = n; % number of subintervals


h = (x1-x)/n; % step size


index = 0; % initialize index


% Initialize the lower-case variables


k1=0;


k2=0;


k=0;


% Initialize the upper-case variables


K1=k1;


K2=k2;


K =k;


for i=1:n; % begin loop


k1=f(x,y); % first slope


k2=f(x+h,y+h*k1); % second slope


k=(k1+k2)/2; % average slope


x=x+h; % new x


y=y+h*k; % new y


X=[X;x]; % update x-column 


Y=[Y;y]; % update y-column


index = [index;i]; % update index-column


K1=[K1;k1]; % update K1 column


K2=[K2;k2]; % update K2 column


K= [K;k]; % update K column


end % end loop


ImprovedEulerTable=table(index,X,Y,K1,K2,K)


end



调用代码:


% Improved Euler


[index,X,Y,K1,K2,K] = impeulerTX(0,1,1,10);




回答 2:

错误在第 22行中,在方括号内的K1=[K1;k1]; 中,但是它在前面没有定义。

解决方法是在for循环之前定义 K1=[];

编辑:所有其他变量也同样适用。 所以这个代码


function [index,X,K1,K2,K,Y] = impeulerT(x,y,x1,n)


% modified version of Improved Euler method found in


% Elementary Differential Equations by Edwards and Penney 


X=x; % initial x


Y=y; % initial y


x1 = x1; % final x


n = n; % number of subintervals


h = (x1-x)/n; % step size


index = 0; % initialize index


k1=0;


k2=0;


k=0;


% Initialize the upper-case variables


K1=[];


K2=[];


K=[];


for i=1:n; % begin loop


 k1=f(x,y); % first slope


 k2=f(x+h,y+h*k1); % second slope


 k=(k1+k2)/2; % average slope


 x=x+h; % new x


 y=y+h*k; % new y


 X=[X;x]; % update x-column 


 Y=[Y;y]; % update y-column


 index = [index;i]; % update index-column


 K1=[K1;k1]; % Line 22


 K2=[K2;k2];


 K= [K;k];


end % end loop


ImprovedEulerTable=table(index,X,K1,K2,K,Y)


end








Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备17041772号-2  |  如果智培  |  酷兔英语  |  帮酷