🧑‍🏫
liualexiang
  • Introduction
  • Azure
    • AKS Basic
    • AKS Spark
    • AZ ACR SYNC
    • Azure CMI SDWAN
    • Azure LB DeepDive
      • Azure LB DeepDive
    • Azure Service Principal Basic
    • Azure Internal VM Network Connectivity
      • Azure Internal VM Network Connectivity
    • Azure Cli Build
    • Azure Vm Memory Monitor
  • Blockchain
    • BTC
  • CRISPR
    • 使用Parallel_Cluster提升CRISPA效率
  • OpenSource
    • ElasticSearch
      • ES Get Started
      • ES Search Query
      • Kibana 可视化
      • Logstash配置
    • Ansible 基础
    • Infra As Code
      • Pulumi Get Started
      • Terraform Basic
    • ZooKeeper 基础
    • RPC与REST
    • 使用Python申请大量内存测试
    • 使用TPC_DS产生压测数据
    • Superset
      • Superset部署手册
    • 代码扫描
    • Git
      • Git Basic
      • Github Action Basic
      • Gitlab与AzureAD集成
      • Gitbook 基础教程
    • K8S
      • enter_node
      • K8s X509 Client Cert
      • K8s Basic
      • K8s Oidc
      • Docker 基础
      • helm基础
      • K8S_Secrets管理
      • 深入了解K8S
      • 混沌工程
      • Istio
      • 生态
      • CRD开发
      • k8s网络
    • Cloud_Custodian
    • Jenkins Basic
    • Nginx
    • ETCD
    • 正则
    • VictoriaMetrics
    • Kafka
  • MySQL
    • MySQL 调优
  • Linux
    • SSH Tunnel 上网
    • 内存管理
    • 在Linux系统中通过LUKS加密磁盘
    • 量子计算 Basic
    • IO多路复用
    • Iptables
    • tmux和screen
    • Systemd
    • OS 基础
    • jq基础
    • yum
    • neovim
  • Web
    • Html Css
    • Web部署
    • 缓存
  • Programming
    • 算法
      • 返回list中最大生序子序列长度
    • Python技巧
      • Python的语法糖
      • Python常用装饰器
      • AsyncIO基础
      • 自动化测试pytest
      • python中的下划线
      • 面向对象
      • Python的坑
      • Python配置文件管理
      • HTTP Stream Response
      • Python项目管理
    • 设计模式
      • 设计模式
      • 面向对象的思想
      • 编程概念
    • Go
      • Go 基础
      • Go常用功能
      • 结构体入门
    • 前端
    • Vue
    • NodeJS
  • Math
    • 多项式插值法
  • Security
    • HTTP常见攻击
    • 加密与签名
    • RSA
    • ECDSA
  • Solidity
    • Solidity基础
    • Blockchain Testnet Faucet
  • Tools
    • 视频处理ffmpeg
    • IDE配置
    • iTerm2美化
    • 密码管理
    • FRP配置
    • 工具集
由 GitBook 提供支持
在本页
  1. Math

多项式插值法

多项式插值法,指的是给出一些离散的数据点,通过插值法,找到这些点的曲线(使离散点变平滑)的一种方法

拉格朗日插值法

比如有N个数据点,先计算第一个点的构造一个独立的多项式,使多项式在第一个点这一项的值为1,其他项的值都是0。再基于第二个点构造第二个多项式,依然让第二个点的值为1,其余项为0,以此类推,一直到最后一个数据点位置。之后整体函数,则为每一项的值,乘以每一个多项式(因为每一个多项式都是1,乘以值,就是该项的值,其余项都是0)。

示例:假设我们有 3 个点:((1, 2)), ((2, 3)), ((4, 1))。我们可以用拉格朗日插值法来构造插值多项式 (P(x))

首先构造每个基函数:

  • (L_0(x)) 是通过点 (x_0 = 1) 构造的基函数:

    L0(x)=(x−2)(x−4)(1−2)(1−4)=(x−2)(x−4)3L_0(x) = \frac{(x - 2)(x - 4)}{(1 - 2)(1 - 4)} = \frac{(x - 2)(x - 4)}{3}L0​(x)=(1−2)(1−4)(x−2)(x−4)​=3(x−2)(x−4)​
  • (L_1(x)) 是通过点 (x_1 = 2) 构造的基函数:

    L1(x)=(x−1)(x−4)(2−1)(2−4)=(x−1)(x−4)−2L_1(x) = \frac{(x - 1)(x - 4)}{(2 - 1)(2 - 4)} = \frac{(x - 1)(x - 4)}{-2}L1​(x)=(2−1)(2−4)(x−1)(x−4)​=−2(x−1)(x−4)​
  • (L_2(x)) 是通过点 (x_2 = 4) 构造的基函数:

    L2(x)=(x−1)(x−2)(4−1)(4−2)=(x−1)(x−2)6L_2(x) = \frac{(x - 1)(x - 2)}{(4 - 1)(4 - 2)} = \frac{(x - 1)(x - 2)}{6}L2​(x)=(4−1)(4−2)(x−1)(x−2)​=6(x−1)(x−2)​

然后,插值多项式 (P(x)) 为:

P(x)=2⋅L0(x)+3⋅L1(x)+1⋅L2(x)P(x) = 2 \cdot L_0(x) + 3 \cdot L_1(x) + 1 \cdot L_2(x)P(x)=2⋅L0​(x)+3⋅L1​(x)+1⋅L2​(x)

拉格朗日插值法的原理在于使用特定构造的基函数 (L_i(x)) 使得多项式 (P(x)) 能够精确通过给定的插值点。每个基函数在某个点处取值为 1,而在其他点处取值为 0,这保证了插值多项式能在每个给定点上准确取值。

所以从这个示例上,就能看出:拉格朗日插值法,得到的函数的阶数,如果N个样本点,则阶数最多是 N - 1 阶。如果数据量很大的话,速度会很慢.

拉格朗日插值法的复杂度是 O(n2)O(n^2)O(n2)

上一页Math下一页Security

最后更新于7个月前