【发布时间】:2014-11-02 10:12:19
【问题描述】:
在 Matlab 中,我想创建一个名为 J(theta_0, theta_1) 的成本函数的偏导数(以便进行梯度下降所需的计算)。
函数J(theta_0, theta_1)定义为:
让我们说h_theta(x) = theta_1 + theta_2*x。另外:alpha 是固定的,theta_1 和 theta_2 的起始值是给定的。假设在这个例子中:alpha = 0.1theta_1 = 0,theta_2 = 1。 我还拥有两个不同向量中的 x 和 y 的所有值。
VectorOfX =
5
5
6
VectorOfX =
6
6
10
我在 Matlab 中尝试解决这个问题的步骤:我不知道如何在 matlab 中解决这个问题。所以我开始尝试在 Matlab 中定义一个函数并尝试了这个:
theta_1 = 0
theta_2 = 1
syms x;
h_theta(x) = theta_1 + t2*x;
这行得通,但不是我真正想要的。我想得到 x^(i),它在一个向量中。接下来我尝试的是:
theta_1 = 0
theta_2 = 1
syms x;
h_theta(x) = theta_1 + t2*vectorOfX(1);
这会产生以下错误:
Error using sym/subsindex (line 672)
Invalid indexing or function definition. When defining a
function, ensure that the body of the function is a SYM
object. When indexing, the input must be numeric, logical or
':'.
Error in prog1>gradientDescent (line 46)
h_theta(x) = theta_1 + theta_2*vectorOfX(x);
我查找了此错误,但不知道如何解决此特定示例。我觉得我让 matlab 对我不利,而不是对我有利。
【问题讨论】:
-
自己区分函数不是更容易吗?你为什么坚持 MATLAB 做呢?
-
这可能会更容易一些,尽管我上面描述的问题仍然存在。即使有差异,我仍然必须对范围 h_theta(x^(i)) 和 y^(i) 求和。
-
这是家庭作业吗?如果是这样,明智的做法是在您的问题中指定它。
标签: matlab function derivative