I don't understand the condition from FOR row 16 to row 26
1 view (last 30 days)
Show older comments
syms x y z lambda
dist = x.^2+(y-1).^2+z.^2; % distance of an abitary point (x,y,z) from the point(0,1,0)
S = z.^2-(x.*y)-1 == 0; % surface constraint z^2 = xy+1 ------> z^2-xy-1 == 0
L = dist + lambda * lhs(S); % Langrange function
dL_dx = diff(L,x) == 0; % derivative of L with respect to x
dL_dy = diff(L,y) == 0; % derivative of L with respect to y
dL_dz = diff(L,z) == 0; % derivative of L with respect to z
dL_dlambda = diff(L,lambda) == 0; % derivative of L with respect to lambda
system = [dL_dx; dL_dy; dL_dz; dL_dlambda]; % build the system of equations
[x_val, y_val, z_val,lambda_val] = solve(system, [x y z lambda], 'Real', true); % solve the system of equations and display the results
results_numeric = double([x_val, y_val, z_val]); % show results in a vector of data type double
[rows columns]=size(results_numeric); % getting number of rows and columns
fprintf('points on the surface S that are closest to the point (0, 1, 0) are :\n');
fprintf(' x y z\n');
fprintf('--------------------------\n');
for i=1:rows
fprintf('(');
for j=1:columns
if j < columns
fprintf("%.4f , ",results_numeric(i,j));
else
fprintf("%.4f",results_numeric(i,j));
end
end
fprintf(")\n");
end
0 Comments
Answers (1)
David Hill
on 19 May 2022
Edited: David Hill
on 19 May 2022
The whole nested for-loop is just used to display results_numeric. If you don't care about displaying, you can delete the whole thing.
results_numeric%contains all the information within the matrix
0 Comments
See Also
Categories
Find more on NaNs in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!