注册 登录
编程论坛 Matlab

请教:w,k为两自变量,均从0取10。y1,y2为w,k函数,y1==y2输出w,k, 并画图

xiaojixiong 发布于 2013-08-07 14:16, 642 次点击
如题,向大家请教个问题:想向各位大哥请教个简单的问题,w,k为两个自变量,而y1,y2又是以宗量为w,k的函数的贝塞尔函数的函数,如果,y1==y2的时候,我想输出相对应的w,k的值,并画出w,k的曲线。下面贴出的是我前面部分的代码:
w=0:10;
for k=0:10,
x=sqrt(w.*w*2.1-k.*k);
A=besselj(0,0.8*x).*bessely(0,x)-besselj(0,x).*bessely(0,0.8*x);
B=besselj(0,0.8*x).*bessely(1,x)-besselj(1,x).*bessely(0,0.8*x);
y1=besseli(1,sqrt(k.*k-w.*w+9).*0.8).*A;
y3=sqrt(k.*k-w.*w+9)./x;
y4=2.1./(1-(9./w.*w));
y2=-y3.*y4.*besseli(0,sqrt(k.*k-w.*w+9).*0.8).*B;
然后我想做的是,当w,和k在0到10中取值时,如果y1==y2时,输出相对应的w,k的值,并画出w-k的曲线。由于自己水平很烂,后面那部份的不会写了。想烦请哪位大哥指点下迷津啊,小弟在此感激不尽,先谢谢了!

1 回复
#2
hytao20122013-09-14 20:20
close all; clear all; clc;
wk=[];
for w=0:10
    for k=0:10
        x=sqrt(w*w*2.1-k*k);
        A=besselj(0,0.8*x)*bessely(0,x)-besselj(0,x)*bessely(0,0.8*x);
        B=besselj(0,0.8*x)*bessely(1,x)-besselj(1,x)*bessely(0,0.8*x);
        y1=besseli(1,sqrt(k*k-w*w+9)*0.8)*A;
        y3=sqrt(k*k-w*w+9)/x;
        y4=2.1/(1-(9/w*w));
        y2=-y3*y4*besseli(0,sqrt(k*k-w*w+9)*0.8)*B;
        if y1==y3
            wk=[wk; w k];
        end
    end
end
display(wk);
plot(wk(:,1),wk(:,2));

[ 本帖最后由 hytao2012 于 2013-9-14 21:02 编辑 ]
1