Octave 理解倍频程码和赋值方程之间的联系

Octave 理解倍频程码和赋值方程之间的联系,octave,Octave,我一直在为我的学习指南中的一些问题而挣扎,我真的被卡住了-我已经向讲师寻求帮助,但他的回答是字面上的,但它是为你做的,指的是编写的gauss_seidel代码-我认为他没有抓住要点。我正在努力理解实际问题以及如何解决它 第一个问题如下: 通过以下方式定义100x100平方矩阵A和列向量b: 这就是问题1 问题2我已经给了他一个答案,并询问了他的情况,但他没有回答 它的内容是:希尔伯特矩阵是一个平方n x n矩阵,定义如下: 将bn定义为维度为n的列向量,每个元素为1。构造bn,然后在n=4的情况

我一直在为我的学习指南中的一些问题而挣扎,我真的被卡住了-我已经向讲师寻求帮助,但他的回答是字面上的,但它是为你做的,指的是编写的gauss_seidel代码-我认为他没有抓住要点。我正在努力理解实际问题以及如何解决它

第一个问题如下:

通过以下方式定义100x100平方矩阵A和列向量b:

这就是问题1

问题2我已经给了他一个答案,并询问了他的情况,但他没有回答

它的内容是:希尔伯特矩阵是一个平方n x n矩阵,定义如下:

将bn定义为维度为n的列向量,每个元素为1。构造bn,然后在n=4的情况下求解x,Hn xn=bn

我在这里所做的只是:

>> b=ones (4,1);  
>> x=hilb(4)\b;  
然后它给了我x值的输出。我不确定我在这里做的是否正确。。。因为它根本没有提到使用任何方法,所以它只是说为x求解

我不知道如何将讲师的回答与理解问题联系起来

如果你能帮我,让我知道我错过了什么,或者我应该怎么想,那真的会很有帮助

gauss_-seidel代码如下所示:

function xnew=gauss_seidel(A,b,xold)
    n=size(A)(1);
    At=A;
    xnew=xold;
    for k=1:n
        At(k,k)=0;
    end
    for k=1:n
        xnew(k)=(b(k)-At(k,:)*xnew)/A(k,k);
    end
endfunction  
b=zeros(100,1);

for k=1:100
  b(k) = 1+(2/k);
end
我从上周一开始就一直在写伪代码,对于代码的作用我只稍微清楚一点

A(ij)=I(ij)+1/((i-j)2+1), b(i)=1+2/i, 1<=i, j<=100
这将创建一个大小为100x1的列向量,其中所有值满足bi=1+2/i,其中i或在代码中,“k”大于或等于1

然后创建一个:

myMatrix=zeros(100,100);

for i=1:100
  for j=1:100 
    myMatrix(i,j) = 1/(((i-j)^2) + 1);
  end
end

A=eye(100) + myMatrix;
现在我们以这样的方式创建了A,它等于Aij=Iij+1/i-j2+1,其中i大于或等于1,j小于或等于100

剩下的问题基本上是要求用高斯-赛德尔方法求解x的值

所以应该是这样的:

y=iterative_linear_solve(A,b,x0,TOL,max_it,method);
不要忘记创建x0作为初始假设、公差和最大迭代次数等

就问题2而言,你做的正是我应该做的。我觉得你很擅长

我不太确定如何回答这个问题:

如果你能帮我,也许让我知道我错过了什么或者我是如何做到的 应该考虑一下,这真的很有帮助

我真正能说的是,你需要以这样一种方式来看待问题,你可以看到Ax=b。例如,在第一个问题中,我们先做b,然后做A。然后我们简单地应用A\b构造或Gauss-Seidel方法,得到了答案

这就是你对第二个问题所做的


最后,你是一个偶然的学生吗?我是,哈哈。我已经一个人挣扎了一段时间了。学习指南似乎没有提供太多的信息。

Lol,是的,我是。有时要找出研究指南中没有真正解决的差距有点令人沮丧,
b=zeros(100,1);

for k=1:100
  b(k) = 1+(2/k);
end
myMatrix=zeros(100,100);

for i=1:100
  for j=1:100 
    myMatrix(i,j) = 1/(((i-j)^2) + 1);
  end
end

A=eye(100) + myMatrix;
y=iterative_linear_solve(A,b,x0,TOL,max_it,method);