PDA

查看完整版本 : [MATLAB基础] 请教Matlab中符号变量计算的问题


ReallyLin
2011-09-08, 20:28
现在在做一个东西,运用多次迭代计算一个被积函数。我在Matlab中定义了:syms kp,
想计算出关于kp的多项式后,转化为函数然后积分。但是今天,遇到了一个让我很郁闷的事情。计算的结果,在积分时运用feval函数时会报错:
Undefined function or variable 'I'。
我看了一下,被积函数是:
fKzx = @(kp)1/kp^2*(exp((0.00061512385228351196611584761342328-1.0*kp^2*(1/2)*(-1.0*I))。。。。。。(后面很长不贴出来了)
我看了就不懂了,我只定义了kp,为什么会出现这个 I 啊。
我继续查,fKzx是从fKzx=str2func(['@(kp)' char(SKzx)])来的,结果看到SKzx是:
SKzx =1/kp^2*(exp((0.00061512385228351196611584761342328 - 1.0*kp^2)^(1/2)*(-1.0*I))。。。。。。(依旧很长,不贴出来了),就是发现里面也有 I。
继续查,Skzx是从SKzx=((k(m)^2)*Wie/(kz(m)^2)-Wih)/(kp^2)来的,然后我发现了一件很郁闷的事情。我计算((k(m)^2)*Wie/(kz(m)^2)-Wih)结果是:
ans =exp((0.00061512385228351196611584761342328 - 1.0*kp^2)^(1/2)*(-1.0*I))。。。。。。。依旧有这个 I
但是我把减号分开来,前面的(k(m)^2)*Wie/(kz(m)^2)结果是:
(3.9489819655623694055740118840808*i(( 11234.67804748527200260299023838*( 0.00070299868832401392337860812631334 - 1.0*kp^2)^(1/2) - 9986.3804866535757461374892490029*(0.00079087352436451566380093414210251 - 1.0*kp^2)^(1/2))/。。。。。。。。
后面的Wih是:
-(3.9489819655623701007475427327823*i*((0.1266149109720726617095336224125*(0.00070299868832401392337860812631334 - 1.0*kp^2)^(1/2) - 0.1266149109720726617095336224125*(0.00079087352436451566380093414210251 - 1.0*kp^2)^(1/2))/(exp(1.0*i*(0.00070299868832401381495839087776289 - 1.0*kp^2)^(1/2))*(0.1266149109720726617095336224125*(0.00070299868832401392337860812631334 - 1.0*kp^2)^。。。。。。。。
总之这两项都只是kp的多项式。
所以我就郁闷了,为什么两个只是kp的多项式的式子相减,结果会出来一个有大写字母I 的参量的式子啊。而且之后这个 I 怎么都弄不掉,到了积分时又说我没有定义,而此时也无法给I任务赋值和定义。
求救啊,这是为什么啊????????
补充一点:我的计算涉及复数计算,但是我使用的所有复数描述方式都是 1i 。而计算的结果中也有 i 出现以表示复数,实在不知道这个大写的 I 到底是什么情况。