我的代码在创建此矩阵时出错了吗?

时间:2015-10-23 21:12:16

标签: python

我正在尝试解决以下问题:

  

考虑n个联立方程Ax = b,其中

     

A_(ij)=(i + j)^ 2且b_i =从j = 0到n的和(A_ij),其中i = 0,1,...,n,j = 0,1,... ...,N。

     

编写一个程序,解决任何给定n的这些方程式。

所以我应该创建矩阵A和向量b,然后使用它们来解决Ax = b。我可以创建A,并使用以下代码完成:

A = numpy.zeros(n*n).reshape(n,n)
def matrix(n):
    for i in range(0,n):
        for j in range(0,n):
            A[i,j] = (i+j)**2

matrix(n)
print A

对于任何选择的n,这给了我一个漂亮的nxn矩阵。但是,我现在正在努力创建矢量b。到目前为止,这是我的代码:

b = numpy.zeros(n*1).reshape(n,1)
def sumRow(n):
    while i = 0:
        for j in range(0,n):
            b[i] = math.fsum(A[i,j])
sumRow(n)
print b         

首先,我不知道如何从i = 0到i = n。

运行此代码时我也遇到了错误,我正在努力解决这个问题。

我的思考过程如下:

  1. 我创建了一个零的nx1向量。
  2. 然后我在n中定义了一个名为sumRow的函数。
  3. 然后我告诉函数执行b的公式所说的内容。
  4. 对于第0行和j在0到n范围内的j,我告诉计算机将第i行的b作为A的第i行中所有数字的总和。
  5. 有人可以帮我修改第二段代码,以获得给定n的矩阵b。

2 个答案:

答案 0 :(得分:1)

以下是使用列表理解

获取b的方法
b = [sum(x) for x in A]

答案 1 :(得分:1)

这可以解决填充向量b -

的问题
b = numpy.zeros(n*1).reshape(n,1)
def sumRow(n):
    for i in range(0,n):
        b[i] = math.fsum(A[i]) //calculates the sum of all elements of the given row
sumRow(n)
print b