Использование fminsearch в Matlab для наименьшего круга

для моего домашнего задания я должен вычислить наименьший круг. первая часть требовала от меня вычислить евклидово расстояние, и я справился со следующим кодом:

function euclidean = center(x, y)
maximaldist = 0;
rng(0, 'twister')
A= randi([0 10],10,2)
for i=1:size(A,1)
    euclidean=sqrt((x-A(i)).^2 + (y-A(i+size(A,1))).^2);
    if euclidean > maximaldist
        maximaldist = euclidean;
    end
end

для второй части мне нужно продолжать использовать fminsearch, но по какой-то причине я не могу реализовать его в коде (я могу использовать его из окна команды). может кто-нибудь помочь мне в этом?

EDIT: так что я пытался…

в основном все, что я мог найти.

for i=1:size(A,1)
fun=@(x) sqrt((x(1)-A(i)).^2 + (x(2)-A(i+size(A,1))).^2);
end
x0=[0 0];
fminsearch(fun, x0)
end

это был мой срыв с fminsearch, от отчаяния.

затем я изменил код на этот; поэтому я мог бы попробовать один следующим образом;

function euclidean = denneme(x,y)
%point_x=point(1);
%point_y=point(2);
rng(0, 'twister')
a= randi([0 10],10,1);
b= randi([0 10],10,1);
distance=sqrt((x-a).^2 + (y-b).^2);
euclidean=max(distance);
f= @(x) denneme(x(1),x(2));
fminsearch(f, [0 0])

но он говорит, что недостаточно входных аргументов. я пробовал так много вещей и удалил так много из них, поэтому я не могу достичь многих испытаний.

1 ответ

  1. Это помогло бы, если бы вы опубликовали то, что вы уже пробовали, и описали, с какими проблемами вы сталкиваетесь.

    EDIT: здесь вы перегружаете функцию центра? Мне любопытно, что этот код работал.