matlab基本问题:如何得到变量数值

来源:百度知道 编辑:UC知道 时间:2024/07/04 13:53:20
运行以下程序:
clear;no=2.268;ne=2.2;a=36*pi/180;b=59.5*pi/180;
a1=asin(sin(a)./no);b1=asin(sin(b)./no);
c1=(a1+b1)./2;c2=(b1-a1)./2;
z=2*no.*cos(c1);
syms a2 b2
k1=no.*ne./((no.*cos(a2)).^2+(ne.*sin(a2)).^2).^0.5;
k2=no.*ne./((no.*cos(b2)).^2+(ne.*sin(b2)).^2).^0.5;
a2=acos((z-k2.*cos(b2-c2))./k1)-c2;
b2=asin(k1.*sin(a2+c2)./k2)+c2
得b2 =

asin(1/6237/(321489/62500*cos(a2)^2+121/25*sin(a2)^2)^(1/2)*(38900169-1562500*(4838217058066251/1125899906842624-6237/1250/(321489/62500*cos(b2)^2+121/25*sin(b2)^2)^(1/2)*cos(b2-2297532511488665/36028797018963968))^2*(321489/62500*cos(a2)^2+121/25*sin(a2)^2))^(1/2)*(321489/62500*cos(b2)^2+121/25*sin(b2)^2)^(1/2))+2297532511488665/36028797018963968
如何得到a2和b2具体值?谢谢

是这样的:

clear;clc;
no=2.268;ne=2.2;a=36*pi/180;b=59.5*pi/180;
a1=asin(sin(a)/no)
b1=asin(sin(b)/no)
c1=(a1+b1)/2
c2=(b1-a1)/2
z=2*no*cos(c1)
syms a2 b2
k1=no*ne/((no*cos(a2))^2+(ne*sin(a2))^2)^0.5;
k2=no*ne/((no*cos(b2))^2+(ne*sin(b2))^2)^0.5;
f1=acos((z-k2*cos(b2-c2))/k1)-c2-a2;
f2=asin(k1*sin(a2+c2)/k2)+c2-b2;
[a2,b2]=solve(f1,f2,'a2,b2');
a2=eval(a2)
b2=eval(b2)

结果:
a1 =

0.2622

b1 =

0.3897

c1 =

0.3259

c2 =

0.0638

z =

4.2972

a2 =

2.8544
0.1600

b2 =

-0.1600
0.2872