2015-11-01 102 views
-1

我已经写在MATLAB下面的代码,它应该会返回矢量uexact:错误在MATLAB

function v=uexact(x,t) 
    v=sin(2*pi*x)*exp(-4*pi^2*t); 
end 

function [ex]=test3 

    h = 1/50; 
    T=1/2500; 

    x=0:h:1; 
    t=0:T:1; 



    ex=uexact(x,t); 

end 

我得到以下警告消息:

??? Error using ==> mtimes 
Inner matrix dimensions must agree. 

Error in ==> uexact at 3 
    v=sin(2*pi*x)*exp(-4*pi^2*t); 

Error in ==> test3 at 11 
    ex=uexact(x,t); 

你能告诉在我的错误是?

+0

@IKavanagh我改变了它,但我再次收到警告信息: ???错误使用==>次 矩阵尺寸必须一致。 ==> uexact at 3的错误 v = sin(2. * pi。* x)。* exp(-4。* pi。^ 2. * t); 错误在==> test3在11 ex = uexact(x,t); –

+1

请描述你的函数应该返回什么。 – Daniel

+0

@Daniel它应该返回矢量uexact,这是一个边界/初始值问题的解决方案。 –

回答

1

问题是你的tx是不同的大小。然后在你的函数中,你试着重复sin(2*pi*x)这个是1x51exp(-4*pi^2*t)这就是1x2501。这是一个尺寸不匹配,正如您收到的错误消息中明确指出的那样。

如果你想有一个矩阵作为解决方案v=sin(2*pi*x)'*exp(-4*pi^2*t);会做的伎俩。

+0

非常感谢!我试图计算有限差分后向欧拉方法的精度顺序,但我没有得到正确的结果。我可以告诉你我试过了什么吗? –

+0

当然,虽然我在ODE的时候生锈了。只需编辑你的问题,这样你的后续问题也会出现。 –

+0

@DennisKlopfer我很确定这不是最好的建议。我怀疑*其他*问题与这个问题有微小的联系,因此可以更加明智地添加一个新的问题。 –