<commit_before>"""
Métodos de diferenças finitas para equações diferenciais parciais de
segunda ordem.

Classes
-------
    - LinParabolic: equação parabólica linear.
"""

__all__ = ['LinParabolic']

import types
import numpy as np

class LinParabolic(object):
    """
    Equação parabólica linear:
        u_t = P(x, y)*u_xx + Q(x, y)*u_x + R(x, y)*u + S(x, y),

        u(x, 0)  = conds[0](x), 0 <= x <= xf,
        u(0, y)  = conds[1](y), 0 <= y <= yf,
        u(xf, y) = conds[2](y), 0 <= y <= yf.

    Métodos:
        - Diferenças finitas centrais explícito

    Parâmetros
    ----------
    domain : list of int/float
        [xn, xf, yn, yf], onde 'xn' é inteiro, o número de pontos no
        eixo 'x' menos 1, 'xf' é escalar, a posição final no eixo x,
        e analogamente para 'yn' e 'yf'.
    conds : list of function, scalar, array_like
        'conds[0]' é as condições iniciais, 'conds[1]' e 'conds[2]'
        são as condições de contornos em x=0 e 'xf', respectivamente.
        Cada elemento de 'conds' pode ser uma função vetorial de uma
        variável, ou um escalar, ou um vetor de tamanho 'xn+1' ou
        'yn+1'.
    params : list of function, scalar, array_like
        Os parâmetros P, Q, R e S. Cada um pode ser uma função vetorial
        de duas variáveis, ou um escalar, ou uma matriz de tamanho
        (xn-1)*yn.
    mthd : string | optional
        Método para resolver a equação. 'ec' para diferenças finitas
        centrais explícito.

    Retornos
    --------
    u : ndarray
        Uma matriz de tamanho (xn+1)*(yn+1) com os resultados,
        onde cada linha representa uma posição 'x' e cada coluna
        representa uma instante de tempo 'y'.<commit_msg>Changes.<commit_after>"""
Métodos de diferenças finitas para equações diferenciais parciais de
segunda ordem.

Classes
-------
    - LinParabolic: equação parabólica linear.
"""

__all__ = ['LinParabolic']

import types
import numpy as np

class LinParabolic(object):
    """
    Equação parabólica linear:
        u_t = P(x, y)*u_xx + Q(x, y)*u_x + R(x, y)*u + S(x, y),

        u(x, 0)  = conds[0](x), 0 <= x <= xf,
        u(0, y)  = conds[1](y), 0 <= y <= yf,
        u(xf, y) = conds[2](y), 0 <= y <= yf.

    Métodos:
        - Diferenças finitas centrais explícito

    Parâmetros
    ----------
    domain : list of int/float
        [xn, xf, yn, yf], onde 'xn' é inteiro, o número de pontos no
        eixo 'x' menos 1, 'xf' é escalar, a posição final no eixo x,
        e analogamente para 'yn' e 'yf'.
    params : list of function, scalar, array_like
        Os parâmetros P, Q, R e S. Cada um pode ser uma função vetorial
        de duas variáveis, ou um escalar, ou uma matriz de tamanho
        (xn-1)*yn.
    conds : list of function, scalar, array_like
        'conds[0]' é as condições iniciais, 'conds[1]' e 'conds[2]'
        são as condições de contornos em x=0 e 'xf', respectivamente.
        Cada elemento de 'conds' pode ser uma função vetorial de uma
        variável, ou um escalar, ou um vetor de tamanho 'xn+1' ou
        'yn+1'.
    mthd : string | optional
        Método para resolver a equação. 'ec' para diferenças finitas
        centrais explícito.

    Retornos
    --------
    u : ndarray
        Uma matriz de tamanho (xn+1)*(yn+1) com os resultados,
        onde cada linha representa uma posição 'x' e cada coluna
        representa uma instante de tempo 'y'.
{'fraction_non_alphanumeric': 0.11887290871734664, 'fraction_numerical': 0.010566480774875257, 'mean_word_length': 2.302325581395349, 'pattern_counts': {'":': 0, '<': 15, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6144948', 'n_tokens_mistral': 1283, 'n_tokens_neox': 1244, 'n_words': 437}