返回空图的函数

问题描述

函数应该使用高斯赛德尔方法返回线性方程组的答案,并返回迭代差异图。到目前为止,我已经能够获得返回正确答案的函数,并且图表是空白的。任何提示表示赞赏。

function[x] =  Gauss_Seidel(A,b)
[m,n] = size(A);
[g,v] = size(b);
x= zeros(m,1);
error = zeros(m,1);
for iterations = 1:300
    for k = 1:m
        value = 0;
            for j = 1:m
                if j~=k
                    value = value + A(k,j)*x(j);
                end
            end
    x(k) = (b(k)-value)/A(k,k);
    end
end
tdiff = 0;
for j = 1:m
    LHS=0;
    for k=1:m
        LHS=LHS+A(j,k)*x(k);
    end
    difference(j) = abs(b(j)-LHS);
    tdiff = tdiff+difference(j);

end
if tdiff<=error
    iterations
    plot(tdiff,j)
    return
end
end

解决方法

当你调用 plot 时,tdiff 和 j 看起来不是数组。

循环之前

tdiff = zeros(1,m+1);
steps = zeros(1,m+1); % you need some increment array for your plot

在循环中

tdiff(j+1) = tdiff(j)+difference(j);
steps(j+1) 

只需注意步骤和 tdiff 从 0 开始

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...