@shevzoom
 dev., student at MEPhI

Почему не совпадают размерности векторов?

Решаю дифур, задаю x от 0.1 до 2.5 с шагом h , как мне кажется.
Также вычисляю численно у, и если там мне понятно , что у нас 100 элементов , то откуда берется 101 в х?
Замечание:
A(a) и т.п. это я применяю функцию A(x) к каждому компоненту вектора.
Помогите разобраться, пожалуйста, если кто-то разбирается в этом.

import matplotlib.pyplot as plt
import numpy as np


def A(x):
    return np.log(3 + np.sqrt(1 + x))

def B(x):
    return np.exp(-x / 2)

def C(x):
    return np.sqrt((3 - x) / 2)

def F(x):
    return 2 - np.fabs(1 - x)

def run(n):
    h = 2.4 / (n + 1)

    def an(x):
        return (-(2 * A(x) + B(x) * h))

    def bn(x):
        return (4 * A(x) + 2 * C(x) * h ^ 2)

    def cn(x):
        return (-(2 * A(x) - B(x) * h))

    def fn(x):
        return (2 * F(x) * h ^ 2)

    x = np.arange(0.1, 2.5, h)

    a = np.arange(n)
    A(a)
    b = np.arange(n)
    B(b)
    c = np.arange(n)
    C(c)
    f = np.arange(n)
    F(f)

    a[0] = 0
    b[0] = 1
    c[0] = 0
    f[0] = 0.8

    alpha = list(range(n))
    beta = list(range(n))
    alpha[0] = (-1) * (c[0]) / (b[0])
    beta[0] = (f[0]) / (b[0])

    for i in range(1, n):
        alpha[i] = (-1) * (c[i]) / (a[i] * alpha[i - 1] + b[i])
        beta[i] = (f[i] - a[i] * beta[i - 1]) / (a[i] * alpha[i - 1] + b[i])


    y = list(range(n))
    y[0] = 0.8
    y[-1] = 1  # кладу последний n-й элемент равный 1
    for i in reversed(range(0, n-1)):
        y[i] = alpha[i] * y[i + 1] + beta[i]

    print(alpha)
    plt.plot(x, y, color='red', marker='o', linestyle='solid')
    plt.show()


run(100)
  • Вопрос задан
  • 73 просмотра
Пригласить эксперта
Ответы на вопрос 2
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
Эээ...
h = 2.4 / (n + 1)
h ведь у вас - шаг? Ну, вот...
Ответ написан
Комментировать
@grieverrr
откуда берется 101 в х?

оттуда что от 0,1 до 2,5 101 шаг рамером h
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы