0

如何 17.7*sin(A)*cos(A)+87*sin^2(A)-9.65*cos(A)-47*sin(A)=0使用 MATLAB 求解方程?我想要满足上述等式的 A 的值。我尝试使用解决命令,但它不断给出错误。

4

2 回答 2

4

Of course it has a solution, it has an infinite number of solutions, for example you can see graphically that A crosses zero many times in the -4pi to 4pi interval:

A=linspace(-4*pi,4*pi,1000);
plot(A,17.7.*sin(A).*cos(A)+87.*sin(A).^2-9.65*cos(A)-47*sin(A))

enter image description here

Another way to look for solutions is using fzero near a point x0

f=@(A) 17.7.*sin(A).*cos(A)+87.*sin(A).^2-9.65*cos(A)-47*sin(A);
x0=0;
sol = fzero(f,x0)

sol =
   -0.2020

For finding multiple roots on an interval see this discussion.

于 2013-05-29T08:34:46.763 回答
1

有时,即使您需要数字解决方案,符号工具箱也会很有帮助。该函数在-pipi(或任何2*pi间隔)之间是周期性的。您可以使用solve在此区间内找到所有四个根:

syms A;
s = solve(17.7*sin(A)*cos(A)+87*sin(A)^2-9.65*cos(A)-47*sin(A)==0,A,'IgnoreAnalyticConstraints',true)

>> s = 
     -0.20201862493051844310946374889219
      0.57212820231996826457022742739841
      2.5736433165658736546275270008849
      2.9380144125412806473039849317812

solve找不到解析解时,它会返回一个数字 one'IgnoreAnalyticConstraints'在这种情况下,必须通过强制solve返回所有解决方案的选项来打开“简化规则” 。我不确定为什么会这样,因为这个选项通常会适得其反。

使用该函数double将符号值从转换solve为浮点数:s = double(s);. 然后,您可以将N*2*pi(其中N是一个整数)添加到这四个值中,以获得函数在任何其他区间中的根。

于 2013-05-29T16:23:07.550 回答