24小时热门版块排行榜    

查看: 1165  |  回复: 14

shuitong110

银虫 (小有名气)

[求助] 程序有误!!MTLAB 对函数积分(变量L),积分后的函数M再进行sin函数计算得到函数MM 已有2人参与

程序有误!!MTLAB 对函数积分(变量L),积分后的函数M再进行sin函数计算得到函数MM,最后绘制关于L,MM的图。 绘制的代码如下,能出图,但是和书上的结果差别很大,出来的图形应该是近似于正弦函数的图。我运算出来的怎么是一条直线,求大侠解答!!!!
clear;
clear;
L=0:0.02*10^-6:70*10^-6;

d=0.1*10^-6;
R=100*10^-6;
P=0.3;
k=2*pi./(1.55*10^-6);
B=11*10^6;
n1=3.45;
n2=1;
w=0.5*10^-6;
y1=sqrt(abs(k.^2*n1.^2-B.^2));
y2=sqrt(abs(B.^2-k.^2*n2.^2));

A=2*P*y1.^2*y2.^2;
C=B*k*k*(n1.^2-n2.^2)*(2+y2*w);
D=exp(-y2*d-y2*R+y2.*sqrt(R*R-L.*L));
M=A.*D./C;

S=trapz(L,M);
MM=sin(S);
plot(L,MM);

程序有误!!MTLAB 对函数积分(变量L),积分后的函数M再进行sin函数计算得到函数MM
1111.gif
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

alorsmail

铁杆木虫 (著名写手)

【答案】应助回帖


fegg7502: 金币+1, 应助指数+1, 鼓励交流 2014-05-09 08:10:37
如果要得到一个曲线的话,你需要加一个循环,
示例如下,结果见图片
==========================
L=0:0.02*10^-6:140*10^-6 ;

d=0.1*10^-6 ;
R=100*10^-6 ;
P=0.3 ;
k=2*pi./(1.55*10^-6) ;
B=11*10^6 ;
n1=3.45 ;
n2=1 ;
w=0.5*10^-6 ;
y1=sqrt(abs(k.^2*n1.^2-B.^2)) ;
y2=sqrt(abs(B.^2-k.^2*n2.^2)) ;

MM = zeros(size(L)) ;
for i = 10:length(L)
    Lp = L(1:i) ;
    A=2*P*y1.^2*y2.^2 ;
    C=B*k*k*(n1.^2-n2.^2)*(2+y2*w) ;
    D=exp(-y2*d-y2*R+y2.*sqrt(R*R-Lp.*Lp)) ;
    M=A.*D./C ;
    S=trapz(Lp,M) ;
    MM(i)=sin(S) ;
end

plot(L,MM) ;
==========================
程序有误!!MTLAB 对函数积分(变量L),积分后的函数M再进行sin函数计算得到函数MM-1
figure.png

6楼2014-04-25 16:12:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

alorsmail

铁杆木虫 (著名写手)

最好能提供积分的原方程,这样方便大家对比
2楼2014-04-25 12:30:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shuitong110

银虫 (小有名气)

引用回帖:
2楼: Originally posted by alorsmail at 2014-04-25 12:30:48
最好能提供积分的原方程,这样方便大家对比

已经将函数上传至图片格式 ,希望给与指点。谢谢!
3楼2014-04-25 14:50:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shuitong110

银虫 (小有名气)


fegg7502: 金币+1, 鼓励交流 2014-05-09 08:10:51
图示函数
程序有误!!MTLAB 对函数积分(变量L),积分后的函数M再进行sin函数计算得到函数MM-2
函数.jpg

4楼2014-04-25 14:52:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

alorsmail

铁杆木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
shuitong110: 金币+15, ★★★很有帮助, 谢谢 2014-05-08 21:09:57
fegg7502: 金币+1, 鼓励交流 2014-05-09 08:11:01
引用回帖:
4楼: Originally posted by shuitong110 at 2014-04-25 14:52:37
图示函数

函数.jpg

首先在你的程序里面,用 trapz 进行积分的话,最后得到的 S=trapz(L,M), S 只是一个数值,这是为什么你 plot(L,sin(M)); 只能得到一条线的原因
回头我再看看怎么得到你说的正弦曲线
5楼2014-04-25 15:03:43
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jinjian0120

铁虫 (小有名气)

【答案】应助回帖

★ ★ ★ ★
感谢参与,应助指数 +1
shuitong110: 金币+3 2014-05-08 21:10:12
fegg7502: 金币+1, 鼓励交流 2014-05-09 08:11:08
几个含有参数矩阵相乘得到的一个多项式,怎么能让参数连续变化,输出多项式的值,例如这个例子x=1:1:10,A=[x,0;0,0],b=A^2 谢谢了
7楼2014-04-25 17:31:06
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shuitong110

银虫 (小有名气)

引用回帖:
5楼: Originally posted by alorsmail at 2014-04-25 15:03:43
首先在你的程序里面,用 trapz 进行积分的话,最后得到的 S=trapz(L,M), S 只是一个数值,这是为什么你 plot(L,sin(M)); 只能得到一条线的原因
回头我再看看怎么得到你说的正弦曲线...

万分感谢啊,最后结果就是一个类似正弦的!谢谢啦 等您回复~
8楼2014-04-25 19:31:48
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shuitong110

银虫 (小有名气)

引用回帖:
6楼: Originally posted by alorsmail at 2014-04-25 16:12:52
如果要得到一个曲线的话,你需要加一个循环,
示例如下,结果见图片
==========================
L=0:0.02*10^-6:140*10^-6 ;

d=0.1*10^-6 ;
R=100*10^-6 ;
P=0.3 ;
k=2*pi./(1.55*10^-6) ;
B=11*10^6 ;
...

谢谢您的回复,
MM = zeros(size(L)) ;
for i = 10:length(L)
    Lp = L(1:i) ;
这三行是什么意思?
9楼2014-04-25 19:41:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

shuitong110

银虫 (小有名气)

引用回帖:
6楼: Originally posted by alorsmail at 2014-04-25 16:12:52
如果要得到一个曲线的话,你需要加一个循环,
示例如下,结果见图片
==========================
L=0:0.02*10^-6:140*10^-6 ;

d=0.1*10^-6 ;
R=100*10^-6 ;
P=0.3 ;
k=2*pi./(1.55*10^-6) ;
B=11*10^6 ;
...

不知道怎么给你发图片,我在帖子回复中加了一个图示,是书上的类似结果,只是参数不太一样,但是基本形式不应有太大变化。
10楼2014-04-25 19:43:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 shuitong110 的主题更新
信息提示
请填处理意见