江山美人 发表于 2014-6-9 15:10

请问下面这个问题怎么调整

本帖最后由 chybeyond 于 2014-6-9 15:46 编辑

我想求一个总矩阵,每个元素又是子矩阵,请大虾帮我看看,主程序如下,三个小调用程序已经上传。总是出现这个错误,谢谢!
??? Conversion to double from sym is not possible
clc;
syms xi xo x y i j ii jj iii jjj M N r h l
M=2;
N=2;
mu=0.3;
L=2;   
R=1;      
Ri=0.2;   
H=0.1;      
t=2*mu/(1-2*mu);%lamta/G

%%%%无量纲值计算公式
r=Ri/R;
h=H/R;
l=R/L;
xi=l*sqrt((1-h/2)^2-y^2);
xo=l*sqrt((1+h/2)^2-y^2);

%%%%调用各个函数
T1=T_1(n);
T2=T_2(n);
f10=f_10(x,y,i,j,ii,jj,iii,jjj,L,R,Ri,H,M,N,xi,xo,r,h,l);

%%%%质量子矩阵
MM=zeros(3);
m11=zeros((M+1)*(N+1));
m22=m11;
m33=m11;

%%%%求解质量子矩阵内的各个元素
foriii=1:(M+1)*(N+1)
    forjjj=1:(M+1)*(N+1)

          jj=mod(jjj,N+1)-1;   %求余数
       ifjj==-1
         jj=N;
       end

          j=mod(iii,N+1)-1;
       ifj==-1
         j=N;
       end

          ii=mod(jjj-jj,N)-1;
       ifii==-1
         ii=M;
       end

          i=mod(iii-j,N)-1;
       ifi==-1
         i=M;
       end
T1=subs(T1);
T2=subs(T2);
f10=subs(f10);
m11(iii,jjj)=T1*f10;
m22(iii,jjj)=T1*f10;
m33(iii,jjj)=T2*f10;

    end
end

%%形成总质量矩阵
MM=


chybeyond 发表于 2014-6-9 16:20

T1=T_1(n);n是多少

江山美人 发表于 2014-6-9 16:24

不好意思,我的主程序里面忘了加上n=2;少了个赋值

chybeyond 发表于 2014-6-9 16:41

江山美人 发表于 2014-6-9 16:24
不好意思,我的主程序里面忘了加上n=2;少了个赋值

我这边能运行,m11,m22,m33的值都为0.1171(9行9列)

江山美人 发表于 2014-6-9 16:44

哦 真的呀 那是不是因为版本的问题,但是m11 m22 m33 分别是子矩阵 那你看看你的结果文件里面 m11 m22 m33 是不是三个矩阵

江山美人 发表于 2014-6-9 16:48

chybeyond 发表于 2014-6-9 16:20
T1=T_1(n);n是多少

可能是因为版本的问题,但是m11 m22 m33 分别是子矩阵 那你看看你的结果文件里面 m11 m22 m33 是不是三个矩阵

chybeyond 发表于 2014-6-9 16:51

江山美人 发表于 2014-6-9 16:44
哦 真的呀 那是不是因为版本的问题,但是m11 m22 m33 分别是子矩阵 那你看看你的结果文件里面 m11 m22 m33...

m11和m22,m33都是9×9的矩阵,并且矩阵里边的元素都是0.1171,可以运行,但结果是不是你想要的,这个就不清楚了

江山美人 发表于 2014-6-9 16:52

chybeyond 发表于 2014-6-9 16:51
m11和m22,m33都是9×9的矩阵,并且矩阵里边的元素都是0.1171,可以运行,但结果是不是你想要的,这个就不 ...

那每个元素都一样 肯定不对

江山美人 发表于 2014-6-9 16:55

chybeyond 发表于 2014-6-9 16:51
m11和m22,m33都是9×9的矩阵,并且矩阵里边的元素都是0.1171,可以运行,但结果是不是你想要的,这个就不 ...

我的subs 带入是不是有问题 ,可能只得到了某一次循环的值,才导致元素值都一样

chybeyond 发表于 2014-6-9 17:06

本帖最后由 chybeyond 于 2014-6-9 17:18 编辑

T1和T2的值相等,那就是求f10时候出错了。f10=subs(f10);第一次循环后f10=0.1171,为数值型,所以以后每次循环都执行f10=subs(0.1171)

f10 =

    0.1171



江山美人 发表于 2014-6-9 17:49

chybeyond 发表于 2014-6-9 17:06
T1和T2的值相等,那就是求f10时候出错了。f10=subs(f10);第一次循环后f10=0.1171,为数值型,所以以后每次 ...

那怎么修改啊,在循环中,应该每循环一次,就调用一次吧,

chybeyond 发表于 2014-6-9 18:42

江山美人 发表于 2014-6-9 17:49
那怎么修改啊,在循环中,应该每循环一次,就调用一次吧,

把f10=f_10(x,y,i,j,ii,jj,iii,jjj,L,R,Ri,H,M,N,xi,xo,r,h,l);写入循环中

江山美人 发表于 2014-6-9 20:25

chybeyond 发表于 2014-6-9 18:42
把f10=f_10(x,y,i,j,ii,jj,iii,jjj,L,R,Ri,H,M,N,xi,xo,r,h,l);写入循环中

您试过这样吗,我这边还是不行

chybeyond 发表于 2014-6-9 22:24

本帖最后由 chybeyond 于 2014-6-9 22:42 编辑

clc;clear all
syms xi xo x y
M=2;
N=2;
n=2;
mu=0.3;
L=2;   
R=1;      
Ri=0.2;   
H=0.1;      
t=2*mu/(1-2*mu);%lamta/G
%% 无量纲值计算公式
r=Ri/R;
h=H/R;
l=R/L;
xi=@(x) l*sqrt((1-h/2)^2-x.^2);
xo=@(x) l*sqrt((1+h/2)^2-x.^2);
%% n=2时T1和T2均为pi
T1 = pi;
T2 = pi;
%% 质量矩阵
MM=zeros(3);
m11=zeros((M+1)*(N+1));
m22=m11;
m33=m11;
%% 求解质量子矩阵内的各个元素
foriii=1:(M+1)*(N+1)
    forjjj=1:(M+1)*(N+1)
       jj=mod(jjj,N+1)-1;    %求余数
       ifjj==-1
         jj=N;
       end
       j=mod(iii,N+1)-1;
       ifj==-1
         j=N;
       end
      ii=mod(jjj-jj,N)-1;
       ifii==-1
         ii=M;
       end

          i=mod(iii-j,N)-1;
       ifi==-1
         i=M;
       end
      
<font color="#ff0000">z1 = quad2d(@(x, y) x.^(i+ii+1).*y.^(j+jj),r, 1+h/2,-1, xo);%int无解所以采用了数值积分
z2 = quad2d(@(x, y) x.^(i+ii+1).*y.^(j+jj), r, 1-h/2 ,-1, xi);</font>
z=z1-z2;
z=vpa(z,6)
m11(iii,jjj)=T1*z;
m22(iii,jjj)=T1*z;
m33(iii,jjj)=T2*z;
end
end
%%形成总质量矩阵
MM=
结果m11 =m22=m33

    0.4682   -0.1193    0.1171    0.4201   -0.1377    0.1103    0.4682   -0.1193    0.1171
   -0.1193    0.1171   -0.0740   -0.1377    0.1103   -0.0771   -0.1193    0.1171   -0.0740
    0.1171   -0.0740    0.0646    0.1103   -0.0771    0.0636    0.1171   -0.0740    0.0646
    0.4201   -0.1377    0.1103    0.4016   -0.1451    0.1087    0.4201   -0.1377    0.1103
   -0.1377    0.1103   -0.0771   -0.1451    0.1087   -0.0784   -0.1377    0.1103   -0.0771
    0.1103   -0.0771    0.0636    0.1087   -0.0784    0.0636    0.1103   -0.0771    0.0636
    0.4682   -0.1193    0.1171    0.4201   -0.1377    0.1103    0.4682   -0.1193    0.1171
   -0.1193    0.1171   -0.0740   -0.1377    0.1103   -0.0771   -0.1193    0.1171   -0.0740
    0.1171   -0.0740    0.0646    0.1103   -0.0771    0.0636    0.1171   -0.0740    0.0646


页: [1]
查看完整版本: 请问下面这个问题怎么调整