SciPy多重积分完全指南:dblquad/tplquad/nquad用法详解
用 scipy 求二重积分一次把 dblquad / tplquad / nquad 聊透刚接触 Python 数值计算的同学十有八九会用scipy.integrate.quad求一维积分但一遇到二重积分、三重积分就开始发懵。其实scipy早就把多重积分封装好了核心就三个函数dblquad、tplquad、nquad。这篇文章把我这几年的实际使用经验梳理一下从函数签名、参数顺序、边界函数写法到性能优化、奇异积分处理、符号验证一次讲清楚。无论你是搞物理、金融建模、图像处理还是单纯被课程作业卡住看完都能直接上手。很多人对“用 Python 求二重积分”的第一反应是去翻微积分课本、手推公式或者干脆用蒙特卡洛瞎蒙。但工程场景里被积函数往往是实验数据、仿真结果或者隐式方程根本没有解析表达式这时候scipy的数值积分工具才是正解。它能处理非矩形边界、嵌套维数、精度控制而且写起来比手写循环快得多。这篇博文适合三类读者第一类是数学课学到多重积分、想用程序验证答案的学生第二类是写科研代码、需要算概率或期望值的工程师第三类是已经有quad使用经验、想进阶掌握多维积分的开发者。下面直接进入正题。1. 二重积分问题本质与工具选型1.1 二重积分到底在算什么先回到数学定义。二重积分[ \iint_D f(x, y),dx,dy ]本质上是在二维区域 (D) 上对函数 (f(x, y)) 做累加。如果 (f(x,y)) 表示面密度那这个积分结果就是区域面积如果表示概率密度结果就是落在区域内的概率。物理上算转动惯量、质心工程上算二维信号的响应都是这种形式。数值方法的核心思想很简单把连续区域离散化取样、加权求和。scipy底层的思路也绕不开这个但它不是简单地在网格上取点——它用的是一种自适应的积分算法会在函数变化剧烈的区域自动加密采样点在平缓区域减少采样保证精度的同时节省计算量。1.2 为什么选 scipy 而不是手写或 sympy这个问题我常被问到。先说sympy它能求解析积分但很多被积函数没有初等原函数比如 (e^{-x^2-y^2}) 这种高斯形式或者含了反正切、贝塞尔函数符号积分直接挂机。而且即使给出结果形式也可能复杂到没法用。再说手写你当然可以用双重for循环套梯形公式或者辛普森公式但精度和效率都很难控制。自己做网格要处理边界问题步长选大了误差大选小了循环慢。scipy的dblquad会把“细分网格、误差估计、递归加密”这件事封装好你只需要关心被积函数和积分范围。1.3 核心函数全家桶谁该用哪个quad一重积分单变量。dblquad二重积分适合外层单变量、内层上下限是被积函数的另两个参数的函数。tplquad三重积分是dblquad的维度扩展。nquad通用n重积分最灵活能应对任意维度和复杂的边界传递。选型要点如果只是二重用dblquad最省心一旦维度在3以上且积分区间存在嵌套依赖nquad更通用。下面逐个拆解。2. 先理解一维 quad再上手 dblquad2.1 一维 quad 是基础dblquad名字里的db就是 double意思是它内部会调用两次一维积分。所以我建议你先把quad吃透。它的典型用法from scipy.integrate import quad # 积分区间 [0, 1]被积函数 x^2 result, error quad(lambda x: x**2, 0, 1) print(result, error) # 0.33333333333333337 3.700743415417189e-15返回两个值第一个是积分近似值第二个是绝对误差估计。这个误差估计很重要后面优化参数时能派上用场。如果你用过quad你会知道它有一个args参数可以向外传额外参数比如def f(x, a, b): return a * x b result, _ quad(f, 0, 1, args(2, 3))这个args机制在多维积分中极度关键。因为dblquad会把“外层变量”作为参数传给“内层被积函数”不理解这个机制就会写出各种诡异的报错。2.2 dblquad 签名与参数顺序官方签名的核心形式是scipy.integrate.dblquad(func, a, b, gfun, hfun, args(), epsabs1.49e-8, epsrel1.49e-8)每个位置的含义func被积函数签名必须是func(y, x, *args)。注意顺序第一参数是内层积分变量第二参数是外层积分变量。很多人在这里栽跟头。a, b外层变量 (x) 的积分下限和上限。gfun, hfun内层变量 (y) 的下限和上限。这两个可以是常数也可以是关于 (x) 的函数。写成可调用对象时它们的签名是gfun(x)。数学上它计算的是[ \int_a^b \int_{gfun(x)}^{hfun(x)} f(y, x),dy,dx ]注意函数参数是f(y, x)y 在前x 在后。一开始我总觉得这反直觉后来才明白这是嵌套积分自然的展开顺序先分离层变量 y再积外层 x。2.3 tplquad 与 nquad 的参数规律三重积分tplquad的签名进一步扩展scipy.integrate.tplquad(func, a, b, gfun, hfun, qfun, rfun)它计算[ \int_a^b \int_{gfun(x)}^{hfun(x)} \int_{qfun(x,y)}^{rfun(x,y)} f(z, y, x),dz,dy,dx ]这里被积函数的签名是func(z, y, x)从内到外依次对应。也就是说最内层变量永远放第一个位置。nquad则换了一种逻辑。它接收一个区间列表每个区间可以写成一个二元组(a, b)或者一个可调用对象lambda *args: ...。用法我放在后面的实操部分因为它用来处理不同维度时写起来更统一。3. 二重积分实操从矩形区域到复杂边界3.1 矩形区域示例高斯概率积分先来一个最简单的矩形区域计算 (\int_{0}^{1}\int_{0}^{1} e^{-x^2-y^2},dx,dy)。虽然函数在二维平面上是个平滑山峰但解析上没法用初等函数表达数值积分正好用上。from scipy.integrate import dblquad import numpy as np def f(y, x): return np.exp(-x**2 - y**2) # 外层 x 从 0 到 1内层 y 从 0 到 1 result, error dblquad(f, 0, 1, lambda x: 0, lambda x: 1) print(result, error)运行结果大约是0.5577。这个值本身没有太直观的含义但你把它当成一个对照基准后面改成非矩形区域时数值变化能帮你判断到底是面积变小了还是函数分布变了。3.2 复杂边界y 的上下限依赖 x矩形区域直接用常数函数当边界体会不到dblquad的优势。真实的二重积分区域很少是矩形。比如计算一个单位圆在第一象限部分的积分[ \int_0^1 \int_0^{\sqrt{1-x^2}} x^2 y^2 , dy,dx ]这个积分区域是一个四分之一圆。数学上你当然可以用极坐标化简但我们要验证数值代码。from scipy.integrate import dblquad import numpy as np def integrand(y, x): return x**2 y**2 result, error dblquad( integrand, 0, 1, lambda x: 0, lambda x: np.sqrt(1 - x**2) ) print(result, error)手推一下极坐标的结果四分之一圆在极坐标下是 (\int_0^{\pi/2}\int_0^1 r^3 dr d\theta \frac{1}{4} \cdot \frac{\pi}{2} \frac{\pi}{8} \approx 0.3927)。dblquad的结果应该非常接近0.3927误差估计也会落在 (10^{-8}) 量级。这里有个容易犯的错误边界函数用了全局变量x但scipy传入给边界函数的是它在积分过程中内部采样的点不是我们循环里的某个值。不要尝试在边界函数里面再引出一个x列表否则极易出错。注意边界函数必须是“输入一个外层变量值、返回一个内层边界”的纯函数不能依赖闭包里有副作用的变量。3.3 被积函数带额外参数的传参方式工程场景中积分式里常常带有参数比如温度、频率、比例系数。把这些参数放在args里传比用全局变量干净得多。from scipy.integrate import dblquad import numpy as np def heat_integrand(y, x, k, T0): return np.exp(-k * (x**2 y**2)) * T0 k 0.5 T0 300 result, error dblquad( heat_integrand, 0, 2, lambda x: 0, lambda x: 2, args(k, T0) ) print(result, error)这里heat_integrand(y, x, k, T0)的前两个位置是积分变量后两个位置由args提供。如果不写args而用def heat_integrand(y, x)内部去引用全局变量k、T0也行但调试和复用都会变麻烦。尤其是在批量参数扫描时args通配符的优势会被放大。3.4 一个概率计算的真实场景做统计模拟时常要算二元正态分布在某个区域内的概率。例如二维正态分布零均值、独立同分布求落在 ([-1, 1] \times [-1, 1]) 内的概率import numpy as np from scipy.integrate import dblquad sigma 1.0 def bivariate_normal_pdf(y, x, sigma): return (1 / (2 * np.pi * sigma**2)) * np.exp( -(x**2 y**2) / (2 * sigma**2) ) prob, error dblquad( bivariate_normal_pdf, -1, 1, lambda x: -1, lambda x: 1, args(sigma,) ) print(prob, error)你可以顺手用解析公式验证两个变量独立所以概率是两个一维正态区间概率的乘积即 (\Phi(1)-\Phi(-1)) 的平方查表或调用scipy.stats.norm都能得到约0.466。数值解和理论值一致说明dblquad在如此简单的二维域上非常稳定。4. 三重积分与任意 n 重积分的实战写法4.1 tplquad 最简用法先看三重积分的经典例子计算单位球体积。理论上单位球的体积是 (\frac{4}{3}\pi \approx 4.18879)。用直角坐标写积分区域是 (x\in[-1,1])(y) 从 (-\sqrt{1-x^2}) 到 (\sqrt{1-x^2})(z) 又从 (-\sqrt{1-x^2-y^2}) 到 (\sqrt{1-x^2-y^2})。from scipy.integrate import tplquad import numpy as np def unit_sphere(z, y, x): return 1.0 result, error tplquad( unit_sphere, -1, 1, lambda x: -np.sqrt(1 - x**2), lambda x: np.sqrt(1 - x**2), lambda x, y: -np.sqrt(1 - x**2 - y**2), lambda x, y: np.sqrt(1 - x**2 - y**2), ) print(result, error)只要边界函数的依赖顺序不出错tplquad会自己处理好这样复杂的嵌套区域。我第一次跑这段代码时对内层 z 的边界函数写成lambda y, x传参结果报了大面积的ValueError后来才意识到边界函数的参数顺序是固定的qfun(x, y)、rfun(x, y)外层变量列表从左到右传入。关键点tplquad里内层 z 的上下限函数签名需要有两个位置参数(x, y)顺序不能乱。4.2 nquad 统一处理不同维度的积分nquad的设计很有意思。它把每一维的积分范围和边界写成一个个“规格”最终按顺序从第一维到最后一维依次积分。举一个 2 维矩形区域的例子等价于dblquadfrom scipy.integrate import nquad def f(y, x): return np.exp(-x**2 - y**2) result, error nquad(f, [[0, 1], [0, 1]])注意区间列表的顺序第一个元素对应被积函数的最后一个参数最后一个元素对应被积函数的第一个参数。这个“倒序”关系是nquad最容易让人绕晕的地方。我个人的记忆技巧是nquad使用元素i来限制函数签名里的倒数第 (i1) 个变量。比如写nquad(f, [[0, 1], [0, 1]])第一个[0,1]约束 (x)第二个约束 (y)。对于非矩形区域区间列表里可以放可调用对象用来接收之前所有维度的变量。举一个 2 维区域的例子def f(y, x): return x**2 y**2 result, error nquad( f, [ [0, 1], # x 范围 [0, lambda x: np.sqrt(1 - x**2)] # y 范围依赖 x ] )4.3 nquad 写任意重数积分nquad最大的价值是应对维数不固定的场景。比如你写了一个通用函数接受积分维度ndim可以这么用def ndim_integral(ndim, f, bounds_list): # bounds_list 是一个长度为 ndim 的列表 return nquad(f, bounds_list)被积函数的参数个数要和区间列表长度一致否则运行时就会报签名不匹配。这种抽象在采样仿真和模型校准中很常见因为算法要适配不同维度的参数空间不可能为每个维度都写一个tplquad调用。5. 性能优化、精度控制与边界陷阱5.1 嵌套积分的性能有多慢dblquad确实不算快。因为它内部对每一层都做自适应积分函数调用次数会指数增长。一个简单的二重积分可能只要几百次函数求值但一个高精度要求的 4 重积分可能要调用百万次。实际案例有次我用nquad算一个 5 维数值积分被积函数里含了稀疏矩阵求逆。结果跑了十几分钟最后我把被积函数向量化并降低误差要求才在合理时间内收敛。所以维数一高必须先想清楚“我要需要多少位有效数字”。默认精度epsabs1.49e-8在很多场景下过于奢侈放宽到1e-6能快一个数量级。result, error dblquad(f, 0, 1, lambda x: 0, lambda x: 1, epsabs1e-6, epsrel1e-6)5.2 奇异边界与数值警告做物理计算时经常遇到边界上有奇异点比如积分区域在 (x0) 处边界函数的导数不存在。dblquad虽然有一定鲁棒性但如果内部采样正好触碰了奇异点就会出现RuntimeWarning: invalid value encountered in sqrt之类的警告。处理办法之一是把积分区间拆开把奇异点作为区间分界点另一种方式是给被积函数加一个微小的偏移比如把1/y写成1/(y 1e-12)前提是工程精度允许这样处理。我自己踩过最隐蔽的坑是边界函数在区间端点返回了nan但默认容差下积分器还继续迭代最后误差估计暴涨。排查只靠打印被积函数值完全不够必须把边界函数也打印出来。5.3 用一维积分嵌套替代 dblquad有时候dblquad反而不好用因为它对被积函数签名有强制要求。如果你已经写好了f(x, y)而非f(y, x)可以用两层quad嵌套实现同样的效果from scipy.integrate import quad def f(x, y): return np.exp(-x**2 - y**2) inner lambda y: quad(lambda x: f(x, y), 0, 1)[0] result, error quad(inner, 0, 1)这种方法在需求灵活时很实用尤其是当内层积分上下限依赖外层变量时可以完全自定义逻辑。缺点是自己手动管理误差传递外层积分不知道内层积分误差是多少。通常如果内层误差远小于外层容差问题不大如果误差量级相仿最终结果的可信度会被削弱。5.4 不要盲目相信默认误差估计dblquad返回的error是算法自己估计的不代表真实误差。真实误差可能更大尤其在被积函数剧烈震荡或者边界函数不光滑时。我习惯用对称性做抽查如果积分区域和函数都有对称性算一次全区域和算一次半区域乘以2看结果是否一致不一致就说明精度有问题。6. 实用场景几何体积、期望值与符号验证6.1 判断点是否在复杂区域内几何体积计算除了积分本身多重积分还能用来算高维“体积”。例如三维空间里判断一个不规则体是否在某区域内本质是在算一个指示函数的积分。指示函数不是连续函数数值积分处理它效率很低但偶尔可以用平滑的 sigmoid 近似。from scipy.integrate import tplquad import numpy as np def indicator(z, y, x): # 区域x^2y^2z^2 1 if x**2 y**2 z**2 1: return 1.0 else: return 0.0这种写法能跑但慢且精度不稳。除非只是验证粗数量级否则不如参数化变换或者用蒙特卡洛。6.2 与 sympy 符号结果交叉验证如果你要发布代码给别人用验算步骤不能省。我的习惯是先用sympy做一个小规模符号积分验证公式是否正确再用scipy验算大规模数值。比如算 (\int_{0}^{1}\int_{0}^{x} x^2y,dy,dx)符号积分结果是 (\frac{1}{12})用dblquad验证from scipy.integrate import dblquad def f(y, x): return x**2 * y result, _ dblquad(f, 0, 1, lambda x: 0, lambda x: x) print(result)看到0.08333333333333333基本就可以放心。符号和数值互相印证能过滤掉绝大多数公式书写错误。6.3 批量参数扫描的工程技巧在工程中通常你不是只算一次积分而是要扫一个参数网格。比如研究温度对某个响应的影响得扫描几十个温度值。这时候你要避免在循环里重复构造边界函数更不要每个温度点都新建lambda。正确做法是写一个工厂函数def make_integrand(param): def integrand(y, x, paramparam): return param * np.exp(-x**2 - y**2) return integrand results [] for p in temp_grid: f make_integrand(p) val, err dblquad(f, 0, 1, lambda x: 0, lambda x: 1) results.append(val)如果维度特别高还应该考虑缓存边界函数、预计算不依赖积分变量的部分。这些细节看着琐碎但一跑批量实验就知道差距。6.4 对比蒙特卡洛积分当维数达到 4 以上dblquad/nquad的自适应算法会迅速变慢此时要考虑蒙特卡洛积分。虽然精度不如自适应方法稳定但收敛速度只与维数无关实际误差随采样数平方根下降。我通常这样判断维数低于 4、函数相对光滑首选dblquad/nquad维数高、区域形状诡异或者被积函数噪声大用蒙特卡洛更实际。需要注意蒙特卡洛的结果每次随机加固定随机种子才好复现。rng np.random.default_rng(42) N 100_000 samples rng.uniform([0, 0], [1, 1], size(N, 2)) values np.exp(-samples[:,0]**2 - samples[:,1]**2) mc_result values.mean() mc_error values.std(ddof1) / np.sqrt(N)对比dblquad的高精度结果你会发现蒙特卡洛的误差并不差但速度受限于随机数生成和向量化程度。7. 常见报错与避坑排查表以下是这几年写scipy多重积分时最常遇到的报错和解决办法。报错信息常见原因解决办法ValueError: invalid callable specified边界函数传成了数值把常数边界改成lambda x: 0或lambda x, y: 0TypeError: f() takes 2 positional arguments but 3 were given被积函数参数数量和积分维度不匹配检查nquad的维数以及被积函数签名是否(y, x)而非(x, y)IntegrationWarning: The maximum number of subdivisions (50) has been achieved函数震荡太严重或区域边界不平滑增大limit参数或把积分区间切分段RuntimeWarning: invalid value encountered in double_scalars边界函数定义了无意义区间打印边界函数的输入输出检查是否出现nan或复数结果与理论值差很多内外层边界顺序写反检查gfun/hfun对应的变量是不是被积函数里的第一参数7.1 参数顺序自查口诀一个我屡试不爽的自查方法先看dblquad的数学约定是f(y, x)。如果你习惯写出f(x, y)就在被积函数外面加一层 wrapperdef f(x, y): return x**2 y result, _ dblquad(lambda y, x: f(x, y), 0, 1, lambda x: 0, lambda x: 1)这个方法能无损迁移已有代码不至于改完函数签名后把公式弄错。7.2 内层边界依赖外层变量的方向错误边界函数gfun(x)一定是内层变量的下界不是外层变量。有人写lambda y: 0结果外层变量的积分范围变成表达式了直接报错。统一原则是哪个变量在最内层边界函数就最后调用它。7.3 用简单阶梯函数做预测试在正式跑复杂积分之前我每次都先用一个常值函数验证边界是否正确。比如积分区域是个单位圆我先把被积函数改成 1得到圆的面积 (π)。如果这一步都对不上说明边界写错了不需要检查后面的被积函数。8. 一次完整的工程实操复盘最后用一个完整例子把前面的东西串起来。假设要计算环形区域上的二维高斯积分区域是内径为 (r_11)、外径为 (R2) 的圆环被积函数是零均值、方差 (\sigma^21.5) 的二维高斯密度。数学上环形区域不方便用直角坐标的单一积分式表达用极坐标最方便但为了演示dblquad处理嵌套边界我直接用直角坐标。直角坐标下环形区域无法用单个 (y) 边界函数简洁表达因为对于某给定的 (x)内圆边界可能出现在上下两个区间。这种区域最好拆成多个积分段先用极坐标变量替换或者干脆用nquad加指示函数。这里演示更通用的指示函数方式from scipy.integrate import nquad import numpy as np sigma 1.5 def gaussian_ring(y, x, sigma): r2 x**2 y**2 if r2 1 and r2 4: return (1 / (2 * np.pi * sigma**2)) * np.exp(-r2 / (2 * sigma**2)) else: return 0.0 result, error nquad( gaussian_ring, [[-2, 2], [-2, 2]], args(sigma,) ) print(result, error)这段代码能跑但效率不高因为大量采样点落在环外函数直接返回 0白算。如果对性能有要求更好的做法是改极坐标[ \int_0^{2\pi} \int_1^2 \frac{1}{2\pi\sigma^2} e^{-r^2/(2\sigma^2)} r,dr,d\theta ]这时内层积分只依赖 (r)外层积分被积函数与 (\theta) 无关结果直接是 (2\pi) 乘以内层。当然我们在这里是演示工具用法实际问题里一定要先想数学化简再上数值方法——好的数学变换永远是性能的第一来源。跑完这组代码你会发现自己对dblquad的边界机制、nquad的指示函数写法、参数args传参都熟悉了。以后遇到更复杂的积分比如区域由不等式组约束、函数带多参数、积分维度超过 3路径也都清晰了。9. 写在最后的一点个人经验用scipy求重积分这个东西看起来只是个 API 调用但真正决定代码能不能用的往往是你对被积函数、积分区域的理解。dblquad调不对90% 的问题出在“顺序”两个字上变量顺序、边界函数顺序、参数顺序。只要把顺序理清楚剩下的事交给自适应算法就行。我个人实际使用中最建议的做法是先在纸上把二重积分写成具体的嵌套积分形式明确哪个是外层变量、哪个是内层变量、边界依赖谁的函数然后再翻译成代码。数学生化没做好任何库都救不了你。另外调试时多用简单常函数验证边界再换真实被积函数。这一步看着蠢但能省下大把排查时间。再分享一个细节如果你持续做大量多维积分建议把常用的被积函数和区域定义写成一个配置字典用partial或闭包把参数绑好避免循环里反复定义函数。代码可读性和性能都会好很多。后续如果有时间我会再整理一篇专门讲高维积分性能优化和并行计算的文章敬请期待。

相关新闻

如何快速安装kr并配对Krypton手机App:新手快速上手教程

如何快速安装kr并配对Krypton手机App:新手快速上手教程

【免费下载链接】kr DEPRECATED A dev tool for SSH auth Git commit/tag signing using a key stored in Krypton. 项目地址: https://gitcode.com/gh_mirrors/kr/kr 点击查看 免费下载 ⚠️ 先说重点:kr 项目已标记为 DEPRECATED(不再维护…

2026/10/18 18:18:57 阅读更多 →
广度优先搜索BFS核心解析:队列原理与最短路径实战

广度优先搜索BFS核心解析:队列原理与最短路径实战

1. 从迷宫到地图:为什么你该重新认识广度优先搜索先讲一个我真实踩过的坑。早些年做某个跨平台系统的路径规划模块,拿到需求第一反应是深度优先搜索——代码写得快,递归一梭子下去,小地图跑得飞起。结果数据量一上来,地…

2026/10/19 17:57:57 阅读更多 →
传纸条P1006双状态DP详解:从状态设计到滚动数组优化

传纸条P1006双状态DP详解:从状态设计到滚动数组优化

P1006 传纸条,我第一次见是在一份动态规划题单里,题目包装得很校园:你传我、我传你,中间每个格子还标着善意值。剥掉故事外壳,它其实是个需要把两条路径放在同一个 DP 状态里一起规划的双状态DP问题。很多做过“方格取…

2026/10/19 9:43:30 阅读更多 →

最新新闻

具身智能认知架构:从脑到本体的神经符号融合与工程落地

具身智能认知架构:从脑到本体的神经符号融合与工程落地

1. 具身智能认知架构到底在解决什么问题1.1 从一个尴尬的现状说起做了几年机器人相关项目的人大概都有这种体会:机械臂在结构化环境里跑得挺稳,抓取、码垛、拧螺丝这些任务,只要场景不变、光照不变、物体位置固定,成功率能到99%以…

2026/10/19 22:24:16 阅读更多 →
5个AI工具让创业者效率翻倍:会议纪要、内容生成、数据解读、客户跟进、流程自动化

5个AI工具让创业者效率翻倍:会议纪要、内容生成、数据解读、客户跟进、流程自动化

如果只给自己留一个判断标准来选AI工具,我会选这一个:它能不能把一个星期里重复十几次的机械动作,压缩成一次性的规则和提示词。创业者最值钱的不是执行力,而是判断力和决策质量,但现实是,大部分人的精力都…

2026/10/19 22:23:15 阅读更多 →
Atlas数据库迁移实战:声明式与版本化工作流解析

Atlas数据库迁移实战:声明式与版本化工作流解析

1. Atlas是什么:一个让数据库变更不再“失控”的迁移工具1.1 先说我遇到的一个真实迁移事故如果你维护过几年数据库,大概率见过这种场景:测试环境和生产环境的表结构悄悄对不上了,问了一圈没人知道谁动过,git记录里也查…

2026/10/19 22:23:15 阅读更多 →
AI写作工具合规使用指南:提升效率与规避学术不端风险

AI写作工具合规使用指南:提升效率与规避学术不端风险

抱歉,这个任务我没法执行。你提供的标题涉及一类明确有合规风险的工具——“降AIGC工具”,加上“导师推荐”“千笔AI VS Checkjie”“本科生专属”等表述,语义上指向帮助学生规避抄袭检测或AI检测的灰色服务。这类内容属于学术不端范畴&#…

2026/10/19 22:21:05 阅读更多 →
嵌入式Linux摄像头应用实战:i.MX6ULL+OV5640+V4L2+QT

嵌入式Linux摄像头应用实战:i.MX6ULL+OV5640+V4L2+QT

做嵌入式Linux下的摄像头应用,我踩过的坑多数不在应用层。刚开始拿一块基于i.MX6ULL的板子,接上OV5640摄像头模组,想着跑一个QT相机界面,以为难点在UI布局,结果光是让画面稳定流畅地出现在屏幕上,就把从驱动…

2026/10/19 22:16:59 阅读更多 →
从控件到像素:移动端AI Agent操作真机的三大考点

从控件到像素:移动端AI Agent操作真机的三大考点

最近很多团队开始做一件事:把 AI Agent 接到一台真实的手机上,让它像人一样打开 App、点按钮、填信息、下单、发消息。不是模拟器,不是纯接口调用,是实实在在握住一台手机操作。这件事在近两年突然火起来,原因很直接—…

2026/10/19 22:16:59 阅读更多 →

日新闻

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

频率跟踪型PWM电源设计:臭氧发生器谐振点漂移与软开关实现

简介:本资源为电源技术方向的学术研究文档,聚焦介质阻挡放电型臭氧发生器电源的频率跟踪型PWM控制策略,面向电力电子、高压电源及臭氧应用领域的科研人员与工程技术人员。针对负载呈容性、等效电容随外加电压升高而增大、谐振频率随之漂移的难…

2026/10/19 0:00:47 阅读更多 →
Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

Vibe Coding 遇上 TaoToken:把开发者思维圣殿的灵感流接入统一 Key 通道

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 0:00:47 阅读更多 →
HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

HundredCV-Chat话题建模实战教程:利用4,871个内置话题标签构建主题分析系统

【免费下载链接】HundredCV-Chat 项目地址: https://ai.gitcode.com/hf_mirrors/Jax-dan/HundredCV-Chat 点击查看 免费下载 HundredCV-Chat 是一个由 100 位青年简历数据开发而来的中文多轮对话数据集,共包含 24,750 组日常闲聊对话和 4,871 个话题标签…

2026/10/19 0:00:47 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/19 10:02:04 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/19 1:30:52 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 2:54:50 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/19 9:10:22 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/18 12:16:16 阅读更多 →