Метод прогонки python numpy

Saved searches

Use saved searches to filter your results more quickly

You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session.

Различные алгоритмы численных методов на языке Python.

alwayswannasky/Numerical-methods

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

README.md

Различные алгоритмы численных методов на языке Python.

Решение СЛАУ. Собственные значения и векторы

  • 1 — Метод Гаусса
  • 2 — Метод Жордана–Гаусса
  • 3 — Метод LU–разложения
  • 4 — Метод квадратных корней (схема Холецкого)
  • 5 — Метод ортогонализации
  • 6 — Метод прогонки
  • 7 — Метод простых итераций
  • 8 — Метод Якоби
  • 9 — Обратная матрица(методом Гаусса)
  • 10 — Решение СЛАУ в комплексном пространстве
  • 11 — Максимальное и минимальное по модулю собственные значения и соответствующие им собственные векторы
  • 12 — Переопределенные СЛАУ с помощью методов ортогонализации и минимизацией отклонений

Решение нелинейных уравнений и систем

  • 1 — Метод половинного деления
  • 2 — Метод Ньютона–Рафсона (касательных)
  • 3 — Метод секущих (хорд)
  • 4 — Комбинированный метод
  • 5 — Метод простых итераций
  • 6 — Метод Ньютона
  • 7 — Метод спуска
  • 8 — Решение линейных уравнений с помощью системы Штурма

Теория приближения и аппроксимация функций

  • 1 — Интерполяционный многочлен Лагранжа для функции, заданной таблично
  • 2 — Интерполяционный многочлен Лагранжа для заданной функции 𝑓(𝑥) с заданными узлами. Погрешность интерполяции
  • 3 — Интерполяционный многочлен Ньютона для функции, заданной таблично
  • 4 — Интерполяционный многочлен Ньютона для заданной функции 𝑓(𝑥) с заданными узлами. Погрешность интерполяции
  • 5 — Интерполяционный многочлен Эрмита
  • 6 — Интерполяционный кубический сплайн для функции из 1)
  • 7 — Интерполяционный кубический сплайн для функции из 2)
  • 8 — Метод наименьших квадратов, прямая линейной регрессии, аппроксимирующаю функцию, заданную таблично
  • 1 — Создание таблицы с приближенными значениями производной функции 𝑓′(𝑥), используя формулы первого порядка точности
  • 2 — Создание таблицs с приближенными значениями первой производной функции 𝑓′(𝑥), используя формулы второго порядка точности
  • 3 — Создание таблицы приближенных значений производных функции 𝑓′′(𝑥), вычисляемых по формулам второго порядка точности
  • 4 — Производные первого и второго порядков, используя интерполяционный метод
  • 5 — Вычисление производных первого и второго порядков при помощи сплайнов
  • 1 — Формулы прямоугольников
  • 2 — Формула трапеций
  • 3 — Формула Симпсона
  • 4 — Формулы интерполяционного типа
  • 5 — Формула Гаусса
  • 6 — Первый интеграл с помощью сплайнов
  • 7 — Метод Рунге–Ромберга
  • 8 — Несобственный интеграл

Численное решение задачи Коши

  • 1 — Метод последовательных приближений
  • 2 — Метод Эйлера, его модификации
  • 3 — Метод Рунге-Кутта
  • 4 — Метод Адамса
  • 5 — Метод Рунге-Ромберга в правом конце отрезка

Нахождение точек пересечения куба с плоскостью.

About

Различные алгоритмы численных методов на языке Python.

Источник

Реализации алгоритмов/Метод прогонки

Данный код работает при предположении, что a[0] = 0, b[n-1] = 0.

/** * n - число уравнений (строк матрицы) * b - диагональ, лежащая над главной (нумеруется: [0;n-2]) * c - главная диагональ матрицы A (нумеруется: [0;n-1]) * a - диагональ, лежащая под главной (нумеруется: [1;n-1]) * f - правая часть (столбец) * x - решение, массив x будет содержать ответ */ void solveMatrix (int n, double *a, double *c, double *b, double *f, double *x)  double m; for (int i = 1; i  n; i++)  m = a[i]/c[i-1]; c[i] = c[i] - m*b[i-1]; f[i] = f[i] - m*f[i-1]; > x[n-1] = f[n-1]/c[n-1]; for (int i = n - 2; i >= 0; i--)  x[i]=(f[i]-b[i]*x[i+1])/c[i]; > > 

Python [ править ]

def TDMA(a,b,c,f): a, b, c, f = tuple(map(lambda k_list: list(map(float, k_list)), (a, b, c, f))) alpha = [-b[0] / c[0]] beta = [f[0] / c[0]] n = len(f) x = [0]*n for i in range(1, n): alpha.append(-b[i]/(a[i]*alpha[i-1] + c[i])) beta.append((f[i] - a[i]*beta[i-1])/(a[i]*alpha[i-1] + c[i])) x[n-1] = beta[n - 1] for i in range(n-1, -1, -1): x[i - 1] = alpha[i - 1]*x[i] + beta[i - 1] return x 

Источник

Метод прогонки в Python

Метод прогонки является одним из наиболее распространенных численных методов для решения систем линейных уравнений с трехдиагональными матрицами. В этой статье мы покажем, как реализовать метод прогонки с помощью Python.

Теория

Для системы линейных уравнений вида:

A[0,0]*x[0] + A[0,1]*x[1] = b[0] A[1,0]*x[0] + A[1,1]*x[1] + A[1,2]*x[2] = b[1] . A[n-1,n-3]*x[n-3] + A[n-1,n-2]*x[n-2] + A[n-1,n-1]*x[n-1] = b[n-1]

где A — трехдиагональная матрица размера nxn, x — вектор решений размера n и b — вектор правой части размера n. Метод прогонки состоит из двух этапов: прямой ход и обратный ход.

Прямой ход

Прямой ход инициируется следующими начальными значениями:

Далее, используя рекуррентные соотношения, вычисляются значения P и Q для i = 1, . n-1:

P[i] = -A[i,i+1] / (A[i,i] + A[i,i-1]*P[i-1]) Q[i] = (b[i] - A[i,i-1]*Q[i-1]) / (A[i,i] + A[i,i-1]*P[i-1])

Обратный ход

На обратном ходе вычисляется решение x[n-1]:

Реализация на Python

import numpy as np def tridiagonal_solver(A, b): n = len(A) P = np.zeros(n) Q = np.zeros(n) P[0] = -A[0, 1] / A[0, 0] Q[0] = b[0] / A[0, 0] for i in range(1, n): denominator = A[i, i] + A[i, i - 1] * P[i - 1] P[i] = -A[i, i + 1] / denominator Q[i] = (b[i] - A[i, i - 1] * Q[i - 1]) / denominator x = np.zeros(n) x[n - 1] = Q[n - 1] for i in range(n - 2, -1, -1): x[i] = P[i] * x[i + 1] + Q[i] return x

Функция tridiagonal_solver принимает на вход матрицу A и вектор правой части b , а возвращает вектор решений x .

Пример использования

A = np.array([ [2, -1, 0], [-1, 2, -1], [0, -1, 2] ]) b = np.array([1, 2, 3]) x = tridiagonal_solver(A, b) print(x)

Пример выше демонстрирует использование функции tridiagonal_solver для решения системы линейных уравнений с трехдиагональной матрицей.

Заключение

Метод прогонки является эффективным алгоритмом для решения систем линейных уравнений с трехдиагональными матрицами. В этой статье мы показали, как реализовать этот метод на языке программирования Python.

Источник

Читайте также:  Scripting java with javascript
Оцените статью