声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1882|回复: 13

[编程技巧] 请问下面这个问题怎么调整

[复制链接]
发表于 2014-6-9 15:10 | 显示全部楼层 |阅读模式

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

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

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

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

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

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

  21. %%%%质量子矩阵
  22. MM=zeros(3);
  23. m11=zeros((M+1)*(N+1));
  24. m22=m11;
  25. m33=m11;

  26. %%%%求解质量子矩阵内的各个元素
  27. for  iii=1:(M+1)*(N+1)
  28.     for  jjj=1:(M+1)*(N+1)

  29.           jj=mod(jjj,N+1)-1;     %求余数
  30.        if  jj==-1
  31.            jj=N;
  32.        end

  33.           j=mod(iii,N+1)-1;
  34.        if  j==-1
  35.            j=N;
  36.        end

  37.           ii=mod(jjj-jj,N)-1;
  38.        if  ii==-1
  39.            ii=M;
  40.        end

  41.           i=mod(iii-j,N)-1;
  42.        if  i==-1
  43.            i=M;
  44.        end
  45. T1=subs(T1);
  46. T2=subs(T2);
  47. f10=subs(f10);
  48. m11(iii,jjj)=T1*f10;
  49. m22(iii,jjj)=T1*f10;
  50. m33(iii,jjj)=T2*f10;

  51.     end
  52. end

  53. %%形成总质量矩阵
  54. MM=[m11 0 0;0 m22 0;0 0 m33]
复制代码


f_10.txt

203 Bytes, 下载次数: 3

T_1.txt

65 Bytes, 下载次数: 2

T_2.txt

62 Bytes, 下载次数: 2

回复
分享到:

使用道具 举报

发表于 2014-6-9 16:20 | 显示全部楼层
T1=T_1(n);n是多少
 楼主| 发表于 2014-6-9 16:24 | 显示全部楼层
不好意思,我的主程序里面忘了加上n=2;少了个赋值
发表于 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 | 显示全部楼层

可能是因为版本的问题,但是m11 m22 m33 分别是子矩阵 那你看看你的结果文件里面 m11 m22 m33 是不是三个矩阵
发表于 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 带入是不是有问题 ,可能只得到了某一次循环的值,才导致元素值都一样
发表于 2014-6-9 17:06 | 显示全部楼层
本帖最后由 chybeyond 于 2014-6-9 17:18 编辑

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

  2. f10 =

  3.     0.1171
复制代码




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

那怎么修改啊,在循环中,应该每循环一次,就调用一次吧,
发表于 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);写入循环中

您试过这样吗,我这边还是不行
发表于 2014-6-9 22:24 | 显示全部楼层
本帖最后由 chybeyond 于 2014-6-9 22:42 编辑
  1. clc;clear all
  2. syms xi xo x y
  3. M=2;
  4. N=2;
  5. n=2;
  6. mu=0.3;  
  7. L=2;     
  8. R=1;      
  9. Ri=0.2;     
  10. H=0.1;        
  11. t=2*mu/(1-2*mu);  %lamta/G
  12. %% 无量纲值计算公式
  13. r=Ri/R;
  14. h=H/R;
  15. l=R/L;
  16. xi=@(x) l*sqrt((1-h/2)^2-x.^2);
  17. xo=@(x) l*sqrt((1+h/2)^2-x.^2);
  18. %% n=2时T1和T2均为pi
  19. T1 = pi;
  20. T2 = pi;
  21. %% 质量矩阵
  22. MM=zeros(3);
  23. m11=zeros((M+1)*(N+1));
  24. m22=m11;
  25. m33=m11;
  26. %% 求解质量子矩阵内的各个元素
  27. for  iii=1:(M+1)*(N+1)
  28.     for  jjj=1:(M+1)*(N+1)
  29.        jj=mod(jjj,N+1)-1;    %求余数
  30.        if  jj==-1
  31.            jj=N;
  32.        end
  33.        j=mod(iii,N+1)-1;
  34.        if  j==-1
  35.            j=N;
  36.        end
  37.         ii=mod(jjj-jj,N)-1;
  38.        if  ii==-1
  39.            ii=M;
  40.        end

  41.           i=mod(iii-j,N)-1;
  42.        if  i==-1
  43.            i=M;
  44.        end
  45.       
  46. <font color="#ff0000">z1 = quad2d(@(x, y) x.^(i+ii+1).*y.^(j+jj),r, 1+h/2,-1, xo);%int无解所以采用了数值积分
  47. z2 = quad2d(@(x, y) x.^(i+ii+1).*y.^(j+jj), r, 1-h/2 ,-1, xi);</font>
  48. z=z1-z2;
  49. z=vpa(z,6)
  50. m11(iii,jjj)=T1*z;
  51. m22(iii,jjj)=T1*z;
  52. m33(iii,jjj)=T2*z;
  53. end
  54. end
  55. %%形成总质量矩阵
  56. MM=[m11 ;m22 ; m33]
复制代码
结果
  1. m11 =m22=m33

  2.     0.4682   -0.1193    0.1171    0.4201   -0.1377    0.1103    0.4682   -0.1193    0.1171
  3.    -0.1193    0.1171   -0.0740   -0.1377    0.1103   -0.0771   -0.1193    0.1171   -0.0740
  4.     0.1171   -0.0740    0.0646    0.1103   -0.0771    0.0636    0.1171   -0.0740    0.0646
  5.     0.4201   -0.1377    0.1103    0.4016   -0.1451    0.1087    0.4201   -0.1377    0.1103
  6.    -0.1377    0.1103   -0.0771   -0.1451    0.1087   -0.0784   -0.1377    0.1103   -0.0771
  7.     0.1103   -0.0771    0.0636    0.1087   -0.0784    0.0636    0.1103   -0.0771    0.0636
  8.     0.4682   -0.1193    0.1171    0.4201   -0.1377    0.1103    0.4682   -0.1193    0.1171
  9.    -0.1193    0.1171   -0.0740   -0.1377    0.1103   -0.0771   -0.1193    0.1171   -0.0740
  10.     0.1171   -0.0740    0.0646    0.1103   -0.0771    0.0636    0.1171   -0.0740    0.0646
复制代码



您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

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

GMT+8, 2024-9-23 20:16 , Processed in 0.065804 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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