за домашната ми работа трябва да изчисля най-малкия кръг. първата част изискваше да изчислим евклидовото разстояние и успях да го направя със следния код:
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
това беше, че ще се усъвършенствам с фммаркетинговата част, от отчаяние.
тогава промених кода в това; така че мога да опитам един, както следва;
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])
но се казва, че няма достатъчно входни аргументи. Опитах толкова много неща и изтрих толкова много от тях, така че не мога да достигна до много от изпитанията.
Отговори:
0 за отговор № 1Би било от полза, ако публикувате това, което вече сте опитвали, и сте описали какви проблеми срещате.
EDIT: Тук претоварвате ли централната функция? Любопитен съм, че този код се изпълняваше.