如何将矩阵的第一个元素附加到循环的列表上?

2024-05-18 07:53:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个循环,分别对应于不同的x和y坐标,以及每个不同的(x,y)坐标,使用矩阵法求解力1和力2的线性方程,即,如果Ax=C,则求a的逆。对于每个循环,它以矩阵形式给出答案,其中第一个元素是力1,第二个元素是这些特定坐标处的力2。这是我的密码:

import numpy as np
from scipy import linalg
def Force():
    Force1 = np.zeros((160,90))
    Force2 = np.zeros((160,90))
    for x in np.arange(0,16.1,0.1):
        for y in np.arange(1,9.1,0.1):
            l1 = np.hypot(x,y)
            l2 = np.hypot(15-x,y)
            A = np.array([[(x/l1),((x-15)/l2)],[(y/l1),(y/l2)]])
            c = np.array([[0],[70*9.81]])

            F = linalg.solve(A,c)
            Force1[x,y] = F[0]
            Force2[x,y] = F[1]
            print("Force 1 = {} \nForce 2 = {}\n".format(F[0], F[1]))

所以在每个点(x,y)上,一个矩阵[[Force 1],[Force 2]]被求解。现在我想把所有的Force1(s)附加到Force1[x,y]的列表中,类似地,我可以

plt.imshow[Force1]
plt.imshow[Force2]

绘制2个热图。我该怎么做呢?你知道吗


Tags: inimport元素l1fornpzeros矩阵
1条回答
网友
1楼 · 发布于 2024-05-18 07:53:28

这就解决了您的问题—您试图将Force1Force2类型的索引赋值给float。我将for循环改为user enumerate,并调整了赋值,使其赋值F[0][0]F[1][0]。你知道吗

import numpy as np
from scipy import linalg
def Force():
    Force1 = np.zeros((160,90))
    Force2 = np.zeros((160,90))
    for i, x in enumerate(np.arange(0,16,0.1)):
        for j, y in enumerate(np.arange(1,9,0.1)):
            l1 = np.hypot(x,y)
            l2 = np.hypot(15-x,y)
            A = np.array([[(x/l1),((x-15)/l2)],[(y/l1),(y/l2)]])
            c = np.array([[0],[70*9.81]])

            F = linalg.solve(A,c)
            Force1[i, j] = F[0][0]
            Force2[i, j] = F[1][0]
#            print("Force 1 = {} \nForce 2 = {}\n".format(F[0], F[1]))
    plt.imshow(Force1)
    plt.show()
    plt.imshow(Force2)
    plt.show()

Force()

生成的绘图为:

Force 1

以及

Force 2

相关问题 更多 >