Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2008-03-29, 17:01   #1
yellowsj
初级会员
 
注册日期: 2008-03-29
年龄: 40
帖子: 1
声望力: 0
yellowsj 正向着好的方向发展
默认 [求助]很诡异的问题:这两个程序有何不同?

数据矩阵A 9*9,B 9*4,Kc 4*9,具体信息省略。
以下是两段程序:
(1)错误程序
function f=fun_2(X,A,F)
x0=[0,0,0,0,0,0,1,0,0]';
X=zeros(9,1);
k1=zeros(9,1);
k2=zeros(9,1);
k3=zeros(9,1);
k4=zeros(9,1);
F=zeros(9,1);
u=Kc*x0;
h=0.1;t=0;n=1;
X_rec(:,n)=X;t_rec(n)=0;
while t<=10
n=n+1;
F=B*u;
k1=h*fun_2(X,A,F);
k2=h*fun_2(X+k1/2,A,F);
k3=h*fun_2(X+k2/2,A,F);
k4=h*fun_2(X+k3,A,F);
X=X+(k1+2*k2+2*k3+k4)*(1/6);
X_rec(:,n)=X;
t_rec(n)=(n-1)*h;
t=t+h;
X=x0-X;
u=Kc*X;
end
function f=fun_2(X,A,F)
f=A*X+F;
(2)正确程序
function f=fun_2(X,x0,A,F)
x0=[0,0,0,0,0,0,1,0,0]';
X=zeros(9,1);
k1=zeros(9,1);
k2=zeros(9,1);
k3=zeros(9,1);
k4=zeros(9,1);
F=zeros(9,1);
F=B*Kc;
h=0.1;t=0;n=1;
X_rec(:,n)=X;t_rec(n)=0;
while t<=10
n=n+1;
k1=h*fun_2(X,x0,A,F);
k2=h*fun_2(X+k1/2,x0,A,F);
k3=h*fun_2(X+k2/2,x0,A,F);
k4=h*fun_2(X+k3,x0,A,F);
X=X+(k1+2*k2+2*k3+k4)*(1/6);
X_rec(:,n)=X;
t_rec(n)=(n-1)*h;
t=t+h;
end
function f=fun_2(X,x0,A,F)
f=A*X+F*(x0-X);
两段程序的逻辑是相同的,主要差别已经用红字标出,望各位大侠指教!:cry: :cry: :cry:
主要变量的关系是:f=A*X+B*u, u=Kc*(x0-X).
yellowsj 当前离线   回复时引用此帖
旧 2008-04-02, 14:34   #2
watcher
高级会员
 
注册日期: 2008-04-02
年龄: 47
帖子: 175
声望力: 21
watcher 正向着好的方向发展
默认

个人以为,这两段程序都有问题。为什么两个子函数的名称相同??
watcher 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


相似的主题
主题 主题作者 版面 回复 最后发表
[求助]如何产生原二维图像10%像素点模糊图像 xuexizhe MATLAB论坛 0 2008-04-17 11:29


所有时间均为北京时间。现在的时间是 12:46


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.