solve the question ( fsolve , vpasolve)

is there any other way to solve the equation below.
clear all;clc;
a=0.5;
x=linspace(-2*a,2*a,100);
eqn=@(x,y,a)(y.^2./(x.^2+y.^2)).*(1-2.*(1-(x./(2*a)).^2-(y./(2*a)).^2))-(y./a).^2;
for k = 1:numel(x)
options = optimoptions('fsolve','Display','iter');
yv(k,:) = fsolve(@(y)eqn(x(k),y,a), 1, options);
end
plot(x,yv)
when ı change initial value for iteration, answers and graph is changing.

3 Comments

what is the correct y values
Torsten
Torsten on 23 May 2021
Edited: Torsten on 23 May 2021
If you multiply your equation by x^2+y^2, you see that you try to solve a quadratic equation in y^2. This equation might have 0, 1, 2 or 4 real solutions. Use symbolic computation using "solve" instead of "fsolve" to sort out the solution that makes sense for your problem.
Torsten
Torsten on 23 May 2021
Edited: Torsten on 23 May 2021
Solving your equation by hand gives y=0 as the only solution for all values of a and x different from 0. For x=0, no solution for y exists.

Sign in to comment.

Answers (1)

John D'Errico
John D'Errico on 22 May 2021
I think you do not understand optimization. When you change the initial value, it is EXPECTED that the solver MAY converge to a different solution.

2 Comments

solve function is not sufficient to answer the question, ı tried this fsolve function. How can I get correct y values.
what is the correct function to solve the equation

Sign in to comment.

Categories

Products

Release

R2020a

Asked:

on 22 May 2021

Edited:

on 23 May 2021

Community Treasure Hunt

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

Start Hunting!