hanxiao 发表于 2006-3-14 16:29

那位大虾帮帮忙阿?

这是我的程序,很简单的,都是矩阵的加碱,积分,求导什么的。为什么一算就很长时间,然后自动退出呢?第一个积分命令int前的程序都能运行,到int就不行了,怎么回事呢?那位大虾帮忙看看,谢谢了先!!<BR>syms z<BR>a=<BR>a1=diff(a)<BR>a2=diff(a1)<BR>m=int((212160-858*z)*a'*a,0,34)<BR>kesi=int((212160-858*z)*a',0,34)<BR>p=-kesi*2.383*10^-2<BR>r=int(2.1*10^11*(29.962-0.702*z)*a2'*a2,0,34)<BR>k2=-int(10^6*a1'*a1,0,34)<BR>k=r+k2<BR>syms t<BR>e=k-t^2*m<BR>d=-0.1*k<BR>i=d*d+e*e<BR>yi=inv(i)*d*p<BR>yr=inv(i)*e*p<BR>x=yr(1)+yr(2)+yr(3)<BR>y=yi(1)+yi(2)+yi(3)<BR>w=x^2+y^2<BR>b1=int(2*w,t,0,8)<BR>b2=int(2*t^2*w,t,0,8)<BR>double(b1)<BR>double(b2)<BR>z=34<BR>a2 =<BR>x1=a2(1)*yr(1)+a2(2)*yr(2)+a2(3)*yr(3)<BR>y1=a2(1)*yi(1)+a2(2)*yi(2)+a2(3)*yi(3)<BR>w1=x1^2+y1^2<BR>wj1=12.8*10^11*int(2*w1,t,0,8)<BR>wj2=12.8*10^11*int(2*t^2*w1,t,0,8)<BR>double(wj1)<BR>double(wj2)<BR>

hanxiao 发表于 2006-3-14 19:54

并求一个解决方法。不胜感激。。。

happy 发表于 2006-3-15 09:19

回复:(hanxiao)那位大虾帮帮忙阿?

<DIV class=quote><B>以下是引用<I>hanxiao</I>在2006-3-14 16:29:44的发言:</B><BR>kesi=int((212160-858*z)*a',0,34)<BR></DIV>
<P>这个积分不存在,换数值积分吧</P>

kevinhcj 发表于 2006-3-15 15:59

我倒是很快能算出kesi来,但是bl,b2较长时间也没有计算出来,我就没有算了。建议你把复杂的计算结果先vpa一下后在进行后续计算,是不是好一点。

hanxiao 发表于 2006-3-15 17:27

<FONT color=#61b713 face=Verdana><B>kevinhcj:<BR>谢谢你,这么认真地对待我的问题,好感动阿。。。谢谢!<BR>我上次的问题没有表达清楚,请再帮帮忙吧!见下贴</B></FONT>

hanxiao 发表于 2006-3-15 17:29

<P>还是上次的源代码,当执行到b1=int(2*w,t,0,8)这个语句时,前面都可以执行,这句需要很长时间(几个小时吧),然后要么退出,要么就出现ans=NaN。改用数值积分b1=quadl(2*w,t,0,8),就出现了下面的信息:<BR>??? Error using ==&gt; fcnchk<BR>If FUN is a MATLAB object, it must have an feval method.</P>
<P>Error in ==&gt; quadl at 54<BR>f = fcnchk(funfcn);<BR>怎么回事呀?<BR><BR>源程序:<BR>syms z<BR>a=<BR>a1=diff(a)<BR>a2=diff(a1)<BR>m=int((212160-858*z)*a'*a,0,34)<BR>kesi=int((212160-858*z)*a',0,34)<BR>p=-kesi*2.383*10^-2<BR>r=int(2.1*10^11*(29.962-0.702*z)*a2'*a2,0,34)<BR>k2=-int(10^6*a1'*a1,0,34)<BR>k=r+k2<BR>syms t<BR>e=k-t^2*m<BR>d=-0.1*k<BR>i=d*d+e*e<BR>yi=inv(i)*d*p<BR>yr=inv(i)*e*p<BR>x=yr(1)+yr(2)+yr(3)<BR>y=yi(1)+yi(2)+yi(3)<BR>w=x^2+y^2<BR>b1=int(2*w,t,0,8)<BR>b2=int(2*t^2*w,t,0,8)<BR>double(b1)<BR>double(b2)<BR>z=34<BR>a2 =<BR>x1=a2(1)*yr(1)+a2(2)*yr(2)+a2(3)*yr(3)<BR>y1=a2(1)*yi(1)+a2(2)*yi(2)+a2(3)*yi(3)<BR>w1=x1^2+y1^2<BR>wj1=12.8*10^11*int(2*w1,t,0,8)<BR>wj2=12.8*10^11*int(2*t^2*w1,t,0,8)<BR>double(wj1)<BR>double(wj2)<BR><BR></P><BR>

kevinhcj 发表于 2006-3-15 17:52

你在查查帮助把,quadl的格式如下<BR>q = quadl(fun,a,b)<BR>被积函数fun需要定义成一个函数<BR>

kevinhcj 发表于 2006-3-15 17:54

quadl和int不一样,前者是做数值积分的,后者做符号积分

hanxiao 发表于 2006-3-15 19:29

kevinhcj:<BR><BR>function怎么定义函数阿?你能告诉我么?<BR>今天我和我同学试了一天也不行,不知道为什么?<BR>很着急,帮帮忙吧!真的很感谢你。。。

sffei 发表于 2006-3-15 19:55

function定义函数随便找本书看看就行了

kevinhcj 发表于 2006-3-15 20:18

回复:(hanxiao)kevinhcj:function怎么定义函数阿?...

% for example &amp; good luck!<BR><BR>function y = myfun(x)<BR>a=1; b=2; c=3;<BR>y = a*x^2+b*x+c;

hanxiao 发表于 2006-3-16 09:09

我用function定义函数,为什么出来这些?<BR>我是新手,大家帮帮忙吧!!<BR>function y=myfun(t)<BR>??? function y=myfun(t)<BR>    |<BR>Error: Function definitions are not permitted at the prompt or in scripts.

happy 发表于 2006-3-16 09:33

回复:(hanxiao)我用function定义函数,为什么出来这...

老问题了,看帖子http://forum.vibunion.com/forum/viewthread.php?tid=5018吧

hanxiao 发表于 2006-3-16 12:42

我用function定义函数,为什么或出现下面的情况?<BR>function y=myfun(x)<BR>??? function y=myfun(x)<BR>    |<BR>Error: Function definitions are not permitted at the prompt or in scripts.<BR>

kevinhcj 发表于 2006-3-16 12:56

如果你的主程序不是m函数,而只是m文件,你定义的函数就要另外保存,而且最后文件名和函数名相同。
页: [1] 2
查看完整版本: 那位大虾帮帮忙阿?