24小时热门版块排行榜    

查看: 456  |  回复: 7

Abla

新虫 (初入文坛)

[求助] 求帮我看看这个程序哪里出了问题啊为什么输出的都是1这条直线

nh = 2.22
nl = 1.41
c = 3*10^8
dh = (692*10^-9)/(4*nh)
dl = (692*10^-9)/(4*nl)
ps = Cos[Pi/6]
a = Sqrt[1 - (1/(2*2.22))^2]
b = Sqrt[1 - (1/(2*1.41))^2]
p1 = a/2.22
p2 = b/1.41
k1[w_] = w/(3*10^8)*2.22*a
k2[w_] = w/(3*10^8)*1.41*b
MatrixForm[n1[w_] = {{Cos[k1[w]*dh], I*1/p1*Sin[k1[w]*dh]}, {I*p1*Sin[k1[w]*dh], Cos[k1[w]*dh]}}]
MatrixForm[n2[w_] = {{Cos[k2[w]*dl], I*1/p2*Sin[k2[w]*dl]}, {I*p2*Sin[k2[w]*dl], Cos[k2[w]*dl]}}]
n[w_] = n1[w].n2[w].n1[w].n2[w].n1[w].n2[w].n1[w].n2[w].n1[w].n2[ w].n1[w];
x11[w_] = Part[n[w], 1, 1];
x12[w_] = Part[n[w], 1, 2];
x21[w_] = Part[n[w], 2, 1];
x22[w_] = Part[n[w], 2, 2];
t[w_] = (2*Sqrt[3]/2)/(Sqrt[3]/2*x22[w] + Sqrt[3]/2*x11[w] - 3/4*x12[w] - x2[w]);
t1[w_] = Re[t[w]]
t2[w_] = Im[t[w]]
st[w_] = Sqrt[t1[w]^2 + t2[w]^2];

T[w_] = st[w]^2;
Plot[T[w], {w, 0, 2}, AxesOrigin -> {0, 0}]
这个程序哪里有错误也请多多指正啊,本人初学者表示很弱

[ Last edited by Abla on 2013-1-9 at 14:08 ]
回复此楼

» 猜你喜欢

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

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

Abla

新虫 (初入文坛)

怎么都没有人回复啊
2楼2013-01-09 14:20:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mshwangg

至尊木虫 (正式写手)

【答案】应助回帖

★ ★ ★
感谢参与,应助指数 +1
jjdg: 金币+1, 感谢参与 2013-01-10 10:38:19
Abla: 金币+2 2013-01-10 14:29:57
从现在的程序上看,这一句
t[w_] = (2*Sqrt[3]/2)/(Sqrt[3]/2*x22[w] + Sqrt[3]/2*x11[w] - 3/4*x12[w] - x2[w]);
中存在未定义的x2,会导致画不出图,检查一下是否有错误。
将x2改成x21或者x22之后,plot可以画图是一条直线。此时说明程序语法上没有问题,为什么是一条直线需要你从程序逻辑上和众多参数和函数定义上考虑是否有问题。
这样的问题非本领域的人几乎无法帮你了,因为涉及到专业的知识未必都知道。
3楼2013-01-10 06:34:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

walk1997

金虫 (著名写手)

★ ★
jjdg: 金币+2, 辛苦了 2013-01-10 10:38:44
这个程序里面 你仔细看下 你的输入
n1[w]  n2[w]  n[w] 在小w情况下 差不多就是个单位矩阵 你最后算出来的自然差不多是个直线
把画的范围改下就好 不过 估计你输入的参数可能有点问题
---------------------------------------------------------------------------
Clear["Global`*"]
nh = 2.22
nl = 1.41
c = 3*10^8
dh = (692*10^-9)/(4*nh)
dl = (692*10^-9)/(4*nl)
ps = Cos[Pi/6]
a = Sqrt[1 - (1/(2*2.22))^2]
b = Sqrt[1 - (1/(2*1.41))^2]
p1 = a/2.22
p2 = b/1.41
k1[w_] := w/(3*10^8)*2.22*a
k2[w_] := w/(3*10^8)*1.41*b
n1[w_] := {{Cos[k1[w]*dh], I*1/p1*Sin[k1[w]*dh]}, {I*p1*Sin[k1[w]*dh],
    Cos[k1[w]*dh]}}
n2[w_] := {{Cos[k2[w]*dl], I*1/p2*Sin[k2[w]*dl]}, {I*p2*Sin[k2[w]*dl],
    Cos[k2[w]*dl]}}
n[w_] := n1[w].n2[w].n1[w].n2[w].n1[w].n2[w].n1[w].n2[w].n1[w].n2[
    w].n1[w];
x11[w_] := Part[n[w], 1, 1];
x12[w_] := Part[n[w], 1, 2];
x21[w_] := Part[n[w], 2, 1];
x22[w_] := Part[n[w], 2, 2];
t[w_] := (2*Sqrt[3]/2)/(Sqrt[3]/2*x22[w] + Sqrt[3]/2*x11[w] -
     3/4*x12[w] - x21[w]);
t1[w_] := Re[t[w]]
t2[w_] := Im[t[w]]
st[w_] := Sqrt[t1[w]^2 + t2[w]^2];
T[w_] := st[w]^2;
Plot[T[w], {w, 1*10^16, 1*10^16 + 10^15}]
-----------------------------------------------------------------------------
4楼2013-01-10 09:22:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

walk1997

金虫 (著名写手)

对了  上面把你的x2[w] 随便改成了 x21[w]  这个具体是哪个矩阵元 需要你自己改下
5楼2013-01-10 09:23:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Abla

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by mshwangg at 2013-01-10 06:34:00
从现在的程序上看,这一句
t = (2*Sqrt/2)/(Sqrt/2*x22 + Sqrt/2*x11 - 3/4*x12 - x2);
中存在未定义的x2,会导致画不出图,检查一下是否有错误。
将x2改成x21或者x22之后,plot可以画图是一条直线。此时说明程序 ...

嗯这个我是贴上去没检查,那个是x22,我少写了个2.
6楼2013-01-10 09:33:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Abla

新虫 (初入文坛)

引用回帖:
4楼: Originally posted by walk1997 at 2013-01-10 09:22:51
这个程序里面 你仔细看下 你的输入
n1  n2  n 在小w情况下 差不多就是个单位矩阵 你最后算出来的自然差不多是个直线
把画的范围改下就好 不过 估计你输入的参数可能有点问题
-------------------------------- ...

谢谢,可是好像参数改了很大还是一条直线。那个确实是x21我打漏掉了
7楼2013-01-10 09:39:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Abla

新虫 (初入文坛)

引用回帖:
4楼: Originally posted by walk1997 at 2013-01-10 09:22:51
这个程序里面 你仔细看下 你的输入
n1  n2  n 在小w情况下 差不多就是个单位矩阵 你最后算出来的自然差不多是个直线
把画的范围改下就好 不过 估计你输入的参数可能有点问题
-------------------------------- ...

我把参数调大了好几个数量级输出来了,怎么木有办法给你赏钱哦O(∩_∩)O哈哈哈~
8楼2013-01-10 09:44:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 Abla 的主题更新
信息提示
请填处理意见