tuoyuan 发表于 2007-4-3 23:13

求助:关于函数的问题,恳请高手指点

function =Gaussmethord(A,b,x0,N,emg)
n=length(A);
我只截取了这两行,第二行就有错误,错误是Input argument "A" is undefined.
请问:应该怎么改,多谢了

eight 发表于 2007-4-3 23:32

原帖由 tuoyuan 于 2007-4-3 23:13 发表
function =Gaussmethord(A,b,x0,N,emg)
n=length(A);
我只截取了这两行,第二行就有错误,错误是Input argument "A" is undefined.
请问:应该怎么改,多谢了


请阅读最基础的matlab语法书

事实上,无论哪种语言,函数定义中的参数列表都是形式参数,需要在调用时传递实际的值。以C语言为例,楼主认为不写main函数可以运行你编写好的某个函数吗?

xjzuo 发表于 2007-4-4 09:28

如还有问题,请讲代码及调用时的出错提示给出.

tuoyuan 发表于 2007-4-4 11:50

回复 #3 xjzuo 的帖子

这个程序是书上给的,我还是弄不明白哪里有错误,原代码是:
function =Gaussmethord(A,b,x0,N,emg)
n=length(A);
x1=zeros(n,1);
x2=zeros(n,1);
x1=x0;
r=max(abs(b-A*x1));
k=0;
while r>emg
    for i=1:n
      sum=0;
      for j=1;n
            if j>i
                sum=sum+A(i,j)*x1(j);
            elseif j<i
                sum=sum+A(i,j)*x2(j);
            end
      end
      x2(i)=(b(i)-sum)/A(i,i);
    end
    r=max(abs(x2-x1));
    x1=x2;
    k=k+1;
    if k>N
      disp('shi bai');
      return;
    end
end
x=x1;
是一个迭代程序,还是恳请指点,多谢

eight 发表于 2007-4-4 11:59

原帖由 tuoyuan 于 2007-4-4 11:50 发表
这个程序是书上给的,我还是弄不明白哪里有错误,原代码是:
function =Gaussmethord(A,b,x0,N,emg)
n=length(A);
x1=zeros(n,1);
x2=zeros(n,1);
x1=x0;
r=max(abs(b-A*x1));
k=0;
while r>emg
   ...


你如何运行程序的?不是通过在编辑框口中点击run,而是要在命令窗口中用命令行的方式给出实际参数

tuoyuan 发表于 2007-4-4 23:16

回复 #5 eight 的帖子

我不运行run,点save as 保存,然后输入数据,可就是迭代不了,求你指点,这是书中的原程序代码,每行的意思我都懂,也觉得没错,可运行后结果不对。多谢指点了!

tuoyuan 发表于 2007-4-4 23:21

回复 #5 eight 的帖子

% A是线性方程组的左端矩阵,b是右端向量,N表示迭代次数上限,若迭代次数大于N,则迭代失败
%emg表示控制精度
%用Gauss-sedidel迭代法求线性方程组A*x=b的解
%k表示迭代次数
%x表示用迭代法求得的线性方程组的近似解
这是注解

xjzuo 发表于 2007-4-5 10:20

请把你的调用代码及出错信息给出.

eight 发表于 2007-4-5 10:31

原帖由 xjzuo 于 2007-4-5 10:20 发表
请把你的调用代码及出错信息给出.


同意,代码、调用方式、出错信息请一并给出

[ 本帖最后由 eight 于 2007-4-5 10:33 编辑 ]
页: [1]
查看完整版本: 求助:关于函数的问题,恳请高手指点