Solving Equations in MATLAB

조회 수: 2 (최근 30일)
trythisone noone
trythisone noone 2020년 12월 27일
댓글: Ameer Hamza 2020년 12월 28일
Hello,
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

채택된 답변

Ameer Hamza
Ameer Hamza 2020년 12월 27일
편집: Ameer Hamza 2020년 12월 27일
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));
end
y_sol = uniquetol(y_sol)
  댓글 수: 2
trythisone noone
trythisone noone 2020년 12월 27일
Wow, Nice trick man. It works fine. <3
Ameer Hamza
Ameer Hamza 2020년 12월 28일
I am glad to be of help!

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

John D'Errico
John D'Errico 2020년 12월 27일
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 =
k
>> 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.

카테고리

Help CenterFile Exchange에서 Optimization에 대해 자세히 알아보기

태그

제품


릴리스

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by