声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1231|回复: 4

[求助]本人新手,关于数值积分的问题,急!希望得到各位大侠帮助

[复制链接]
发表于 2006-3-15 12:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
<P>function f=rw0(cet2,lamd)<BR>global z r <BR>n2=1.53974+0.0045628./(lamd).^2;<BR>k1=2.*pi./lamd;<BR>k3=k1;<BR>k2=2.*n2.*pi./lamd;<BR>det=2.*pi.*n2.*200./lamd;<BR>cet3=asin(n2.*sin(cet2));<BR>t1p=2./(n2+1);<BR>t2p=2.*n2.*cos(cet2)./(cos(cet2)+n2.*cos(cet3));<BR>r1p=(n2-1)./(n2+1);<BR>r2p=(n2.*cos(cet2)-cos(cet3))./(n2.*cos(cet2)+cos(cet3));<BR>t=t1p.*t2p.*exp(i.*det)./(1+r1p.*r2p.*exp(2.*i.*det));<BR>f=i.*t.*sqrt(cos(cet2)).*sin(cet2).*cos(cet3).*besselj(1,k2.*r.*sin(cet2)).*exp(i.*k3.*z.*cos(cet3)); <BR><BR>function f=rw1(cet2,lamd)<BR>global z r<BR>n2=1.53974+0.0045628./(lamd).^2;<BR>k1=2.*pi./lamd;<BR>k3=k1;<BR>k2=2.*n2.*pi./lamd;<BR>det=2.*pi.*n2.*200./lamd;<BR>cet3=asin(n2.*sin(cet2));<BR>t1p=2./(n2+1);<BR>t2p=2.*n2.*cos(cet2)./(cos(cet2)+n2.*cos(cet3));<BR>r1p=(n2-1)./(n2+1);<BR>r2p=(n2.*cos(cet2)-cos(cet3))./(n2.*cos(cet2)+cos(cet3));<BR>t=t1p.*t2p.*exp(i.*det)./(1+r1p.*r2p.*exp(2.*i.*det));<BR>f=2.*t.*sqrt(cos(cet2)).*sin(cet2).*sin(cet3).*besselj(0,k2.*r.*sin(cet2)).*exp(i.*k3.*z.*cos(cet3));<BR><BR>function f=rw2(lamd)<BR>global z r <BR>tol=1e-6;<BR>    Er=quad(@rw0,1e-15,pi./4,tol,[],lamd);<BR>    Ez=quad(@rw1,1e-15,pi./4,tol,[],lamd);<BR>    E2=abs(Ez).^2;<BR>    E1=abs(Er).^2;<BR>    E=E1+E2;<BR>    f=exp(-(lamd-0.55).^2).*E<BR><BR>clear<BR>global z r<BR>z=0;<BR>xx=-0.8;sx=0.8;<BR>for j1=1:101<BR>    r=xx+(j1-1).*(sx-xx)./100;<BR>    I=quad(@rw2,0.545,0.555);<BR>    rx(j1)=r;<BR>end<BR>plot(rx,I./max(max(I)),'k')<BR>显示结果为:<BR>??? Error using ==&gt; .*<BR>Matrix dimensions must agree.</P>
<P>Error in ==&gt; E:\雪华\dispersive\rw0.m<BR>On line 8  ==&gt; cet3=asin(n2.*sin(cet2));</P>
<P>Error in ==&gt; E:\雪华\toolbox\matlab\funfun\quad.m (quadstep)<BR>On line 114  ==&gt; y = feval(f, x, varargin{:});</P>
<P>Error in ==&gt; E:\雪华\toolbox\matlab\funfun\quad.m<BR>On line 74  ==&gt; [Q(1),fcnt,warn(1)] = ...</P>
<P>Error in ==&gt; E:\雪华\dispersive\rw2.m<BR>On line 4  ==&gt;     Er=quad(@rw0,1e-15,pi./4,tol,[],lamd);</P>
<P>Error in ==&gt; E:\雪华\toolbox\matlab\funfun\quad.m<BR>On line 59  ==&gt; y = feval(f, x, varargin{:});</P>
<P>Error in ==&gt; E:\雪华\dispersive\E.m<BR>On line 7  ==&gt;     I=quad(@rw2,0.545,0.555);<BR><BR>各位大侠错在哪里请指点<BR></P>
回复
分享到:

使用道具 举报

发表于 2006-3-16 10:09 | 显示全部楼层

回复:(yexuehua)[求助]本人新手,关于数值积分的问题...

没太仔细看,不过程序rw0中,n2和cet2两个变量的为数是不一致的<BR><BR>n2 是1*6<BR>cet是1*2<BR><BR>仔细检查一下变量传递吧
 楼主| 发表于 2006-3-16 10:56 | 显示全部楼层
<P>各位高手小弟实在无能为力了,请再帮忙解决解决吧</P>
发表于 2006-3-16 12:59 | 显示全部楼层
仔细检查各个变量的size。问题已经很清楚了,是matrix size 的问题。
 楼主| 发表于 2006-3-16 13:42 | 显示全部楼层
是matrix dimension不对,问题解决,多谢各位大虾指点,这是个好网站!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-11 22:57 , Processed in 0.085320 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表