MATLAB方程求解问题clearsyms n H=1.60;lanmuda=1.55;n1=1.55;n2=1.67;n3=1.5;k0=2*pi/lanmuda;c1=n2^2/n1^2;c2=n2^2/n3^2;r1=sqrt(n.^2-n1^2)*k0;r2=sqrt(n2^2-n.^2)*k0;r3=sqrt(n.^2-n3^2)*k0; fun=r2*H-atan(1.1608*r1/r2)-atan(1.2395*r3/r2)solve(fun==0,n)

来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/25 14:50:34
MATLAB方程求解问题clearsymsnH=1.60;lanmuda=1.55;n1=1.55;n2=1.67;n3=1.5;k0=2*pi/lanmuda;c1=n2^2/n1^2;c2=n2^

MATLAB方程求解问题clearsyms n H=1.60;lanmuda=1.55;n1=1.55;n2=1.67;n3=1.5;k0=2*pi/lanmuda;c1=n2^2/n1^2;c2=n2^2/n3^2;r1=sqrt(n.^2-n1^2)*k0;r2=sqrt(n2^2-n.^2)*k0;r3=sqrt(n.^2-n3^2)*k0; fun=r2*H-atan(1.1608*r1/r2)-atan(1.2395*r3/r2)solve(fun==0,n)
MATLAB方程求解问题
clear
syms n
H=1.60;
lanmuda=1.55;
n1=1.55;
n2=1.67;
n3=1.5;
k0=2*pi/lanmuda;
c1=n2^2/n1^2;
c2=n2^2/n3^2;
r1=sqrt(n.^2-n1^2)*k0;
r2=sqrt(n2^2-n.^2)*k0;
r3=sqrt(n.^2-n3^2)*k0;
fun=r2*H-atan(1.1608*r1/r2)-atan(1.2395*r3/r2)
solve(fun==0,n)
这个方程解不出来,但我画图显示是有解的,请问问题出在哪?而且如果变成fun=r2*H-atan(r1/r2)-atan(r3/r2)就可以求解.

MATLAB方程求解问题clearsyms n H=1.60;lanmuda=1.55;n1=1.55;n2=1.67;n3=1.5;k0=2*pi/lanmuda;c1=n2^2/n1^2;c2=n2^2/n3^2;r1=sqrt(n.^2-n1^2)*k0;r2=sqrt(n2^2-n.^2)*k0;r3=sqrt(n.^2-n3^2)*k0; fun=r2*H-atan(1.1608*r1/r2)-atan(1.2395*r3/r2)solve(fun==0,n)
fun =
(64*pi*(27889/10000 - n^2)^(1/2))/31 - atan((2479*(n^2 - 9/4)^(1/2))/(2000*(27889/10000 - n^2)^(1/2))) - atan((1451*(n^2 - 961/400)^(1/2))/(1250*(27889/10000 - n^2)^(1/2)))
ans =
-1.6344863105805439966305079859321
这是我运行出来的结果

图示:
1. 试了下用solve求解
solve('sin(x)^2=x/50')
ans =

matrix([[0]])
只得到0是其解,其余的解未得到。
2. 用fzero求解
代码:
newf=@(x) sin(x).^2-x/50;
x0=0:0.2:50; %循环所有的初始值使其找到所有的解

全部展开

图示:
1. 试了下用solve求解
solve('sin(x)^2=x/50')
ans =

matrix([[0]])
只得到0是其解,其余的解未得到。
2. 用fzero求解
代码:
newf=@(x) sin(x).^2-x/50;
x0=0:0.2:50; %循环所有的初始值使其找到所有的解

for i=1:length(x0)
y(i) =fzero(newf,x0(i));
end
y=sort(y); %对y排序
diffy=diff(y);
y=y(diffy>1e-5);%找出y中不相同的根
y%显示
newf(y)%计算根的值

收起