在寻找函数最小值时如何解决矩阵维数问题

时间:2019-03-27 13:44:31

标签: matlab optimization mathematical-optimization

我有一个家庭作业,应该使用恒定步长的“最速下降”方法找到函数的最小值。 Matlab告诉我一个错误

import tkinter as tk
import tkinter.ttk as ttk

root = tk.Tk()
msg = tk.Text( root, width=60, height=5 )
pbar = ttk.Progressbar( msg, length=419, mode='indeterminate',
                        orient=tk.HORIZONTAL,
                        )
msg.window_create( tk.INSERT, window=pbar )
msg.grid( row=0, column=0, padx=10, pady=10 )

但是我不明白为什么矩阵尺寸有问题。

我在另一台计算机上尝试过,并且此功能和脚本都可以正常工作。

这是功能:

Error using  - 
Matrix dimensions must agree.

Error in stepfix (line 11)
       x=x-s*grad(x1(k),x2(k))/norm(grad(x1(k),x2(k)));

这就是我调用该函数的方式:

function [ out ] = stepfix( fct,grad,x,epsilon )

k=1;
x1(k)=x(1,1);
x2(k)=x(2,1);
s=0.5;   


   for k=1:50
       x=x-s*grad(x1(k),x2(k))/norm(grad(x1(k),x2(k)));
     x1(k)=x(1,1);
     x2(k)=x(2,1);
   end
   out=[x1(1:end),x2(1:end)];
   plot(x1(k),x2(k),'m');
end

0 个答案:

没有答案