如何在matlab下求解三角函数方程

来源:百度知道 编辑:UC知道 时间:2024/06/26 05:42:34
matlab 三角函数方程求解
悬赏分:10 - 离问题结束还有 13 天 13 小时
碰到一个问题,想在matlab下求解这样一个方程:
tan(k*(1.57E-6))/(k*(1.57E-6))=1/0.2159,求解k
我用了solve命令,结果出现错误,

我的用法是:
syms k
k=solve('tan(k*(1.57E-6))/(k*(1.57E-6))=1/0.2159')
不知道这样的方程应该用什么命令?怎么解决?

%%下面方法比较笨,但是可行。
%%先看一下为什么你解不出来
%%把你的k*1.57e-6看成一个整体x
%%变成求解tan(x)./x-1/0.2159==0
x=-2:0.0001:2;
y=tan(x)./x-1/0.2159;
plot(x,y,x,zeros(size(x)))
title('[-2,2]')

figure
x=-1.5:0.0001:1.5;
y=tan(x)./x-1/0.2159;
plot(x,y,x,zeros(size(x)))
title('[-1.5,1.5]')

%%从上面两张图可以看出
%%第一幅图中由于存在-1.57(-pi/2)时,tan变成无穷大

%%这里精确解我也不知道怎么取到就是了。
%%不过放大第二幅图(放大那个交点),解应当在-1.420到-1.419之间
figure
x=-1.420:0.0000001:-1.419;
y=tan(x)./x-1/0.2159;
plot(x,y,x,zeros(size(x)))
for i=1:length(x)-1
if (y(i)*y(i+1)<0)
break;
end
end
vpa(x(i),10)
得到结果为
-1.419899200
对称性还可以得到1.419899200
你可以逐步求精,上面只是取到小数点后7位,你还可以再往下做,效率不是很高就是了。
当然上面得到的是x
你的k应当是
k=x(i)/1.57e-6;
vpa(k,10)
tan(k*(1.57E-6))./(k*(1.57E-6))-1/0.2159

另外-pi/2以外的区域,还有根,你可以类同地处理。

syms k
k=solve('tan(k*(1.57E-6))/(k*(1.57E-6))-1/0.