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。我不认为复制/粘贴这些值是个好主意。我不能给你们全部代码,因为这是一个功课问题。
答案 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。