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/06/30 21:08:00
![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)](/uploads/image/z/6927112-64-2.jpg?t=MATLAB%E6%96%B9%E7%A8%8B%E6%B1%82%E8%A7%A3%E9%97%AE%E9%A2%98clearsyms+n+H%3D1.60%3Blanmuda%3D1.55%3Bn1%3D1.55%3Bn2%3D1.67%3Bn3%3D1.5%3Bk0%3D2%2Api%2Flanmuda%3Bc1%3Dn2%5E2%2Fn1%5E2%3Bc2%3Dn2%5E2%2Fn3%5E2%3Br1%3Dsqrt%28n.%5E2-n1%5E2%29%2Ak0%3Br2%3Dsqrt%28n2%5E2-n.%5E2%29%2Ak0%3Br3%3Dsqrt%28n.%5E2-n3%5E2%29%2Ak0%3B+fun%3Dr2%2AH-atan%281.1608%2Ar1%2Fr2%29-atan%281.2395%2Ar3%2Fr2%29solve%28fun%3D%3D0%2Cn%29)
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)%计算根的值
收起