I have an idea that I want to write in MATLAB language

1 次查看(过去 30 天)
I am trying to write a MATLAB code that does the following the user should enter 3 vectors (x1, x2, x3) each has 2 components then evaluate the function f (a function of 2 variables) at the 3 vectors and sort the function values in an ascending order according.
Then name the the higest function value as fh and the lowest as fL. Then name that crossponds to fxh as xh and the number that crossponds to fxL as xL.
What I did so far was:
x1=[8;9]; %the first vector%
x2=[10;11]; %the second vector%
x3=[8;11]; %the 3rd vector%
syms x y
f=4*((x-5)^2)+6*((y-6)^2);
f1=subs(f, {x,y}, [x1(1,1), x1(2,1)]); %value of f at x1%
f2=subs(f, {x,y}, [x2(1,1), x2(2,1)]); %value of f at x2%
f3=subs(f, {x,y}, [x3(1,1), x3(2,1)]); %value of f at x3%
v=[f1 f2 f3]';
v=sort(v); %values of f at an ascending order%
fh=v(3,1); %higest value of f%
fL=v(1,1); %lowest value of f%
Is there a way that makes MATLAB finds the x that crossponds to fh and fL without using the inverse function?
Maybe something like minimizing f over the discrete set S={x1,x2,x2} then find the minimizor of f and assign it name like xL
then do minimization again of f over S-{xL} and find the minimizor and assign it name like xLL
then the only element remaining should be xh.
Thanks!

采纳的回答

Stephen23
Stephen23 2019-1-1
编辑:Stephen23 2019-1-1
"Is there a way that makes MATLAB finds the x that crossponds to fh and fL ... ?"
You could use indexing:
>> M = [8,9;10,11;8,11] % [X(:),Y(:)]
M =
8 9
10 11
8 11
>> V = (M-[5,6]).^2 * [4;6] % your calculation simplified
V =
90
250
186
>> [Vs,idx] = sort(V);
>> minXY = M(idx(1),:)
minXY =
8 9
>> maxXY = M(idx(3),:)
maxXY =
10 11

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Mathematics 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by