beyondhxf 发表于 2009-10-26 13:11

符号运算太复杂导致matlab出错

我用了一个50*50次的循环,每次循环计算一个很复杂的积分,到中途出错了
以前做的18*18时候,没有出错,说明不是程序的错误。
??? Error using ==> reshape
To RESHAPE the number of elements must not change.
Error in ==> sym.maple at 94
      result = reshape(result,size(varargin{3}));
Error in ==> sym.int at 51
   r = reshape(maple('map','int',f(:),),size(f));
请问如何改进我的程序,以便让它能运行通?

补充?难道说在调用maple做符号运算的时候,会积累什么错误之类的?调用次数太多就出错?maple就崩溃?

[ 本帖最后由 beyondhxf 于 2009-10-26 13:15 编辑 ]

ChaChing 发表于 2009-10-26 21:50

符号运算来此学的, 没这方面经验!
仅有出错提示无出错代码, 真没办法, 待高人路过

friendchj 发表于 2009-10-26 23:10

result = reshape(result,size(varargin{3}));根据提示,应该是result和size(varargin{3})的元素大小不一样。最好能贴出程序代码,可以简化贴出,能说明问题即可。

beyondhxf 发表于 2009-10-27 14:40

原帖由 beyondhxf 于 2009-10-26 13:11 发表 http://www.chinavib.com/forum/images/common/back.gif
我用了一个50*50次的循环,每次循环计算一个很复杂的积分,到中途出错了
以前做的18*18时候,没有出错,说明不是程序的错误。
??? Error using ==> reshape
To RESHAPE the number of elements must not change. ...

贴出相关的程序,仅是说明性的,不全面。

syms sita
for i=1:50
   A(1,i)=B(sita)
   。。。
   A(4,i)=B(sita)
end
%这里,B函数是一个关于sita的函数,返回一个关于sita的表达式(比较复杂,恐怕是致错的根源),是sym型的。
for i=1:50
for j=1:50
C(i,j)=int(A(1,i)*A(2,j),-1,1);
end
end
%由于循环次数是50*50,比较多,在算到一半的时候会出现如上提示的错误。而如果循环次数在18*18次,则不出错。
本人猜测,这是由于调用maple内核过多而导致的错误,并不是程序本身的语法错误。

friendchj 发表于 2009-10-27 14:48

参考一下:http://forum.vibunion.com/forum/viewthread.php?tid=86169&page=1#pid441572
页: [1]
查看完整版本: 符号运算太复杂导致matlab出错