24小时热门版块排行榜    

查看: 1731  |  回复: 14

wkxj

新虫 (初入文坛)

[求助] matlab中将含有变量“w”的复杂多项式存入矩阵元素,无法生成矩阵。哪里出问题了?

clc;
tic;
epssys=1.0e-6;

syms w
%w=1000;
a =40e-3;                                             
aa1 = a* [1 0 0];                                       
aa2 = a* [0 1 0];
aa3 = a* [0 0 1];
ra11 = (2*pi)*cross(aa2,aa3)/dot(aa1,cross(aa2,aa3));      
ra22 = (2*pi)*cross(aa3,aa1)/dot(aa1,cross(aa2,aa3));
ra1 = ra11(1:2);
ra2 = ra22(1:2);
lml1=0.0001419e9;                                      %空气纵波的拉梅常数
lml2=290.24e9;                                         %钢纵波的拉梅常数
lmn1=0;                                                %空气中没有横波
lmn2=71e9;                                             %钢横波的拉梅常数
rou1=1.29;                                             %空气密度
rou2=7800;                                             %钢密度

a1=w*0.003;
a2=w*1.376e-004;
b2=w*3.315e-004;
                                                   
r=0.01;
bh2 = @(nu,z)besselj(nu,z)-1i*bessely(nu,z);
% tg=[];
%tg=num2str(ones(5, 5));
tg=ones(5, 5);
for n2=1:5
    for n3=1:5
        n=n2-3;
        n1=n3-3;
      
        A11=n*besselj(n,a1*r)/r-a1*besselj(n+1,a1*r);  
        B11=n*bh2(n,a1*r)/r-a1*bh2(n+1,a1*r);  
        C11=n*besselj(n,a2*r)/r-a2*besselj(n+1,a2*r);  
        C21=1i*n*besselj(n,b2*r);
        C31=1i*kz*(n*besselj(n,b2*r)/r-b2*besselj(n+1,b2*r))/kt2;  %kt2^2=ω^2*ρ2/μ2   

            A121=-kz^2*lml1*besselj(n,a1*r);      
            A122=(2*n*lml1*a1+2*lml1*a1)*besselj(n+1,a1*r)/r;
            A123=lml1*a1^2*besselj(n+2,a1*r);
        A12=A121-A122+A123;
            B121=-kz^2*lml1*bh2(n,a1*r);
            B122=(2*n*lml1*a1+2*lml1*a1)*bh2(n+1,a1*r)/r;
            B123=lml1*a1^2*bh2(n+2,a1*r);
        B12=B121-B122+B123;
            C121=(2*lmn2*n^2-2*lmn2*n-lml2*r^2*kz^2)*besselj(n,a2*r)/r^2;  %α2=a2
            C122=(4*lmn2*n+2*lmn2+2*n*lml2+2*lml2)*a2*besselj(n+1,a2*r)/r;
            C123=(2*lmn2*a2^2+lml2*a2^2)*besselj(n+2,a2*r);
        C12=C121-C122+C123;
            C221=(2*lmn2*1i*n^2-2*lmn2*1i*n)*besselj(n,b2*r)/(kt2*r^2);      %β2=b2
            C222=2*lmn2*1i*n*b2*besselj(n+1,b2*r)/(kt2*r);
        C22=C221-C222;
            C321=(2*lmn2*1i*kz*(n^2-n))*besselj(n,b2*r)/(kt2*r^2);
            C322=(2*lmn2*1i*kz*(2*n+1))*b2*besselj(n+1,b2*r)/(kt2*r);
            C323=2*lmn2*1i*kz*b2^2*besselj(n+2,b2*r)/kt2;
        C32=C321-C322+C323;

            C131=2*lmn2*(1i*n^2+n^2)*besselj(n,a2*r)/r^2;
            C132=2*lmn2*1i*n*a2*besselj(n+1,a2*r)/r;
        C13=C131-C132;
            C231=lmn2*(2*n-2*n^2)*besselj(n,b2*r)/r^2;
            C232=lmn2*2*n*b2*besselj(n+1,b2*r)/r;
            C233=lmn2*b2^2*besselj(n+2,b2*r);
        C23=C231+C232+C233;
            C331=lmn2*(2*n*kz-2*n^2*kz)*besselj(n,b2*r)/(kt2*r^2);
            C332=lmn2*2*n*kz*b2*besselj(n+1,b2*r)/(kt2*r);
        C33=C331+C332;

            C141=lmn2*2*1i*kz*n*besselj(n,a2*r)/r;
            C142=lmn2*2*1i*kz*a2*besselj(n+1,a2*r);
        C14=C141+C142;
        C24=-n*kz*lmn2*besselj(n,b2*r)/r;
            C341=b2^2*lmn2*n*besselj(n,b2*r)/(kt2*r);
            C342=b2^3*lmn2*besselj(n+1,b2*r)/kt2;
        C34=C341-C342;

        F1=C12*C23*C34;
        F2=C22*C33*C14;
        F3=C32*C13*C24;
        F4=C32*C23*C14;
        F5=C22*C13*C34;
        F6=C12*C24*C33;
        F7=C11*C23*C34;
        F8=C11*C33*C24;
        F9=C21*C33*C14;
        F10=C21*C13*C34;
        F11=C31*C13*C24;
        F12=C31*C23*C14;
        Tn1=A11*(F1+F2+F3-F4-F5-F6);
        Tn2=B12*(F7-F8+F9-F10+F11-F12);
        Tn=(Tn1/Tn2);

        tg_1=Tn;
        tg(n2,n3)=str2double(vpa(tg_1));     
    end;
end;
tg
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

信彼南山

木虫 (著名写手)

bessel函数应该都是调用的besselmx(这个好像是一个c编译成的mex)
可能是mex不支持符号运算吧。

程序太长了
2楼2015-04-29 22:48:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wkxj

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by 信彼南山 at 2015-04-29 22:48:31
bessel函数应该都是调用的besselmx(这个好像是一个c编译成的mex)
可能是mex不支持符号运算吧。

程序太长了

其实就是中间代换的几个比较繁琐,但是没有多大的意义,可以忽略。最后得到的矩阵行列式det=0,要解出变量w的。现在矩阵一直出不来,不知道为什么。
3楼2015-04-30 10:15:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wkxj

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by 信彼南山 at 2015-04-29 22:48:31
bessel函数应该都是调用的besselmx(这个好像是一个c编译成的mex)
可能是mex不支持符号运算吧。

程序太长了

clc;
tic;
epssys=1.0e-6;

syms w
kl1=w*0.003;
kl2=w*1.376e-004;
kt2=w*3.315e-004;
kz=0;                                         
a1 = sqrt(kl1^2-kz^2);                              
a2 = sqrt(kl2^2-kz^2);                              
b2 = sqrt(kt2^2-kz^2);                                                                                 
r=0.01;
bh2 = @(nu,z)besselj(nu,z)-1i*bessely(nu,z);

tg=zeros(5,5);
for n2=1:5
    for n3=1:5
        n=n2-3;
        n1=n3-3;
      
        A11=n*besselj(n,a1*r)/r-a1*besselj(n+1,a1*r);  
        B11=n*bh2(n,a1*r)/r-a1*bh2(n+1,a1*r);   
        C11=n*besselj(n,a2*r)/r-a2*besselj(n+1,a2*r);   
        C21=1i*n*besselj(n,b2*r);
      
            A121=0;
            A122=(2*n*lml1*a1+2*lml1*a1)*besselj(n+1,a1*r)/r;
            A123=lml1*a1^2*besselj(n+2,a1*r);
        A12=A121-A122+A123;
            B121=0;
            B122=(2*n*lml1*a1+2*lml1*a1)*bh2(n+1,a1*r)/r;
            B123=lml1*a1^2*bh2(n+2,a1*r);
        B12=B121-B122+B123;
            C121=(2*lmn2*n^2-2*lmn2*n)*besselj(n,a2*r)/r^2;
            C122=(4*lmn2*n+2*lmn2+2*n*lml2+2*lml2)*a2*besselj(n+1,a2*r)/r;
            C123=(2*lmn2*a2^2+lml2*a2^2)*besselj(n+2,a2*r);
        C12=C121-C122+C123;
            C221=(2*lmn2*1i*n^2-2*lmn2*1i*n)*besselj(n,b2*r)/(kt2*r^2);      
            C222=2*lmn2*1i*n*b2*besselj(n+1,b2*r)/(kt2*r);
        C22=C221-C222;
            C131=2*lmn2*(1i*n^2+n^2)*besselj(n,a2*r)/r^2;
            C132=2*lmn2*1i*n*a2*besselj(n+1,a2*r)/r;
        C13=C131-C132;
            C231=lmn2*(2*n-2*n^2)*besselj(n,b2*r)/r^2;
            C232=lmn2*2*n*b2*besselj(n+1,b2*r)/r;
            C233=lmn2*b2^2*besselj(n+2,b2*r);
        C23=C231+C232+C233;
            C341=b2^2*lmn2*n*besselj(n,b2*r)/(kt2*r);
            C342=b2^3*lmn2*besselj(n+1,b2*r)/kt2;
        C34=C341-C342;
        F1=C12*C23*C34;
        F5=C22*C13*C34;
        F7=C11*C23*C34;
        F10=C21*C13*C34;
        Tn1=A11*(F1-F5)-A12*(F7-F10);
        Tn2=B12*(F7-F10)-B11*(F1-F5);
        Tn=vpa(Tn1/Tn2);
        tg_1=Tn;
        tg(n2,n3)=str2double(vpa(tg_1));     
     
    end;
end;
tg
4楼2015-04-30 11:05:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

信彼南山

木虫 (著名写手)

问题就在于你的程序太长了,至少要找到问题出在哪么
可以考虑把无关的语句删掉,找到出问题的那句
5楼2015-04-30 20:11:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wkxj

新虫 (初入文坛)

引用回帖:
5楼: Originally posted by 信彼南山 at 2015-04-30 20:11:31
问题就在于你的程序太长了,至少要找到问题出在哪么
可以考虑把无关的语句删掉,找到出问题的那句

我已经整理了,该怎么联系你
6楼2015-04-30 21:13:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wkxj

新虫 (初入文坛)

引用回帖:
5楼: Originally posted by 信彼南山 at 2015-04-30 20:11:31
问题就在于你的程序太长了,至少要找到问题出在哪么
可以考虑把无关的语句删掉,找到出问题的那句

clc;
tic;
epssys=1.0e-6;

syms w
a1=w*0.003;
a2=w*1.376e-004;
kt2=w*3.315e-004;
b2 = kt2;                                                                                 
r=0.01;
bh2 = @(nu,z)besselj(nu,z)-1i*bessely(nu,z);

tg=zeros(5,5);
for n2=1:5
    for n3=1:5
        n=n2-3;
        n1=n3-3;
      
        A11=n*besselj(n,a1*r)/r-a1*besselj(n+1,a1*r);  
        tg_1=A11;
        tg(n2,n3)=str2double(vpa(tg_1));     
        
      
    end;
end;
tg
7楼2015-04-30 21:16:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

信彼南山

木虫 (著名写手)

刚看了一下
你那句str2double(vpa(tg_1))
str2double的操作要做什么没看明白

符号变量转化为数字??那结果似乎一定是NAN吧?
8楼2015-04-30 23:26:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wkxj

新虫 (初入文坛)

引用回帖:
8楼: Originally posted by 信彼南山 at 2015-04-30 23:26:38
刚看了一下
你那句str2double(vpa(tg_1))
str2double的操作要做什么没看明白

符号变量转化为数字??那结果似乎一定是NAN吧?

w是一个未知数,我要生成一个矩阵tg,然后det=0求解出w的值。

[ 发自小木虫客户端 ]
9楼2015-05-01 00:12:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

信彼南山

木虫 (著名写手)

[/code]
tg_1=A11;
tg(n2,n3)=str2double(vpa(tg_1));     
[/code]
这两句改一下
CODE:
tg(n2,n3) = A11;

这样应该就能创建那个5x5的矩阵了。

不过对这个5x5的矩阵求det的话估计希望不大。

个人觉得应该考虑修改算法。
10楼2015-05-01 19:45:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 wkxj 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[硕博家园] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +3 23jxep3nCNZb 2026-09-14 3/150 2026-09-15 01:21 by mibUvS8DDCwf
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 6F5UbRU2I5hL 2026-09-14 3/150 2026-09-15 00:21 by mibUvS8DDCwf
[教师之家] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +3 6F5UbRU2I5hL 2026-09-14 3/150 2026-09-15 00:12 by vZfe6xYu34yj
[硕博家园] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 s3fFTmArrBt6 2026-09-14 3/150 2026-09-14 23:45 by vZfe6xYu34yj
[教师之家] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 s3fFTmArrBt6 2026-09-13 3/150 2026-09-14 23:21 by vZfe6xYu34yj
[教师之家] 售SCI一区文章,我:8.O.55.1.O.54,科目齐全,可伽急 +3 s3fFTmArrBt6 2026-09-13 3/150 2026-09-14 23:09 by vZfe6xYu34yj
[硕博家园] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 s3fFTmArrBt6 2026-09-13 5/250 2026-09-14 22:45 by vZfe6xYu34yj
[硕博家园] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 LwdutQ8HoqWP 2026-09-13 3/150 2026-09-14 22:24 by vZfe6xYu34yj
[教师之家] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +5 3n8v2C8RimXI 2026-09-13 5/250 2026-09-14 22:01 by vZfe6xYu34yj
[博后之家] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +4 QUjhNVAcOSff 2026-09-13 4/200 2026-09-14 21:37 by vZfe6xYu34yj
[考研] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +4 QUjhNVAcOSff 2026-09-13 5/250 2026-09-14 21:33 by vZfe6xYu34yj
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 QUjhNVAcOSff 2026-09-13 5/250 2026-09-14 21:25 by vZfe6xYu34yj
[博后之家] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +4 QUjhNVAcOSff 2026-09-13 5/250 2026-09-14 21:24 by vZfe6xYu34yj
[公派出国] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 QUjhNVAcOSff 2026-09-13 7/350 2026-09-14 21:21 by vZfe6xYu34yj
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 s3fFTmArrBt6 2026-09-14 4/200 2026-09-14 17:48 by Aj1rhIDL5ixY
[硕博家园] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +3 QUjhNVAcOSff 2026-09-13 3/150 2026-09-14 15:09 by Aj1rhIDL5ixY
[考研] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +3 QUjhNVAcOSff 2026-09-13 3/150 2026-09-14 14:57 by Aj1rhIDL5ixY
[找工作] 浙江师范大学是怎么坑我的 +6 recruit123 2026-09-09 6/300 2026-09-14 12:00 by 萨仁其其格
[考博] 西北工业大学材料学院电化学传感与催化课题组招收2027年推免研究生、博士生、博士后 +3 马方园 2026-09-10 4/200 2026-09-14 09:29 by Chem张zz
[教师之家] 浙江师范大学是怎么坑我的 +10 recruit123 2026-09-09 15/750 2026-09-13 10:45 by seaskyy
信息提示
请填处理意见