LINUX.ORG.RU

Есть ли смысл использовать для численных расчетов python?

 , ,


6

6

Есть ли смысл использовать для численных расчетов python (методы конечных элементов, математические расчеты, много циклов, большие данные)?

Или лучше использовать c++? Насколько медленнее код получается?

Плюсы питона:

  • простой
  • можно быстро создать алгоритм или переделать
  • много библиотек для численных расчетов, построения графиков
  • низкий порог вхождения, другим будет проще его изучить
  • можно потом куски на си переписать

Минусы питона:

  • медленнее плюсов
  • после c++ трудно переключится, кое-что по-другому (структуры, switch)
  • я его гораздо хуже знаю

Дал прогу на c++ одному, от так и не смог его осилить :(

Поделитесь историей успеха.

★★★★★
Ответ на: комментарий от dikiy

Мне нужно вычислить следующее:

\[K\] = \int\limits_{-1}^1 \int\limits_{-1}^1 \int\limits_{-1}^1 { \[B\]^T \[D\] \[B\] } dV,
где матрицы B, D, K - матрицы. Это приближенно можно вычислить так
\sum_i\sum_j\sum_k {a(i)*a(j)*a(k)* [B(x(i),x(j),x(k))]^T [D] [B(x(i),x(j),x(k))] * det[J],
a(i) - вектор весовых коэффициентов, x(i) - вектор координат, i,j,k=1..3

Zodd ★★★★★
() автор топика
Ответ на: комментарий от Zodd

def f(x,y,z):
    return np.matmul(B(x,y,z),np.matmul(D,B(x,y,z))) # твоя функция. Насколько я понимаю, матрицы B функциональные


xx,yy,zz = np.meshgrid(x,y,z)  #здесь подразумевается, что x,y,z уже содержат нужные наборты опорных точек значения

f_meshed=f(xx,yy,zz)

np.einsum('i,j,k,ijk',a,a,a,f_meshed)
dikiy ★★☆☆☆
()
Последнее исправление: dikiy (всего исправлений: 1)
Ответ на: комментарий от Zodd

на выходе ты что хочешь получить? Матрицу или скаляр?

dikiy ★★☆☆☆
()
Ответ на: комментарий от Zodd

В общем, покажи математически, чего тебе надо. Только точно. Начиная от исходной задачи.

Интеграл от матрицы? Имеет собсно смысл, только если у тебя матрица из функций. Иначе просто за интеграл можно вынести.

dikiy ★★☆☆☆
()
Ответ на: комментарий от dikiy

Спасибо за пример, стало понятно как писать на питоне.

По задаче: под интегралом матрица и на выходе тоже матрица. Она зависит от точек интегрирования, поэтому её не вынести за интеграл.

Матрица B зависит от координат и каждый раз вычисляется

Zodd ★★★★★
() автор топика
Последнее исправление: Zodd (всего исправлений: 1)
Ответ на: комментарий от Zodd

По задаче: под интегралом матрица

размерность какая? По идее можно meshgrid уже по произведению матриц прогонять.

dikiy ★★☆☆☆
()
Ответ на: комментарий от Zodd

посмотри еще в сторону convolve. Это может еще ускорит

dikiy ★★☆☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.