2015-10-12 2 views
0

У меня есть вычисление численного анализа, и мне нужно найти некоторые коэффициенты путем умножения матриц. Нам дали пример в Mathcad, но теперь мы должны сделать это на другом языке программирования, поэтому я выбрал Python.Матричное умножение с Python

Проблема в том, что я получаю разные результаты путем умножения матриц в соответствующих средах. Вот функция в Python:

from numpy import * 
def matrica(C, n): 
N = len(C) - 1 
m = N - n 
A = [[0] * (N + 1) for i in range(N+1)] 
A[0][0] = 1 
for i in range(0, n + 1): 
    A[i][i] = 1 
for j in range(1, m + 1): 
    for i in range(0, N + 1): 
     if i + j <= N: 
      A[i+j][n+j] = A[i+j][n+j] - C[i]/2 
     A[int(abs(i - j))][n+j] = A[int(abs(i - j))][n+j] - C[i]/2 
M = matrix(A) 
x = matrix([[x] for x in C]) 
return [float(y) for y in M.I * x] 

Как вы можете видеть, я использую NumPy библиотеки. Эта функция согласуется с ее аналогом в Mathcad до return, частью, где матрицы умножаются, чтобы быть более конкретными. Еще одно замечание: эта функция возвращает правильную матрицу, если N = 1.

+2

Исправить отступ. Используйте 'import numpy как np'. Покажите, что вы получаете и чего ожидаете. – hpaulj

+0

Извините, но ваш код не ясен, так как ваш отступ не наступил из вашего вырезания и вставки. Кроме того, было бы хорошо, если бы вы дали нам ввод и вывод проб с ожидаемыми результатами. – DrBwts

ответ

1

Я не уверен, что я точно понимаю, что делает ваш код. Не могли бы вы объяснить немного больше, как то, что вы делаете на математике. Но если вы хотите простой обычный продукт, и если вы используете numpy.matrix, почему бы вам не использовать уже написанный матричный продукт?

a = numpy.matrix(...) 
b = numpy.matrix(...) 
p = a * b #matrix product 
+0

Вы хотите сделать это: p = M.I * x, а затем вернуть p? Нет, это не помогает. – Schizo

+0

* Что вы пытаетесь вычислить, каков ваш ожидаемый результат и каков ваш фактический результат? Вы просто бросаете нам код и говорите: «Видишь, проблема!» Как я должен знать, что случилось, если я не знаю, что правильно? –

+0

Я сказал, что правильно, это результат в Mathcad. Проблема заключается в самом умножении. – Schizo

Смежные вопросы