我正在尝试在matlab中使用fsolve
实现一个程序。我希望程序能够成对地比较n个元素,并且每个比较是函数向量F中的一行,然后应用fsolve
。
到目前为止,我已经编写了3个元素的程序(比较1和2,1以及3,2和3),明确地编写了每个函数,并按照需要运行。但我现在尝试在matlab函数内的循环中构造函数向量。但是这似乎不起作用,因为在fsolve
的每次迭代中调用函数,因此值以意外的方式改变。关于可以做什么的任何建议?
主程序如下:
A = [1 1;-1 -1;-1 1;1 -1];
U =[0 0];
Ustart= [6 7];
f= @(Uest)TimeDiffs(U,A,Ustart);
TimeDiffs函数如下所示:
function F = TimeDiffs(U,A,Uest)
F=[];
funcnum=1;
for q= 1:length(A)
for p= q+1:length(A)
td= norm(U-A(q,:))-norm(U-A(p,:));
F(funcnum)= norm(Uest-A(q,:))-norm(Uest-A(p,:))-td;
funcnum=funcnum+1;
end
end
end
在fsolve
中使用的函数中使用循环时似乎存在问题。有没有人有类似的经历?