线性方程组的最小二乘解

机器学习数学基础基本例题【四】:最小二乘问题 指的是,给定一个矩阵A和向量b,寻找一个向量x,使得Ax≈b的误差最小。最小二乘问题可以表示为:其中||.||表示向量的2-范数。指的是,满足上述最小二乘问题的向量x。指的是,在满足Ax=b的条件下,使得向量x的2-范数最小的解。指的是,在满足Ax=b的条件下,使得向量x的2-范数最小,并且满足Ax≈b的误差最小的解。对于超定方程组Ax=b(A的行数大于列数),由于方程组无解,我们可以通过。 阅读详情
AI摘要

本文介绍超定线性方程组的最小二乘解法,包括代数推导、矩阵微积分工具及向量空间推导三种方法,并提供求解的常用工具和技术。

1. 背景

        对于线性方程组可以根据方程数量与未知数数量分为欠定方程、适定方程和超定方程,欠定方程是指方程数量少于未知数数量,适定方程是指方程数量等于未知数数量,超定方程是指方程数量多于未知数数量。对于存在存在唯一解的情况下,只需要简单的矩阵运算就可以得到解,如:
Ax=b\ -> \ x=A^{-1}b,但实际工程中几乎只会出现超定方程组,而且是一个无解的超定方程组。虽然通常情况下超定方程组是无解的,但为其求解一个近似解,也称作最小二乘解。

2. 线性方程组的最小二乘解-代数推导

        在工程中通常有一堆测量数据,然后为这个系统找到一个数学模型:

f(x_1,x_2···x_n)=y\\ a_1x_1+a_2x_2+···+a_nx_n=y

        将这一堆测量数据带入模型:

a_{1}x_{11}+a_{2}x_{12}+···+a_{n}x_{1n}=y_1\\ a_{1}x_{21}+a_{2}x_{22}+···+a_{n}x_{2n}=y_2\\ ···\\ a_{1}x_{m1}+a_{2}x_{m2}+···+a_{n}x_{mn}=y_m

        上述线性方程组中,x并不是未知量,相反a才是未知量,所以上述是关于a的线性方程组,根据最小二乘的思想---a取何值时误差和最小:

e(a_1,a_2···a_n)=\sum_{n=1}^m (a_{1}x_{i1}+a_{2}x_{i2}+···+a_{n}x_{in}-y_i)^2

        分别对a_1~a_n求偏导:

\frac{\partial e(a_1,a_2···a_n)}{\partial a_1}=2\sum_{i=1}^m x_{i_1}(a_{1}x_{i1}+a_{2}x_{i2}+···+a_{n}x_{in}-y_i)=0\\ \frac{\partial e(a_1,a_2···a_n)}{\partial a_2}=2\sum_{i=1}^m x_{i_2}(a_{1}x_{i1}+a_{2}x_{i2}+···+a_{n}x_{in}-y_i)=0\\···\\ \frac{\partial e(a_1,a_2···a_n)}{\partial a_n}=2\sum_{i=1}^m x_{i_n}(a_{1}x_{i1}+a_{2}x_{i2}+···+a_{n}x_{in}-y_i)=0

        上式进一步化简得到:

线性方程组AX=b,AX=0以及非线性方程组的最小二乘解(解方程组->优化问题) p=q表示A矩阵是个方阵,又因为是列满秩,所以是一个满秩的方阵,由于满秩的性质那么A的行列式不等于0。这时候Ax=y这个方程就很好求了,方程左右乘A的逆,就有唯一解了。:就是我们要求的q个变量x是互相无关的(没有向量可用有限个其他向量的线性组合所表示),必须要把这q个变量都求出来才行,不能说求出q-1个就能把q个变量决定。,这同时也说明了矩阵只适用于对X做线性变换的性质,对于做非线性变换的变换,矩阵表示不出来。,让X在满足条件的情况下使得║AX║的平方最小,于是就构造了一个带约束的最小二乘问题。 阅读详情

相关推荐

超定线性方程组最小二乘解推导

文章目录超定线性方程组定义超定线性方程组的解最小二乘法公式推导最小二乘解 超定线性方程组 定义   超定方程组是指方程个数大于未知量个数的方程组。对于方程组Ra=yRa = yRa=y,RRR为m×nm \times nm×n的矩阵,如果RRR列满秩,且m>nm>nm>n,则方程组没有精确解,此时称方程组为超定方程组。即任意x1,x2,…,xnx_1, x_2, \dots, x...

@清欢_ 5043

Matlab--用最小二乘法确定指数函数的系数(牛顿法解二元非线性方程组)

Matlab--用最小二乘法确定指数函数的系数(涉及牛顿法解非线性方程组)

show-er-打怪之路的博客 8566

最小二乘法的几何解释

用通俗易懂的语言,从列向量的几何角度解释了最小二乘法.

Macer3的博客 1万+

不相容方程组的最小二乘解

不相容方程组的最小二乘解 不相容方程组的最小二乘解 Ax=bAx=bAx=b的最小二乘解 最小二乘解定理 如果给定的线性方程组$Ax=b​$无解,那么我们希望退而求其次——求一个近似的$x^\star​$,使得**残差向量**(Residual Vector)$r=Ax^\star(拟合值)-b(观测值)​$尽可能的小。在实际应用方面,任何最小化残差向量的方法,都可以用于寻找数据...

renjiewen1995的专栏 6563

[最优化]求解线性方程组(1)

求解线性方程组(1) 最小二乘分析 在本文中将讨论线性方程组中的一种情况的求解,即考虑线性方程组 Ax=bAx=b Ax=b 其中,A∈Rm∗n,b∈Rm,m≥n,rank(A)=nA∈Rm∗n,b∈Rm,m≥n,rank(A)=nA\in R^{m*n},b\in R^{m},m\ge n,rank(A)=n,在这种情况下,未知数的数量小于方程的数量,所以在很大可能上bbb不在AA...

Math & Code 2421

Numpy.linalg模块的lstsq()进行线性回归拟合(数学建模)

建模中经常使用线性最小二乘法,实际上就是求超定线性方程组(未知数少,方程个数多)的最小二乘解,前面已经使用pinv()求超定线性方程组的最小二乘解.下面再举两个求最小二乘解的例子,并使用**numpy.linalg模块的lstsq()**函数求解. 先要明确这个函数的原义是用来求超定线性方程组的: 例如下面的方程组: 系数矩阵的第一列相当于给定了x的观测值 X=[0,1,2,3].transpose 右边的结果矩阵相当于给定了y的观测值 Y=[-1,0.2,0.9,2.1].transpos..

ChadWick的博客 1万+

线性方程组的类型及求解(二)(备份草稿)

前言 本文是笔者结合本学期《矩阵理论》课程中所学内容,重点归纳整理挖掘矩阵信息的方法技巧

SJTU1996的博客 1503

线性方程组求解

一.利用矩阵除法: 常出现的错误:/,\造成的矩形维度不一致情况。 错误示范: A=[1,1,1 %x1+x2+x3=6 0,4,-1 %4x2-x3=5 2,-2,1] %2x1-2x2+x3=1 b=[6;5;1] x=b/A %出现矩形维度不一致,应为原式为Ax=b,维度一致需要x=A\b 正确代码: A=[1,1,1 %x1+x2+x3=6 0,4,-1 %4x2-x3=5 2,-2,1] %2x1-2x2+x3=1 b=[6;

weixin_64584123的博客 1146

R语言:SVD分解求解线性方程组AX=b

R语言:SVD分解求解AX=b 函数svd的用法 svd分解X,使用函数svd,返回一个列表T,顺序是d, u, v。 X=UDV′X=UDV′X=UDV' T <- svd(X) U <- T$u D <- T$d V <- T$v 这里T是list,注意这里的U和V是矩阵,D是向量,想要恢复原矩阵X,需要: Y <- U %*% diag(D) %*...

pure小清新的博客 6118

VSLAM基础(六)————超定线性方程组的解法

vslam前端部分基本讲完了,这里在进入后端之前,先讨论下超定线性方程组的解法,毕竟在slam问题里我们经常会遇到要解超定方程的时候。当然这篇只是介绍一下超定线性方程的解法,非线性方程等到介绍BA时再写吧。 一、Ax=b的解法 对于A矩阵n*m时,一般若n大于m,我们就说这个方程为超定没有解,当然我们slam里一般关心最小二乘解。 线性方程组 可能无解。即任意一组    都可能使 ...

potxxx的博客 6866

矩阵论 第三章 矩阵的广义逆与线性方程组

广义逆主要是为了把逆计算推广到奇异矩阵和非方阵. 广义逆矩阵是Moore首先明确提出来, 凭借他天才的几何直觉,利用正交投影算子来定义广义逆,但由于这类定义较为抽象而且不能进行有效运作,所以在之后的30年并未引起人们的注意.直到1955年,Penrose以更直接明确的代数形式给出了Moore广义逆矩阵的定义,他用四个方程再次定义了广义逆,并证明了A+的唯一性,还建立了A(1)与线性方程组Ax=b的

剑心琴魄 5801

线性代数 --- 投影与最小二乘(下),多元方程组的最小二乘解与向量在多维子空间上的投影

多变量方程组的最小二乘,向量到多维子空间上的投影。

松下J27录放机 979

Matlab | Matlab从入门到放弃(10)——线性方程组

博主github:https://github.com/MichaelBeechan 博主优快云:https://blog.youkuaiyun.com/u011344545 代码下载:https://github.com/MichaelBeechan/Matlab-From-Zero-To-One 1、线性方程组 2、通解 3、方阵方程组 4、非奇异系数矩阵 5、奇异系数矩阵 6、增广矩阵 7、超定方程组...

尘世冰封的专栏 1562

74、线性与非线性方程组求解:原理、方法与实例

本文深入探讨了线性与非线性方程组的求解原理、方法及实际应用。内容涵盖线性方程组的精确解、超定系统的最小二乘解、齐次方程组的非平凡解,以及非线性最小二乘问题的建模与优化方法。通过多个Java代码示例,展示了如何使用Apache Commons Math库进行求解,并结合一维曲线拟合与几何圆拟合等实例,说明了非线性最小二乘法在实际问题中的应用。此外,还提供了求解方法的选择建议、优化策略及典型应用场景分析,帮助读者全面掌握相关技术。

ik678901234的博客 178

Matlab:线性方程组

Matlab:线性方程组

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1533

matlab之解线性方程组

有方程组AX=B; 其中A是m x n的矩阵. 如果m=n, 方程有精确解. 如果m>n, 方程没有精确解, 但可以求最小二乘解. A\B, lsqminnorm(A,B) 和pinv(A)*B都可以用. 如果m<n, A低秩, X有无穷多解, 这里注意用A\B求得的是令norm(AX-B)最小, 而lsqminnorm和pinv(A)*B不仅令norm(AX-B), 也会令norm(X)最小. reference: 线性方程的最小范数最小二乘解 对线性方程组 Ax = B 求解 ...

落日之城 1915

MATPOWER的安装详细教程

MATPOWER的安装包实际为一个程序包,安装教程很简单,详见本文。

半个月亮Zz的博客 3万+

TensorFlow_PyTorch实战:构建AI人工智能回归模型

回归分析是机器学习的核心任务之一,用于预测连续型目标变量(如房价、股票价格、用户留存时间等)。基础线性回归模型的数学原理与代码实现多项式回归模型的过拟合处理与正则化技巧自定义数据集加载与数据预处理流程动态图(PyTorch)与静态图(TensorFlow)的编程范式对比模型评估指标与可视化分析方法核心概念:对比两大框架的架构设计,解析回归模型核心组件数学原理:推导线性回归的假设函数、损失函数及优化算法算法实现:提供TensorFlow和PyTorch的完整代码示例项目实战。

AI天才研究院 1429

D2D与C2C高速互联技术对比:从封装到性能的全面解析

本文全面解析了Die-to-Die(D2D)与Chip-to-Chip(C2C)高速互联技术的差异,从封装形式、传输距离到性能指标进行深度对比。D2D技术在带宽、延迟和能效方面具有显著优势,适用于高性能计算和AI加速;而C2C技术则更适合车载电子系统等长距离传输场景。文章还探讨了UCIe标准化趋势,并提供了技术选型的实用建议。

weixin_29197051的博客 553

龙头复盘神器/复盘于导出工具最新版5.6

龙头复盘神器,复盘于导出工具

初入python踩过的坑 8234

VMware Converter 6.2.0保姆级教程:从物理机到ESXi主机的完整迁移指南(含常见错误排查)

本文提供VMware Converter 6.2.0从物理机迁移至ESXi主机的完整保姆级教程。详细解析了迁移前的环境规划、核心转换过程步骤、版本差异对比,并重点针对代理安装失败、任务卡顿、虚拟机无法启动等常见错误提供了实战排查与解决方案,确保P2V迁移顺利进行。

sam99的博客 380

博途 V16(TIA portal V16)安装教程

本文提供了西门子TIA Portal V16软件的完整安装指南。内容包括百度网盘下载链接(提取码kv69)、详细安装步骤(关闭安全保护、典型安装设置)、授权破解方法,以及PLCSIM仿真功能的使用说明。重点演示了S7-1200 PLC程序的仿真过程,解析了仿真界面各元素功能,包括状态指示灯(RUN/STOP/ERROR)、操作按钮(RUN/STOP/MRES)和网络接口状态等。通过图文并茂的方式,完整呈现了从软件安装到PLC程序仿真的全流程操作。

lingchen1906的博客 6702

Diffusion Models扩散模型与深度学习(数学原理和代码解读)

​ 此前GANs霸占各大顶会很多年,DDPM的出现让人耳目一新!经过这两年的发展,Diffusion Models能在图像生成、超分辨率重建、点云生成、语音生成等领域达到SOTA。这篇文章旨在帮助没有了解过的读者入门,《Diffusion Models与深度学习专栏》已经写了将近三十篇文章,既有原理公式和必备基础知识的讲解,也有代码详细实战解读,还有前沿热门应用,欢迎读者订阅。

沉迷单车的追风少年 4万+

最优化方法与数学建模

在本篇博客中,我们将探讨最优化方法在数学建模中的应用。首先,我们将介绍几种常见的最优化方法,如梯度下降、牛顿法和遗传算法。接着,我们将详细阐述这些方法的原理和算法。最后,我们将通过一个数学建模案例,展示如何使用Matlab实现这些方法。本文旨在为大家提供一个清晰的思路,以便更好地理解和应用最优化方法。

YOLO 439

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

上一篇: 数据求均值背后的原理 - 最小二乘法
下一篇: 用4种不同视角理解矩阵乘法
老Z先生
博客等级 码龄4年 417粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值