djh713 发表于 2007-8-25 16:09

一段求定积分的程序,总是有错,请指教

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多,就一个积分咋就这么难

donkeyxu 发表于 2007-8-25 19:06

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)====>>>给出定义

无水1324 发表于 2007-8-26 09:45

回复 #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的最基本的语法

djh713 发表于 2007-8-27 15:04

谢谢了,有些问题我是没明白,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:13

...

[ 本帖最后由 djh713 于 2007-8-27 15:14 编辑 ]

donkeyxu 发表于 2007-8-27 19:07

结果对吗?

djh713 发表于 2007-8-28 09:22

没有解析解,所以不知此程序编的对与否

djh713 发表于 2007-9-5 10:55

终于搞通了,看来还得靠自己:victory:
页: [1]
查看完整版本: 一段求定积分的程序,总是有错,请指教