作业帮 > 综合 > 作业

用matlab算比较复杂的式子,出现Warning:Explicit solution could not be fou

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/22 16:40:48
用matlab算比较复杂的式子,出现Warning:Explicit solution could not be found.还是方法不行
这是告诉你无法求解析解.用数值解法吧.
再问: 可以帮我看一下么?就一个方程? 
再答: 请将方程代码帖上来。
再问: 2*sqrt(w^2/cl^2-k^2)/a*w^2/ct^2*besselj(1,sqrt(w^2/cl^2-k^2)*a)*besselj(1,sqrt(w^2/ct^2-k^2)*a)-(w^2/ct^2-2*k^2)^2*besselj(0,sqrt(w^2/cl^2-k^2)*a)*besselj(1,sqrt(w^2/ct^2-k^2)*a)-4*k^2*sqrt(w^2/cl^2-k^2)*sqrt(w^2/ct^2-k^2)*besselj(1,sqrt(w^2/cl^2-k^2)*a)*besselj(0,sqrt(w^2/ct^2-k^2)*a)=0; 其中a=0.003;cl=6300;ct=3100;w=0:3*pi*10^6;求解k的图形。
再答: 1 下面的解法为使用fsolve求解此方程提供了一个思路。 2 fsolve,是找到与设定初值“距离最近”的解。一定要尽可能地将初值设定在解的附近。 设定初值,需要利用你的专业知识等。 3 如有疑问,可查阅相关资料。 要反复试探,直至找到满意的解。 a=0.003;cl=6300;ct=3100; Y = @(w,k) -besselj(0,a.*sqrt(-k.^2+1.0./cl.^2.*w.^2)).*besselj(1,a.*sqrt(-k.^2+1.0./ct.^2.*w.^2)).*(k.^2.*2.0-1.0./ct.^2.*w.^2).^2-k.^2.*besselj(1,a.*sqrt(-k.^2+1.0./cl.^2.*w.^2)).*besselj(0,a.*sqrt(-k.^2+1.0./ct.^2.*w.^2)).*sqrt(-k.^2+1.0./cl.^2.*w.^2).*sqrt(-k.^2+1.0./ct.^2.*w.^2).*4.0+(1.0./ct.^2.*w.^2.*besselj(1,a.*sqrt(-k.^2+1.0./cl.^2.*w.^2)).*besselj(1,a.*sqrt(-k.^2+1.0./ct.^2.*w.^2)).*sqrt(-k.^2+1.0./cl.^2.*w.^2).*2.0)./a options=optimset('Display','off','TolFun',1.0e-10,'MaxFunEvals',1000,'MaxIter',1000); % w1 = linspace(1,1200,100); % wlength = length(w1); for j = 1:wlength % w = w1(j); x0 = 0.03*min([w/cl,w/ct]); % 设定初值 x = fsolve(@(k) Y(w,k),x0,options); kz(j) = x; end figure plot(w1,kz) % k的图形