C++ 多变量梯度下降法代码
时间: 2023-09-15 17:23:05 浏览: 66
以下是一个简单的 C++ 多变量梯度下降法的代码:
```cpp
#include <iostream>
#include <cmath>
using namespace std;
double f(double x1, double x2) {
return pow(x1, 2) + pow(x2, 2);
}
void gradient_descent(double alpha, double& x1, double& x2) {
double eps = 1e-6;
double err = 1.0;
int max_iter = 1000;
int iter = 0;
while (err > eps && iter < max_iter) {
double dx1 = 2 * x1;
double dx2 = 2 * x2;
x1 -= alpha * dx1;
x2 -= alpha * dx2;
err = sqrt(pow(dx1, 2) + pow(dx2, 2));
iter++;
}
}
int main() {
double x1 = 1.0, x2 = 1.0;
double alpha = 0.1;
gradient_descent(alpha, x1, x2);
cout << "Minimum value of f(x1, x2) = " << f(x1, x2) << endl;
cout << "x1 = " << x1 << ", x2 = " << x2 << endl;
return 0;
}
```
这里假设目标函数为 $f(x_1, x_2) = x_1^2 + x_2^2$,使用梯度下降法求其最小值。`gradient_descent` 函数实现了梯度下降算法,其中 `alpha` 表示学习率,`x1` 和 `x2` 是待求解的参数。在 `main` 函数中调用 `gradient_descent` 函数并输出结果。