声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 954|回复: 8

[编程技巧] 程序运行后全是NAN,问题出在哪

[复制链接]
发表于 2007-12-4 21:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
function [B,w]=wu(M,K,eps)
D=inv(K)*M;      
n=rank(D);
A0=ones(n,1);
A=D*A0;
c=0;
while c<=n
    if norm(A-A0)>=eps
    A0=A;
    A=D*A0;
    else
    c=c+1;
    w(c,1)=1/A(n,1);
    A0=A*w(c,1);
    B(:,c)=A0(:,1);
    end
end

调用后
>> M=[2 0 0;0 1.5 0; 0 0 1];
>> K=[5 -2 0;-2 3 -1;0 -1 1];
>> eps=1e-6;
>> wu(M,K,eps)

ans =

     0     0     0     0
   NaN   NaN   NaN   NaN
   NaN   NaN   NaN   NaN

[ 本帖最后由 eight 于 2007-12-4 22:22 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-12-4 21:34 | 显示全部楼层
function [B,w]=wu(M,K,eps)

这个是什么
 楼主| 发表于 2007-12-4 21:42 | 显示全部楼层
前面是编写的一个函数呀  后面调用他
发表于 2007-12-4 21:59 | 显示全部楼层

回复 #3 s20071041 的帖子

NAN 的意思是非数 即0/0 或无穷大/无穷大
你 看看你的程序 是不是 有这种可能?
发表于 2007-12-4 22:22 | 显示全部楼层
原帖由 s20071041 于 2007-12-4 21:25 发表
function =wu(M,K,eps)
D=inv(K)*M;      
n=rank(D);
A0=ones(n,1);
A=D*A0;
c=0;
while c=eps
    A0=A;
    A=D*A0;
    else
    c=c+1;
    w(c,1)=1/A(n,1);
    A0=A*w(c,1);
    B(:,c)= ...


像这种问题自己设置断点调试一下即可
 楼主| 发表于 2007-12-4 22:35 | 显示全部楼层
应该有结果  我是书上例子   我用程序解他  答案没出来  应该程序出问题了
发表于 2007-12-5 10:40 | 显示全部楼层
原帖由 s20071041 于 2007-12-4 22:35 发表
应该有结果  我是书上例子   我用程序解他  答案没出来  应该程序出问题了

估计课本没有问题,你先看看是否打字的时候输入有误
 楼主| 发表于 2007-12-5 12:01 | 显示全部楼层
课本是手算的结果  我们要求编程序计算  还好编出来了   是程序问题  谢谢你了
发表于 2007-12-5 12:30 | 显示全部楼层

回复 #8 s20071041 的帖子

希望可以分享一下你的程序
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-24 15:26 , Processed in 0.053989 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表