Clear Filters
Clear Filters

Solving Equations in MATLAB

1 view (last 30 days)
trythisone noone
trythisone noone on 27 Dec 2020
Commented: Ameer Hamza on 28 Dec 2020
I have the following equation.
cos(x) == 0
I want to get two or more possible solutions for the above equation which are 90, 270, and so on. The solve function returns the first solution only.
This technique is important for me to calculate the antenna beamwidths. Any ideas?
Thanks in Adv

Accepted Answer

Ameer Hamza
Ameer Hamza on 27 Dec 2020
Edited: Ameer Hamza on 27 Dec 2020
There is no general solution to such a problem. A common way is to specify several starting points for the numerical solver and find the unique solutions.
y = @(x) cos(x);
x_range = 0:0.1:4*pi;
y_sol = zeros(size(x_range));
for i = 1:numel(x_range)
y_sol(i) = fzero(y, x_range(i));
y_sol = uniquetol(y_sol)
trythisone noone
trythisone noone on 27 Dec 2020
Wow, Nice trick man. It works fine. <3
Ameer Hamza
Ameer Hamza on 28 Dec 2020
I am glad to be of help!

Sign in to comment.

More Answers (1)

John D'Errico
John D'Errico on 27 Dec 2020
SOME problems can be handled to find all solutions.
syms x
>> xsol = solve(cos(x) == 0,'returnconditions',true)
xsol =
struct with fields:
x: [1×1 sym]
parameters: [1×1 sym]
conditions: [1×1 sym]
>> xsol.parameters
ans =
>> xsol.conditions
ans =
in(k, 'integer')
>> xsol.x
ans =
pi/2 + pi*k
So we learn the set of all solutions takes the form
x = pi/2 + pi*k
where k is an integer.
Sadly, a fully general solution to many problems will not be written so easily. But you can always try.





Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!