How can I plot just one line of the hyperbola? Can somebdoy help me with fsolve?

1 次查看(过去 30 天)
This is my main code. I want to plot just the 3 lines of the hyperbola, the ones they are intersecting (Xt,Yt). Ho can I do it?
Xt=randi([-10 10],1,1);
Yt=randi([-10 10],1,1);
[Xtx, Ytx] = meshgrid(-40:1:40, -40:1:40);
R = Xtx + j*Ytx;
for i = 1:3
X(i)=randi([-10 10],1,1);
Y(i)=randi([-10 10],1,1);
x=[X(i) Xt];
y=[Y(i) Yt];
D(i)=sqrt((Xt-X(i))^2+(Yt-Y(i))^2);
figure(1)
line(x,y,'LineWidth',2);
hold on;
axis equal;
plot(x,y,'*',Xt,Yt,'s');
end
Delay1=D(2)-D(1);
Delay2=D(3)-D(1);
D1P = abs(R-(X(1)+j*Y(1)));
D2P = abs(R-(X(2)+j*Y(2)));
D3P = abs(R-(X(3)+j*Y(3)));
figure (1);
contour(Xtx,Ytx,D1P-D2P,[0 0]);
contour(Xtx,Ytx,abs(D1P-D2P));
contour(Xtx,Ytx,D3P-D2P,[0 0]);
contour(Xtx,Ytx,abs(D3P-D2P));
% for m=1:3
% DP(m)=abs(R-(X(m)+j*Y(m)));
% figure(1);
% contour(Xtx,Ytx,DP(m)-DP(m+1));
% end
Xtt=-10;
x0=[0;0];% Make a starting guess at the solution
options = optimoptions('fsolve','Display','iter'); % Option to display output
[x,fval]=fsolve(@position(Y,X,Delay1,Delay2);x0;options); % Call solver
I also want to generate a for loop with DP but it gives me an error with size of matrix I need some help also in these lines of the code.
Now i want to call this function with fsolve:
function P=position(Y,X,Delay1,Delay2)
X0=X(1);
X1=X(2);
X2=X(3);
Y0=Y(1);
Y1=Y(2);
Y2=Y(3);
Xt=-10:10;
Yt=-10:10;
P=[(Delay1)-sqrt((Xtxx-X1).^2+(Ytxx-Y1).^2)+sqrt((Xtxx-X0).^2+(Ytxx-Y0).^2); (Delay2)-sqrt((Xtxx-X2).^2+(Ytxx-Y2).^2)+sqrt((Xtxx-X0).^2+(Ytxx-Y0).^2)];
end
I have an bracket error with the fsolve. My output of the funcion are (Xtxx,Ytxx). Need help in this.
Than you.

采纳的回答

Walter Roberson
Walter Roberson 2015-7-11
I think possibly you want
[x,fval] = fsolve(@(txx) position(txx, Y,X,Delay1,Delay2);x0;options); % Call solver
with
function P = position(txx, Y,X,Delay1,Delay2)
Xtxx = txx(1);
Ytxx = txx(2);
X0=X(1);
X1=X(2);
X2=X(3);
Y0=Y(1);
Y1=Y(2);
Y2=Y(3);
Xt=-10:10;
Yt=-10:10;
P=[(Delay1)-sqrt((Xtxx-X1).^2+(Ytxx-Y1).^2)+sqrt((Xtxx-X0).^2+(Ytxx-Y0).^2); (Delay2)-sqrt((Xtxx-X2).^2+(Ytxx-Y2).^2)+sqrt((Xtxx-X0).^2+(Ytxx-Y0).^2)];
end

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by