请问下面这个问题怎么调整
本帖最后由 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=
T1=T_1(n);n是多少 不好意思,我的主程序里面忘了加上n=2;少了个赋值 江山美人 发表于 2014-6-9 16:24
不好意思,我的主程序里面忘了加上n=2;少了个赋值
我这边能运行,m11,m22,m33的值都为0.1171(9行9列) 哦 真的呀 那是不是因为版本的问题,但是m11 m22 m33 分别是子矩阵 那你看看你的结果文件里面 m11 m22 m33 是不是三个矩阵
chybeyond 发表于 2014-6-9 16:20
T1=T_1(n);n是多少
可能是因为版本的问题,但是m11 m22 m33 分别是子矩阵 那你看看你的结果文件里面 m11 m22 m33 是不是三个矩阵 江山美人 发表于 2014-6-9 16:44
哦 真的呀 那是不是因为版本的问题,但是m11 m22 m33 分别是子矩阵 那你看看你的结果文件里面 m11 m22 m33...
m11和m22,m33都是9×9的矩阵,并且矩阵里边的元素都是0.1171,可以运行,但结果是不是你想要的,这个就不清楚了 chybeyond 发表于 2014-6-9 16:51
m11和m22,m33都是9×9的矩阵,并且矩阵里边的元素都是0.1171,可以运行,但结果是不是你想要的,这个就不 ...
那每个元素都一样 肯定不对 chybeyond 发表于 2014-6-9 16:51
m11和m22,m33都是9×9的矩阵,并且矩阵里边的元素都是0.1171,可以运行,但结果是不是你想要的,这个就不 ...
我的subs 带入是不是有问题 ,可能只得到了某一次循环的值,才导致元素值都一样 本帖最后由 chybeyond 于 2014-6-9 17:18 编辑
T1和T2的值相等,那就是求f10时候出错了。f10=subs(f10);第一次循环后f10=0.1171,为数值型,所以以后每次循环都执行f10=subs(0.1171)
f10 =
0.1171
chybeyond 发表于 2014-6-9 17:06
T1和T2的值相等,那就是求f10时候出错了。f10=subs(f10);第一次循环后f10=0.1171,为数值型,所以以后每次 ...
那怎么修改啊,在循环中,应该每循环一次,就调用一次吧, 江山美人 发表于 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);写入循环中 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: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]