如何将这个matlab代码翻译成python(numpy)

时间:2017-04-02 03:09:40

标签: python matlab numpy

Matlab代码:

 Sol[indx,j] = mf* ((alpha/(dx**2))*(Sol[indx+1,j-1]-2*Sol[indx,j-1]+Sol[indx-1,j-1])+ (K/dt)*Sol[indx,j-1] +(1/(dt**2))*(2*Sol[indx,j-1] - Sol[indx,j-2]))

我翻译的代码:

CREATE TABLE invoice (invoiceID INT auto_increment, businessunitID 
INT(2), date DATETIME, PRIMARY KEY (businessunitID, invoiceID));

我认为我没有正确翻译,因为结果不匹配

有人可以帮助我吗?感谢

编辑: 我真的想给出一些测试值,但矩阵大约是200 * 200。我不认为复制/粘贴这些值是个好主意。我不能给你们全部代码,因为这是一个功课问题。

3 个答案:

答案 0 :(得分:1)

看起来很好。您是否试图找出两个结果的区别? 我能想到的两个问题是索引和类型转换: - MATLAB索引从1开始,而python从0开始 - (alpha /(dx ** 2))和(1 /(dt ** 2)):你可以尝试制作它(alpha./(dx**2)),(1.1 /(dt**2) )

答案 1 :(得分:0)

如果您正在使用Python 2.7(?),则除法返回最低值。您可以通过导入' division':

返回真正的除法值

e.g。

1/2
>>0

from __future__ import division
1/2
>>0.5

Python3 +开箱即用。

答案 2 :(得分:0)

我认为问题在于索引,因为MATLAB索引从1开始但Python从0开始。尝试在运行表达式之前将indx和j减1。如果j是循环中的索引,则只从0开始循环而不是1。