符号积分的一个奇怪的问题!
我有如下循环<BR>for i = 1:n<BR> C = C+element_C(N);<BR>end<BR><BR>其中 N为符号Xi的6×6的矩阵,element_C(N)主要就是对N在0~1之间积分,其余运算不涉及矩阵size的变化。但是改循环只能循环30~40次,而且各次执行其次数还不一致,出现的问题说计算失败那一次reshape时矩阵单元数目不一致!<BR>注;<BR>maple在做完符号积分后对结果有一次reshape(因为做之前将矩阵变成列向量,其后又还原为矩阵),因此,这里的问题相当于6×6--> 36×1-?-> 6×6<BR>但是我在int.m&maple.m里面读出被积函数的size一直没有变化<BR><BR>我在自己的计算中一致不涉及矩阵size的变化,难道这种计算又次数的限制(我用的是D版)<BR><BR>程序debuge到此,也有2天无法进行了,高手们给点建议。<BR><BR>thanx in advance!!<BR>回复:(kevinhcj)符号积分的一个奇怪的问题!
最好把详细的代码贴出来回复:(suffer)回复:(kevinhcj)符号积分的一个奇...
<P>ok!<BR><BR>%subrution<BR>function C_b1 = element_Cb2(z0,z1,t,bb)<BR>syms Xi <BR>psi = bb;</P><P>N1 = 1-10*Xi^3+15*Xi^4-6*Xi^5;<BR>N2 = 10*Xi^3-15*Xi^4+6*Xi^5;<BR>N3 = Xi-6*Xi^3+8*Xi^4-3*Xi^5;<BR>N4 = -4*Xi^3+7*Xi^4-3*Xi^5;<BR>N5 = 1/2*(Xi^2-3*Xi^3+3*Xi^4-Xi^5);<BR>N6 = 1/2*(1*Xi^3-2*Xi^4+Xi^5);</P>
<P>N= ;</P>
<P>NN1 = diff(N,Xi,1);<BR>cc = (psi'*(NN1'*NN1)*psi)*(N'*N);<BR>C_b1 = int(cc,Xi,0,1);<BR>C_b1 = C_b1;<BR>C_b1 = double(C_b1);</P>
<P>return</P>
<P>% main<BR>clear all; clc;<BR>format long;</P>
<P>n = 10<BR>m = 100;<BR>zz = ';<BR>delta_t = 0.1;</P>
<P>C_b1_u = zeros(3*n+3);<BR>psi_q_try = ones(3*(n+1),1);</P>
<P>for j = 1:m<BR> <BR> t = delta_t*j;<BR> <BR> for k = 1:n<BR> bb = psi_q_try(3*k-2:3*(k+1));<BR> C_b1 = element_Cb1(zz(k),zz(k+1),t,bb);<BR> C_b1_u(3*k-2:3*(k+1),3*k-2:3*(k+1)) = C_b1_u(3*k-2:3*(k+1),3*k-2:3*(k+1)) + C_b1;<BR> end <BR>end<BR></P>
回复:(kevinhcj)回复:(suffer)回复:(kevinhcj...
<DIV class=quote><B>以下是引用<I>kevinhcj</I>在2006-3-14 18:36:29的发言:</B><BR><P>ok!<BR><BR>%subrution<BR>function C_b1 = element_Cb2(z0,z1,t,bb)<BR>syms Xi <BR>psi = bb;</P>
<P>N1 = 1-10*Xi^3+15*Xi^4-6*Xi^5;<BR>N2 = 10*Xi^3-15*Xi^4+6*Xi^5;<BR>N3 = Xi-6*Xi^3+8*Xi^4-3*Xi^5;<BR>N4 = -4*Xi^3+7*Xi^4-3*Xi^5;<BR>N5 = 1/2*(Xi^2-3*Xi^3+3*Xi^4-Xi^5);<BR>N6 = 1/2*(1*Xi^3-2*Xi^4+Xi^5);</P>
<P>N= ;</P>
<P>NN1 = diff(N,Xi,1);<BR>cc = (psi'*(NN1'*NN1)*psi)*(N'*N);<BR>C_b1 = int(cc,Xi,0,1);<BR>C_b1 = C_b1;<BR>C_b1 = double(C_b1);</P>
<P>return</P>
<P>% main<BR>clear all; clc;<BR>format long;</P>
<P>n = 10<BR>m = 100;<BR>zz = ';<BR>delta_t = 0.1;</P>
<P>C_b1_u = zeros(3*n+3);<BR>psi_q_try = ones(3*(n+1),1);</P>
<P>for j = 1:m<BR> <BR> t = delta_t*j;<BR> <BR> for k = 1:n<BR> bb = psi_q_try(3*k-2:3*(k+1));<BR> <FONT color=#ff0000> C_b1 = element_Cb1(zz(k),zz(k+1),t,bb);<BR></FONT> C_b1_u(3*k-2:3*(k+1),3*k-2:3*(k+1)) = C_b1_u(3*k-2:3*(k+1),3*k-2:3*(k+1)) + C_b1;<BR> end <BR>end<BR></P></DIV>
<P><FONT color=#ff0000>红色标记的是不是应该是<BR>C_b1 = element_Cb2(zz(k),zz(k+1),t,bb);<BR></FONT><BR>如果是的话,应该是你子程序中用int找不到积分<BR></P> thank u!<BR>那里是笔误,对不起!我的子程序就是<FONT color=#ff0000>C_b1 = element_Cb1(zz(k),zz(k+1),t,bb);<BR></FONT>这个问题的奇怪之处在于,输入参数的size一直没有变化,退一万步讲,如果参数size变化了,那就应该一个外循环也不能执行啊。而这个程序可以执行很多次循环而后出错。更有甚者,不改变任何设置,每一次运行的总循环次数n×(j-1)+k不一致。所以我觉得是不是D版或者本身有循环数限制?<BR><BR>thanx again!
回复:(kevinhcj)thank u!那里是笔误,对不起!我的...
<DIV class=quote><B>以下是引用<I>kevinhcj</I>在2006-3-15 10:46:00的发言:</B><BR>thank u!<BR>那里是笔误,对不起!我的子程序就是<FONT color=#ff0000>C_b1 = element_Cb1(zz(k),zz(k+1),t,bb);<BR></FONT>这个问题的奇怪之处在于,输入参数的size一直没有变化,退一万步讲,如果参数size变化了,那就应该一个外循环也不能执行啊。而这个程序可以执行很多次循环而后出错。更有甚者,不改变任何设置,每一次运行的总循环次数n×(j-1)+k不一致。所以我觉得是不是D版或者本身有循环数限制?<BR><BR>thanx again!</DIV><br>你说的现象是很奇怪,不过我运行没有你说的总循环次数不一致的问题 呵呵,这个问题另外一个高手也没有解决,不会是MATLAB的bug把?不过看来也不太像。
回复:(kevinhcj)呵呵,这个问题另外一个高手也没有...
<DIV class=quote><B>以下是引用<I>kevinhcj</I>在2006-3-16 13:01:52的发言:</B><BR>呵呵,这个问题另外一个高手也没有解决,不会是MATLAB的bug把?不过看来也不太像。</DIV><P>可以去mathwork问问看,那里专业,呵呵</P> <P>it's a good idea!</P>
页:
[1]