参数为α,c,d,根据下面方程求θ的值
α=90°
c=20-100
d=50-80
楼主用fzero函数代入某些特定的c和d求出几个特殊解,
现在想根据c,d在范围内随机取值,得到θ关于c,d变化的曲线
或者d取不同值得到θ关于c变化的曲线[](
```c
clc;clear all;
syms Q
%三角形三边长度||AB||,||AC||和||AD||分别为l1,l2和l3
l1=84.84;
%l2=(20:1:100);
%l3=(50:1:80);
c=50/l1;
d=50/l1;
%α为P;θ为Q
P=90/180pi;
A=sin(P/2)sqrt(c^2-(d^2-1/4)sin(Q));
B=cos(P/2)cos(Q)sqrt((c^2(d^2-1/4)-(d^2-1/4)^2sin(Q)^2));
C=(d^2-1/4)sin(Q)^2;
D=cos(P/2+asin(1/(2d)));
q=-1/2A+B+C-cdD;
q= matlabFunction(q);
[Q,fval]=fzero(q,80/180*pi);
x1=rad2deg(Q)
```)
可以借鉴下
https://blog.csdn.net/qq_44921056/article/details/127598505
以下是我在CSDN上找到的一篇关于MATLAB求解带三角函数的复杂函数的博客:
https://blog.csdn.net/clear_lantern/article/details/127591800
该博客中介绍了如何使用MATLAB求解带三角函数的复杂函数,包括使用MATLAB内置的函数和自定义函数。其中,作者还提供了一些示例代码和详细的解释,非常适合初学者学习和参考。
希望对你有帮助!
非线性函数的根。
用法示例:
fun = @sin; % function
x0 = 3; % initial point
x = fzero(fun,x0)
您好,
首先,您的代码与表达式存在一处不符。具体为A的表达式中缺少了平方运算,即sin(Q)^2。这可能是导致报错的罪魁祸首。
然后,根据您给出的表达式,我给出了下面的代码
clc;clear all;
syms theta
syms c d
alpha=sym(pi)/2;
A = -1/2*sin(alpha/2)*sqrt(c^2-(d^2-1/4)*sin(theta)^2);
B=cos(alpha/2)*cos(theta)*sqrt((c^2*(d^2-1/4)-(d^2-1/4)^2*sin(theta)^2));
C=(d^2-1/4)*sin(theta)^2;
D=cos(alpha/2+asin(1/(2*d)));
eq1 = A+B+C == c*d*D;
sol = solve(eq1,theta); %方程的解析解
theta = simplify(sol(1,1));
在matlab2022b中,运行即可得到方程解的表达式。但表达式中存在root函数,也就是说,并没有真正的解出方程。
如果您求得了θ的具体表达式,可以使用fplot3、fsurf、fmesh等符号函数绘图函数进行绘制,如
fsurf(theta,[20,100,50,80])
xlabel('c')
ylabel('d')
也可以私信进一步交流
希望对您有所帮助