一段求定积分的程序,总是有错,请指教
z=0.1;S_x=S_y=0.1;
syms x y
f=200;
c=340;
k=2*pi*f/c;
for l=0:8
for h=0:8
p(l+1,h+1)=0;
for m=0:8
for n=0:8
R=sqrt(x.^2+y.^2+0.1^2);
f='0.1*(1-i*k*R)*exp(i*k*R)/(2*pi*R^3)';
g=dblquad(f,(l-m-0.5)*S_x,(l-m+0.5)*S_x,(k-n-0.5)*S_y,(k-n+0.5)*S_y);
p(l+1,h+1)=SS(m+1,n+1)*g;
end
end
end
end
错误N多,就一个积分咋就这么难 S_x=S_y=0.1;=====>>>S_x=0.1;S_y=0.1;
f='0.1*(1-i*k*R)*exp(i*k*R)/(2*pi*R^3)';====>>>
f=inline('0.1*(1-i*k*sqrt(x.^2+y.^2+0.1^2))*
exp(i*k*sqrt(x.^2+y.^2+0.1^2))/(2*pi*sqrt(x.^2+y.^2+0.1^2)^3)','x','y');
SS(m+1,n+1)====>>>给出定义
回复 #1 djh713 的帖子
你这里问题确实比较多,S_x=S_y=0.1;% matlab不能这样写,必须单独写出来;
R=sqrt(x.^2+y.^2+0.1^2);
f='0.1*(1-i*k*R)*exp(i*k*R)/(2*pi*R^3)';
这里含有符号变量、数值变量之间的转换问题,你最好还是看一下matlab的最基本的语法 谢谢了,有些问题我是没明白,MATLAB没怎么用过,很不熟,但急着得出结果 ,没办法,只好空降了。
我又改了一下,能运行,但速度很慢,不知这样编对吗,能否再指教,多谢了
z=0.1;
S_x=0.1;
S_y=0.1;
f=200;
c=340;
for l=0:8
for h=0:8
p(l+1,h+1)=0;
for m=0:8
for n=0:8
f=inline('0.1*(1-i*3.696*sqrt(x.^2+y.^2+0.1^2)).*(exp(i*3.696*sqrt(x.^2+y.^2+0.1^2))/(2*pi*sqrt(x.^2+y.^2+0.1^2).^3))','x','y');
g=dblquad(f,(l-m-0.5)*S_x,(l-m+0.5)*S_x,(h-n-0.5)*S_y,(h-n+0.5)*S_y)
end
end
p(l+1,h+1)=SS(m+1,n+1)*g+p(l+1,h+1);
end
end
这里的SS是指一个9×9的矩阵,其中第四行第五列为1,其余元素为0,我的程序的目的是求解下面这个方程。
[ 本帖最后由 djh713 于 2007-8-27 15:28 编辑 ] ...
[ 本帖最后由 djh713 于 2007-8-27 15:14 编辑 ] 结果对吗? 没有解析解,所以不知此程序编的对与否 终于搞通了,看来还得靠自己:victory:
页:
[1]