雅可比法纵坐标对数标度图

2024-06-26 00:26:41 发布

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

我必须编写Jacobi,Gauss-Seidel和SOR方法来解析Ax=b,我们使用a=M-N分解

例如,对于雅可比方法,我们使用M=diag(A)和N=M-A

我编写了一个函数

jacobi(A,b,Imax,err,x0)

用矩阵A,列向量b,最大迭代次数Imax,公差err,为Jacobi方法。我使用了一个“stop test”enter image description here,其中enter image description here是步骤k处的“残差”

这是我的密码:

import numpy as np
import scipy.linalg as la

def jacobi(A,b,Imax,eps,x0):
    M=np.diag(np.diag(A))
    N=M-A
    r=np.dot(A,x0)-b
    x=x0
    i=0
    err=1+eps
    res=[]
    while ((i<Imax) and ((la.norm(r))>=eps)):
        x=np.dot(np.dot((la.inv(M)),N),x)+np.dot((la.inv(M)),b)
        r=np.dot(A,x)-b
        err = la.norm(r,2)
        res.append(err)
        i=i+1
    return (x,i,res)

以及测试:

A=np.array([[2,0,0],[4,5.4,0],[7,8,9]])
x0=np.array([[1],[1],[1]])   
b=np.array([[20],[8],[7]])
print(jacobi(A,b,1000,10**(-3),x0))

现在,我必须在一个图上(用对数标度表示纵坐标)表示n的函数值enter image description here

我只想知道如何用对数标度表示一个图?我是Python的初学者,我不知道如何表示一个图。。。我尽量说清楚,对不起我的英语不好。。。你知道吗


Tags: 方法函数importnpresepsarraydot
1条回答
网友
1楼 · 发布于 2024-06-26 00:26:41

下面是一些伪值的对数图

import matplotlib.pyplot as plt
import numpy as np

j = np.power(10,range(10))    # < - here use your computed values instead

plt.plot(j)
plt.yscale('log')
plt.show()

log plot

如果您想记录日志,也可以设置xscale。你知道吗

相关问题 更多 >