显示多条曲线(SOR方法)

时间:2017-12-17 15:24:54

标签: python numpy math

这是我实现SOR(连续过度放松)方法的代码。 我想显示一个图表,其中几条曲线代表参数“omega”的参数中残差的|| r ^ k ||的范数2的值。 我在同一图表上显示多条曲线时遇到问题。 你能告诉我我的课程有什么问题吗?

import numpy as np
import scipy.linalg as la
import matplotlib.pyplot as plt


def SOR(A,b,Imax,eps,x0,omega):
    D=np.diag(np.diag(A))
    M=np.dot((1/omega),D)+np.tril(A,-1)
    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,0],[7,8,9]])
x0=np.array([[4],[8],[7]])   
b=np.array([[20],[8],[7]])

这是我们的图形函数,它只显示一条曲线。

def Graph():
i=0.1
while(i<=2):
    [x,i,res]=SOR(A,b,100,10**(-3),x0,i)
    plt.plot(range(len(res)),res)
    plt.yscale('log')
    plt.show()
    i=i+0.1

Graph()

0 个答案:

没有答案