求救matlab求解含有三角函数的非线性方程组 我的程序如下 (跪求啊 折磨好几天了)

syms x p
eq1='p*(sin(x)^2)+(cos(x)^2)*sin(x)-0.5';
eq2='p*cos(x)*cos(2*x)-sin(x)*cos(2*x)-(sqrt(3)-2)/8';
[x,p]=solve(eq1, eq2, x , p)
syms x p
eq1='p*(sin(x)^2)+(cos(x)^2)*sin(x)-0.5';
eq2='p*cos(x)*cos(2*x)-sin(x)*cos(2*x)-(sqrt(3)-2)/8';
[x,p]=solve(eq1, eq2, x , p)
x=double(x)
x=(y*180/pi)
p=double(p)

输出的结果是
x = 1.5487e+02 - 1.7583e+01i
p =2.7030 - 0.3069i
答案应该是 x=30 p=0.5 或者接近 还有我想得到实数解 但是结果总是含有虚数怎么办呢
大神们 求回答

clear;clc;
syms x p
eq1='p*(sin(x)^2)+(cos(x)^2)*sin(x)-0.5';
eq2='p*cos(x)*cos(2*x)-sin(x)*cos(2*x)-(sqrt(3)-2)/8';
[p,x]=solve(eq1,eq2,p,x);
x=eval(x);
p=eval(p);
log=(x==real(x));
x1=x(log);
p1=p(log);
首先是solve函数用错了,它的返回值是按字母的顺序排列的,也就是先返回p,再返回x,你把x,p弄反了,再就是程序输出的解不止一个,不知道为什么你的程序只输出一个解,最后,如果程序是你复制粘贴过来的话,倒数第二行的‘y’是什么情况?追问

我运行了一下 结果咋没出来呢  你求出来了吗 x=30 p=0.5  我放到matlab里面 运行出来的结果是下面图片,结果也没对。我上面发的程序,那个y 之前我改了x 还是没计算出来,还有你说x p 顺序,我也改了,也没计算出来···不知道为什么呢,跪求大神指点= =

追答

知道了,我用的是07版,你用的是更高级的版本,两个版本的求解器不一样,你那个版本最好用fsolve(用来求解非线性方程组)进行求解,不过需要指定初值
clear;clc;
f=@(x)([x(1)*(sin(x(2))^2)+(cos(x(2))^2)*sin(x(2))-0.5;...
x(1)*cos(x(2))*cos(2*x(2))-sin(x(2))*cos(2*x(2))-(sqrt(3)-2)/8]);
fsolve(f,[0.5,0.5]);

追问

f=@(x)([x(1)*(sin(x(2))^2)+(cos(x(2))^2)*sin(x(2))-0.5; x(1)*cos(x(2))*cos(2*x(2))-sin(x(2))*cos(2*x(2))-(sqrt(3)-2)/8])
x=fsolve(f,[0.5,0.5])
我运行 没反应····
是版本问题吗 我是2012a版

追答

没反应是什么意思,要么是有错误或警告提示,要么就是busy,不可能什么都没有。
在2012a上运行过,没有问题

温馨提示:答案为网友推荐,仅供参考
相似回答