关于符号函数syms
我的程序段是这样的:clear; g=0.01; n=24; cei=0.01; omga=1; bata=4.5; afa=0.1;
v=0.8; b=0.005*v^2; lame=;
syms x
for t=1:3
fai(t)=cosh(lame(t)*x)-cos(lame(t)*x)-(cosh(lame(t))+cos(lame(t)))*(sinh(lame(t)*x)-sin(lame(t)*x))/(sinh(lame(t))+sin(lame(t)));
end
for i=1:3,for j=1:3
mm(i,j)=int(fai(j)*fai(i), x, 0, 1);
cc(i,j)=cei*int(fai(j)*diff(fai(i), 4), x, 0, 1)/omga;
kk(i,j)=(int(fai(j)*diff(fai(i), 4), x, 0, 1)-bata^2*afa*int((1-x)*fai(j)*diff(fai(i), 2), x, 0, 1)-1/2*bata^2*int((1-x^2)*fai(j)*diff(fai(i), 2), x, 0, 1))/omga^2;
m(i,j)=double(mm(i,j)); c(i,j)=double(cc(i,j)); k(i,j)=double(kk(i,j));
end; end
运行之后一直提示这样的错误:
??? 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));
怎么回事呢,我改了好久也不行。。太着急了,请大家帮帮忙~~
[ 本帖最后由 ChaChing 于 2009-10-27 20:02 编辑 ]
回复 楼主 dongdongme 的帖子
这种问题很常见,可能是输入或某个量是向量或矩阵形式,而计算的函数不能直接对矩阵运算,所以出现元素数量不符的情况,找一下出错的位置,再向前找,对矩阵运算用点乘,所有的都要乘,回复 沙发 lxy04123 的帖子
不是啊,,都是对元素的运算啊。。可能
应该是第二十行int(fai(j)*fai(i), x, 0, 1)出的问题 单步执行第一步是通的,之后一直busy。我的版本是2008a 当i=1,j=2时,20行int积分的函数表达式中含有/x项,即分母有x,若积分的话x=0时则为无穷大,可以使初始值设为非零试试
回复 5楼 friendchj 的帖子
恩,我那个,busy了很长时间以后出现的提示错误~~回复 地板 lxy04123 的帖子
恩,是int的问题。。回复 6楼 lxy04123 的帖子
不是分母的问题。。难道是j=2的时候,数字太大了没办法积分?。。
omg.. 把int改成quad试试,这样会加快运算速度。例如:
K>> ss=fai(2)*fai(1);
K>> ss=feval(@char,ss);
K>> quad(@(x)ss,0,1)
Warning: Maximum function count exceeded; singularity likely.
> In quad at 106
In shiyan at 26
ans =
90.2424
K>>
[ 本帖最后由 friendchj 于 2009-9-7 17:17 编辑 ]
回复 楼主 dongdongme 的帖子
我也遇到了相似的问题,你的问题是怎么解决的啊?
页:
[1]