24小时热门版块排行榜    

查看: 4203  |  回复: 10

duguwuhao

新虫 (小有名气)

[求助] 求助matlab for循环中的赋值问题。 已有2人参与

dm=0.001*2*pi*c;
    w=-0.5*2*pi*c:dm:0.5*2*pi*c;
    Kx=zeros(size(w));
    Ay=zeros(size(w));
for m=1:length(w);
    syms ay kx ky;
    y=(0.0382*8*(pi^3)*(c^4)*sqrt(ainf-(wp.^2)./(w.^2)))./((wp^2).*w);
    axx=ainf*((1-(wp*(w+1i*y)*wp))./(w.*(((w+1i*y).^2)-((wc)^2))));   %无单位
    axy=ainf*(((wp^2)*wc*1i)./(w.*(((w+y*1i).^2)-((wc)^2))));   %无单位
    azz=ainf.*((1-(wp^2))./(w.*(w+1i*y)));   %无单位
    a1=real(axx);
    a2=imag(axx);
    a3=real(axy);
    a4=imag(axy);
    a5=real(azz);
    a6=imag(azz);
    f1=ay-sqrt((kx.^2)-((w./c).^2));
    f2=kx-((sqrt(((a4.*ay./2).^2))+(a1.*(w./c).^2)-((a1.*ay.*ky)./(tan(ky.*t))))-(a4.*ay./2));
    f3=ky-(sqrt((((w./c).^2).*(a1-((a4.^2)./a1)))-kx.^2));
    [kx,ay]=solve('f1','f2','f3');
    Kx(m)=kx;
    Ay(m)=Ay;
end


运行提示:在赋值 A( = B 中,A 和 B 中的元素数目必须相同。
出错行数:    Kx(m)=kx;
    Ay(m)=Ay;

跪求大神解惑。。。
回复此楼

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

duguwuhao

新虫 (小有名气)

那个笑脸不是我卖萌啊。。。。我也不知道怎么出现的。。。。。。
2楼2016-09-16 13:07:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

guokeqin

金虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
solve函数,不能计算点乘,建议你采用solve函数计算出来函数关系式,然后手动输入方程再操作

发自小木虫Android客户端
6楼2016-09-17 06:57:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

duguwuhao

新虫 (小有名气)

修改了一下,将w改成w(m),还是出错貌似,是我solve的问题。没有得出数值解

发自小木虫Android客户端
3楼2016-09-16 14:43:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

duguwuhao

新虫 (小有名气)

我检查了下,程序,貌似是slove语句的问题,单独拿出来,程序出现警报:警告: Cannot solve symbolically. Returning a numeric approximation instead. 跪求大神解决
4楼2016-09-16 15:38:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

FMStation

至尊木虫 (知名作家)

【答案】应助回帖

感谢参与,应助指数 +1
https://www.mathworks.com/help/symbolic/solve.html

Return Numeric Solutions
Try solving the following equation. The symbolic solver cannot find an exact symbolic solution for this equation,
and therefore issues a warning before calling the numeric solver. Because the equation is not polynomial, an
attempt to find all possible solutions can take a long time. The numeric solver does not try to find all numeric
solutions for this equation. Instead, it returns only the first solution it finds.
5楼2016-09-16 21:56:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

duguwuhao

新虫 (小有名气)

引用回帖:
6楼: Originally posted by guokeqin at 2016-09-17 06:57:58
solve函数,不能计算点乘,建议你采用solve函数计算出来函数关系式,然后手动输入方程再操作

我把点乘去掉显示:
在赋值 A( = B 中,A 和 B 中的元素数目必须相同。
我重新编了一下solve的公式:
kx=solve(tan(t*(((sqrt(((w(m)/c)^2)*(a1-((a4^2)/a1)))))-(kx^2)))==(a1*sqrt(((w(m)/c)^2)*(a1-((a4^2)/a1))-(kx^2))*sqrt((kx^2)-((w(m)/c)^2)))/((a1*((w(m)/c)^2))-(kx^2)-(a4*kx*sqrt((kx^2)-((w(m)/c)^2)))),kx);
但是在kx赋值到Kx的时候出现错误,另外,solve语句单独拿出来进行计算的时候会出现警告:
警告: Cannot solve symbolically. Returning a numeric approximation instead. 这个时候我能输出kx。很疑惑。
7楼2016-09-17 22:28:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

duguwuhao

新虫 (小有名气)

引用回帖:
5楼: Originally posted by FMStation at 2016-09-16 21:56:31
https://www.mathworks.com/help/symbolic/solve.html

Return Numeric Solutions
Try solving the following equation. The symbolic solver cannot find an exact symbolic solution for this equation,
and ...

大神,这个我了解了,所以尝试把solve语句修改了一下,单独计算kx=solve(tan(t*(((sqrt(((w/c)^2)*(a1-((a4^2)/a1)))))-(kx^2)))==(a1*sqrt(((w/c)^2)*(a1-((a4^2)/a1))-(kx^2))*sqrt((kx^2)-((w/c)^2)))/((a1*((w/c)^2))-(kx^2)-(a4*kx*sqrt((kx^2)-((w/c)^2)))),kx);时,现出现警告:
警告: Cannot solve symbolically. Returning a numeric approximation instead.
这个时候能输出kx的数值解,所以我就比较疑惑为什么有数值解还不能赋值成功。。。
8楼2016-09-17 22:31:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

duguwuhao

新虫 (小有名气)

我把方程组进行处理,整理成一个公式进行计算,代码如下:
clear;
clc;
a0=8.85*1e-12;    %c2/m2N
ainf=12.37;   %极限高频相对介电常数 无单位
%y=pi*1e11;   %衰减频率 hz
B=3;   %磁场强度 T或kg/As2
%T=185;   %温度 K
t=1.361*1e-6;  %厚度 m
e=1.6*1e-19;   %单位电荷量 C
me=9.11*1e-31;   %电子质量 kg
m=0.033*me;   %载流子质量 kg
N=8*1e23;
c=3e8;
%N=(5.76*1e20)*(T^1.5)*exp(-(0.13/((8.625*1e-5)*T)));   %载流子浓度 m-3  此处的0.0151为KB*T KB为玻尔兹曼常数8.625e-5 eV/K,所以0.0151单位为eV
wc=e*B/m;   %回旋频率 rad/s
wp=sqrt(N*(e^2)/(a0*m));   %等离子频率 rad/s
%w=0:pi*2*(2*(1e12))/1000:pi*2*2*(1e12);   %定义频率范围 rad/s
%w=1.21*2*pi*1e12;
dm=0.0001*2*pi*c;
    w=0.4*2*pi*c:dm:0.5*2*pi*c;
    Kx=zeros(size(w));
    Ay=zeros(size(w));
for m=1:length(w);
    syms kx;
    y=(0.0382*8*(pi^3)*(c^4)*sqrt(ainf-(wp.^2)./(w(m).^2)))./((wp^2).*w(m));
    axx=ainf*((1-(wp*(w(m)+1i*y)*wp))./(w(m).*(((w(m)+1i*y).^2)-((wc)^2))));   %无单位
    axy=ainf*(((wp^2)*wc*1i)./(w(m).*(((w(m)+y*1i).^2)-((wc)^2))));   %无单位
    azz=ainf.*((1-(wp^2))./(w(m).*(w(m)+1i*y)));   %无单位
    a1=real(axx);
    a2=imag(axx);
    a3=real(axy);
    a4=imag(axy);
    a5=real(azz);
    a6=imag(azz);
    kx=solve(tan(t*(((sqrt(((w(m)/c)^2)*(a1-((a4^2)/a1)))))-(kx^2)))==(a1*sqrt(((w(m)/c)^2)*(a1-((a4^2)/a1))-(kx^2))*sqrt((kx^2)-((w(m)/c)^2)))/((a1*((w(m)/c)^2))-(kx^2)-(a4*kx*sqrt((kx^2)-((w(m)/c)^2)))),kx);
    A=char(kx);
    Kx(m)=A;
end
显示:
在赋值 A( = B 中,A 和 B 中的元素数目必须相同。

出错 yanzheng (line 38)
    Kx(m)=A;
。。。。。
9楼2016-09-17 22:34:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

czcdxmc

木虫 (正式写手)

MEMS小学生

引用回帖:
4楼: Originally posted by duguwuhao at 2016-09-16 15:38:26
我检查了下,程序,貌似是slove语句的问题,单独拿出来,程序出现警报:警告: Cannot solve symbolically. Returning a numeric approximation instead. 跪求大神解决

警告已说明错误原因。

发自小木虫Android客户端
学海无涯,回头是岸。
10楼2016-09-18 08:17:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 duguwuhao 的主题更新
信息提示
请填处理意见