---
source_url: https://docs.dolphindb.cn/zh/funcs/b/bvls.html
fetched_at: 2026-05-19T09:14:21Z
category: funcs
title: bvls
sha1: e1918249da5b696479756ff8915892e6ec9debd2
---

# bvls

首发版本：3.00.3

## 语法

`bvls(Y, X, bounds, [maxIter], [tolerance=1e-10],
[intercept=true], [mode=0])`

## 详情

执行有界变量最小二乘法（Bounded-Variable Least-Square）。

## 参数

**Y** 是一个数值型向量，表示因变量。

**X** 是一个数值型向量、元组、矩阵或表，表示自变量。*X* 是矩阵时：

- 如果行数等于 *Y* 的长度，*X* 的每一列都是一个因子。
- 如果行数不等于 *Y* 的长度，并且如果列数等于 *Y* 的长度，*X* 的每一行都是一个因子。

注意：*X* 与 *Y*中的值会转为 DOUBLE 后进行运算，转换后的空值将被视为 0。

**bounds** 包含两个元素的元组，分别定义下界（lb）和上界（ub）。元组的元素可以是：

- 标量：为所有因子指定相同的边界值。
- 向量：向量长度等于因子数，分别为每个因子指定边界值。

**maxIter** 可选参数，正整数，表示最大迭代次数。如未定义，默认为变量的数量。

**tolerance** 可选参数，DOUBLE 类型，表示允许的误差，默认值为 1e-10 。如果相邻两次迭代的损失函数值的差值小于
*tolerance*，或在 *tolerance* 误差下满足 Karush-Kuhn-Tucker 条件时，停止迭代。

**intercept** 可选参数，布尔值，表示是否在回归中包含截距。默认为 true。为 true 时，系统自动给 X 添加一列 1 以生成截距。

**mode** 可选参数，表示输出模式。目前仅支持 0 （默认），表示返回系数估计向量。

## 返回值

DOUBLE 向量，表示回归系数估计值。

## 例子

```dolphindb
x1 = [1, 3, 5, 7, 11, 16, 23]
x2 = [2, 8, 11, 34, 56, 54, 100]
y = [0.1, 4.2, 5.6, 8.8, 22.1, 35.6, 77.2]
bounds = (0.0, 10.0)

bvls(y, x1, bounds)
// output: [0,2.717777777777778]

bvls(y, (x1, x2), bounds)
// output: [0,1.409643685501234,0.315943584131198]
```

相关函数：[ols](../o/ols.html)
