当前位置: 首页 > news >正文

数值分析——插值法(二)

文章目录

  • 前言
  • 一、Hermite插值
    • 1.两点三次Hermite插值
    • 2.两点三次Hermite插值的推广
    • 3.非标准型Hermite插值
  • 二、三次样条插值
    • 1.概念
    • 2.三弯矩方程


前言

之前写过Lagrange插值与Newton插值法的内容,这里介绍一些其他的插值方法,顺便复习数值分析.


一、Hermite插值

实际应用中,为了使插值函数更好地切合原函数,不仅要求节点的函数值相等,还要求导数值相同,甚至高阶导数也相等,这类插值问题称为Hermite插值

1.两点三次Hermite插值

给定y=f(x)在节点x0,x1上的函数值和导数值:
y j = f ( x j ) , m j = f ′ ( x j ) , j = 0 , 1. y_j=f(x_j),m_j=f'(x_j),j=0,1. yj=f(xj),mj=f(xj),j=0,1.
求多项式 H 3 ( x ) H_3(x) H3(x)满足插值条件
H 3 ( x j ) = y j , H 3 ′ ( x j ) = m j , j = 0 , 1. H_3(x_j)=y_j,H'_3(x_j)=m_j,j=0,1. H3(xj)=yj,H3(xj)=mj,j=0,1.
类似Lagrange插值多项式,我们可以设
H 3 ( x ) = y 0 α 0 ( x ) + y 1 α 1 ( x ) + m 0 β 0 ( x ) + m 1 β 1 ( x ) H_3(x)=y_0\alpha_0(x)+y_1\alpha_1(x)+m_0\beta_0(x)+m_1\beta_1(x) H3(x)=y0α0(x)+y1α1(x)+m0β0(x)+m1β1(x)
为三次Hermite插值多项式,其中 α 0 ( x ) , α 1 ( x ) , β 0 ( x ) , β 1 ( x ) \alpha_0(x),\alpha_1(x),\beta_0(x),\beta_1(x) α0(x),α1(x),β0(x),β1(x)称为Hermite插值基函数.
基函数满足如下条件:
α j ( x j ) = δ j i , α j ′ ( x i ) = 0 , β j ( x i ) = 0 , β j ′ ( x i ) = δ j i , i , j = 0 , 1 \alpha_j(x_j)=\delta_{ji},\alpha'_j(x_i)=0,\\\beta_j(x_i)=0,\beta'_j(x_i)=\delta_{ji},\\ i,j=0,1 αj(xj)=δji,αj(xi)=0,βj(xi)=0,βj(xi)=δji,i,j=0,1
其中 δ j i = { 1 j = i 0 j ≠ i \delta_{ji}=\begin{cases}1&j=i\\ 0&j\neq i \end{cases} δji={10j=ij=i


我们可以找到唯一的三次Hermite插值多项式(推导略),即
H 3 ( x ) = y 0 [ 1 + 2 l 1 ( x ) ] l 0 2 ( x ) + y 1 [ 1 + 2 l 0 ( x ) ] l 1 2 ( x ) + m 0 ( x − x 0 ) l 0 2 ( x ) + m 1 ( x − x 1 ) l 1 2 ( x ) H_3(x)=y_0[1+2l_1(x)]l^2_0(x)+y_1[1+2l_0(x)]l^2_1(x)\\+m_0(x-x_0)l^2_0(x)+m_1(x-x_1)l^2_1(x) H3(x)=y0[1+2l1(x)]l02(x)+y1[1+2l0(x)]l12(x)+m0(xx0)l02(x)+m1(xx1)l12(x)
这里的 l i l_i li为Lagrange插值基函数, l 0 ( x ) = x − x 1 x 0 − x 1 , l 1 ( x ) = x − x 0 x 1 − x 0 l_0(x)=\frac{x-x_1}{x_0-x_1},l_1(x)=\frac{x-x_0}{x_1-x_0} l0(x)=x0x1xx1,l1(x)=x1x0xx0

2.两点三次Hermite插值的推广

x i ∈ [ a , b ] ( i = 0 , 1 , ⋯ , n ) x_i\in[a,b](i=0,1,\cdots,n) xi[a,b](i=0,1,,n)为n+1个互异节点,给定 y = f ( x ) y=f(x) y=f(x)在节点上的函数值和导数值: y j = f ( x j ) , m j = f ′ ( x j ) , j = 0 , ⋯ , n . y_j=f(x_j),m_j=f'(x_j),j=0,\cdots,n. yj=f(xj),mj=f(xj),j=0,,n.要求插值多项式 H 2 n + 1 ( x ) H_{2n+1}(x) H2n+1(x)满足插值条件
H 2 n + 1 ( x j ) = y j , H 2 n + 1 ′ ( x j ) = m j , j = 0 , ⋯ , n . H_{2n+1}(x_j)=y_j,H'_{2n+1}(x_j)=m_j,j=0,\cdots,n. H2n+1(xj)=yj,H2n+1(xj)=mj,j=0,,n.有n+1个函数值和n+1个导数值共2n+2个条件,可确定满足插值条件次数不超过2n+1次的多项式 H 2 n + 1 ( x ) H_{2n+1}(x) H2n+1(x).


公式:
H 2 n + 1 = ∑ j = 0 n { f ( x j ) [ 1 − 2 ( x − x j ) l j ′ ( x j ) ] l j 2 ( x ) + f ′ ( x j ) ( x − x j ) l j 2 ( x ) } H_{2n+1}=\sum_{j=0}^n \{f(x_j)[1-2(x-x_j)l'_j(x_j)]l^2_j(x)+f'(x_j)(x-x_j)l^2_j(x)\} H2n+1=j=0n{f(xj)[12(xxj)lj(xj)]lj2(x)+f(xj)(xxj)lj2(x)}
其中 l j ( x ) = ( x − x 0 ) ⋯ ( x − x j − 1 ) ( x − x j + 1 ) ⋯ ( x − x n ) ( x j − x 0 ) ⋯ ( x j − x j − 1 ) ( x j − x j + 1 ) ⋯ ( x j − x n ) l_j(x)=\frac{(x-x_0)\cdots(x-x_{j-1})(x-x_{j+1})\cdots(x-x_n)}{(x_j-x_0)\cdots(x_j-x_{j-1})(x_j-x_{j+1})\cdots(x_j-x_n)} lj(x)=(xjx0)(xjxj1)(xjxj+1)(xjxn)(xx0)(xxj1)(xxj+1)(xxn)

3.非标准型Hermite插值

给出的函数值和导数值不等的情况,例题:
在这里插入图片描述

二、三次样条插值

Hermite只保证函数连续或其一阶导数连续,满足不了二阶导数连续的问题. 针对这一问题,产生了样条插值.

1.概念

给定区间[a,b]一个划分:
a = x 0 < x 1 ⋯ < x n − 1 < x n = b a=x_0<x_1\cdots <x_{n-1}<x_n=b a=x0<x1<xn1<xn=b
若函数S(x)满足

  • 在每个小区间 [ x i , x i + 1 ] [x_i,x_{i+1}] [xi,xi+1]是分段三次多项式
  • 具有二阶连续导数,即 S ( x ) ∈ C 2 [ a , b ] S(x)\in C^2[a,b] S(x)C2[a,b]
  • 还满足插值条件: S ( x i ) = f ( x i ) = y i , i = 0 , 1 , 2 , ⋯ , n S(x_i)=f(x_i)=y_i,i=0,1,2,\cdots,n S(xi)=f(xi)=yi,i=0,1,2,,n

则称S(x)为f(x)在[a,b]上的三次样条插值函数,
S ( x ) = { s 0 ( x ) , x ∈ [ x 0 , x 1 ] , s 1 ( x ) , x ∈ [ x 1 , x 2 ] , ⋮ s n − 1 ( x ) , x ∈ [ x n − 1 , x n ] , S(x)=\begin{cases}s_0(x),&x\in [x_0,x_1],\\ s_1(x),&x\in [x_1,x_2],\\ \vdots\\s_{n-1}(x),&x\in [x_{n-1},x_n],\end{cases} S(x)= s0(x),s1(x),sn1(x),x[x0,x1],x[x1,x2],x[xn1,xn],
其中, s i ( x ) s_i(x) si(x) [ x i , x i + 1 ] ( i = 0 , 1 , 2 , ⋯ , n − 1 ) [x_i,x_{i+1}](i=0,1,2,\cdots,n-1) [xi,xi+1](i=0,1,2,,n1)上的三次多项式,设
s i ( x ) = a i x 3 + b i x 2 + c i x + d i ( i = 0 , 1 , ⋯ , n − 1 ) , s_i(x)=a_ix^3+b_ix^2+c_ix+d_i(i=0,1,\cdots,n-1), si(x)=aix3+bix2+cix+di(i=0,1,,n1),
且满足 s i ( x i ) = y i , s i + 1 ( x i + 1 ) s_i(x_i)=y_i,s_{i+1}(x_{i+1}) si(xi)=yi,si+1(xi+1). 由三次样条函数的定义可知, S ( x ) S(x) S(x)满足下列条件:
{ S ( x i − 0 ) = S ( x i + 0 ) ( i = 1 , 2 , ⋯ , n − 1 ) , S ′ ( x i − 0 ) = S ′ ( x i + 0 ) ( i = 1 , 2 , ⋯ , n − 1 ) , S ′ ′ ( x i − 0 ) = S ′ ′ ( x i + 0 ) ( i = 1 , 2 , ⋯ , n − 1 ) , S ( x i ) = y i ( i = 0 , 1 , 2 , ⋯ , n ) \begin{cases}S(x_i-0)=S(x_i+0)&(i=1,2,\cdots,n-1),\\ S'(x_i-0)=S'(x_i+0)&(i=1,2,\cdots,n-1),\\ S''(x_i-0)=S''(x_i+0)&(i=1,2,\cdots,n-1),\\ S(x_i)=y_i&(i=0,1,2,\cdots,n) \end{cases} S(xi0)=S(xi+0)S(xi0)=S(xi+0)S′′(xi0)=S′′(xi+0)S(xi)=yi(i=1,2,,n1),(i=1,2,,n1),(i=1,2,,n1),(i=0,1,2,,n)
每个 s i ( x ) s_i(x) si(x)有4个待定系数,所以S(x)共有4n个待定系数,故需4n个方程才能确定. 前面已经得到2n+2(n-1)=4n-2个方程,还缺2个方程. 实际问题通常对样条函数在两个端点处的状态有要求,即所谓的边界条件. 常用的边界条件如下:
第一类边界条件:给定函数在端点处的一阶导数,即
S ′ ( x 0 ) = f 0 ′ , S ′ ( x n ) = f n ′ S'(x_0)=f_0',S'(x_n)=f'_n S(x0)=f0,S(xn)=fn
第二类边界条件:给定函数在端点处的二阶导数,即
S ′ ′ ( x 0 ) = f 0 ′ ′ , S ′ ′ ( x n ) = f n ′ ′ S''(x_0)=f''_0,S''(x_n)=f_n'' S′′(x0)=f0′′,S′′(xn)=fn′′
第三类边界条件:设 f ( x ) f(x) f(x)是周期函数,并设 x n − x 0 x_n-x_0 xnx0是一个周期,于是要求 S ( x ) S(x) S(x)满足
S ′ ( x 0 ) = S ′ ( x n ) , S ′ ′ ( x 0 ) = S ′ ′ ( x n ) S'(x_0)=S'(x_n),S''(x_0)=S''(x_n) S(x0)=S(xn),S′′(x0)=S′′(xn)

2.三弯矩方程

S ′ ′ ( x j ) = M j , j = 0 , 1 , 2 , ⋯ , n S''(x_j)=M_j,j=0,1,2,\cdots,n S′′(xj)=Mj,j=0,1,2,,n,下面计算 S ( x ) S(x) S(x) [ x j , x j + 1 ] [x_j,x_{j+1}] [xj,xj+1]的表达式 s j ( x ) s_j(x) sj(x).由于 s j ( x ) s_j(x) sj(x)是三次多项式,故 s j ′ ′ ( x ) s''_j(x) sj′′(x)为线性函数,且 s j ′ ′ ( x j ) = M j , s j ′ ′ ( x j + 1 ) = M j + 1 s_j''(x_j)=M_j,s''_j(x_{j+1})=M_{j+1} sj′′(xj)=Mj,sj′′(xj+1)=Mj+1.由线性插值公式可得
s j ′ ′ ( x ) = x j + 1 − x h j M j + x − x j h j M j + 1 s''_j(x)=\frac{x_{j+1}-x}{h_j}M_j+\frac{x-x_j}{h_j}M_{j+1} sj′′(x)=hjxj+1xMj+hjxxjMj+1
其中 h j = x j + 1 − x j h_j=x_{j+1}-x_j hj=xj+1xj,求积分,可得
s j ( x ) = ( x j + 1 − x ) 3 6 h j M j + ( x − x j ) 3 6 h j M j + 1 + c 1 x + c 2 s_j(x)=\frac{(x_{j+1}-x)^3}{6h_j}M_j+\frac{(x-x_j)^3}{6h_j}M_{j+1}+c_1x+c_2 sj(x)=6hj(xj+1x)3Mj+6hj(xxj)3Mj+1+c1x+c2
将插值条件 s j ( x j ) = y j , s j ( x j + 1 ) = y i + 1 s_j(x_j)=y_j,s_j(x_{j+1})=y_{i+1} sj(xj)=yj,sj(xj+1)=yi+1代入,即课确定积分常数 c 1 c_1 c1 c 2 c_2 c2. 整理后可得 s j ( x ) s_j(x) sj(x)的表达式为 s j ( x ) = ( x j + 1 − x ) 2 6 h j M j + ( x − x j ) 3 6 h j M j + 1 + ( y j − M j h j 2 6 ) x j + 1 − x h j + ( y i + 1 − M j + 1 h j 2 6 ) x − x j h j , j = 0 , 1 , ⋯ , n − 1 s_j(x)=\frac{(x_{j+1}-x)^2}{6h_j}M_j+\frac{(x-x_j)^3}{6h_j}M_{j+1}\\ +\left(y_j-\frac{M_jh_j^2}{6}\right)\frac{x_{j+1}-x}{h_j}+\left(y_{i+1}-\frac{M_{j+1}h_j^2}{6}\right)\frac{x-x_j}{h_j},j=0,1,\cdots,n-1 sj(x)=6hj(xj+1x)2Mj+6hj(xxj)3Mj+1+(yj6Mjhj2)hjxj+1x+(yi+16Mj+1hj2)hjxxj,j=0,1,,n1
只需确定 M 0 , M 1 , ⋯ , M n M_0,M_1,\cdots,M_n M0,M1,,Mn的值,即可给出 s j ( x ) s_j(x) sj(x)的表达式,从而可以得到 S ( x ) S(x) S(x)的表达式
s j ′ ( x ) = − ( x j + 1 − x ) 2 2 h j M j + ( x − x j ) 2 2 h j M j + 1 + y j + 1 − y j h j − h j 6 ( M j + 1 − M j ) s'_j(x)=-\frac{(x_{j+1}-x)^2}{2h_j}M_j+\frac{(x-x_j)^2}{2h_j}M_{j+1}+\frac{y_{j+1}-y_j}{h_j}-\frac{h_j}{6}(M_{j+1}-M_j) sj(x)=2hj(xj+1x)2Mj+2hj(xxj)2Mj+1+hjyj+1yj6hj(Mj+1Mj)
根据条件 s j − 1 ′ ( x j − 0 ) = s j ′ ( x j + 0 ) s_{j-1}'(x_j-0)=s_j'(x_j+0) sj1(xj0)=sj(xj+0)可知
h j − 1 6 M j − 1 + h j − 1 + h j 3 M j + h j 6 M j + 1 = y j + 1 − y j h j − y j − y j − 1 h j − 1 , h j − 1 h j − 1 + h j M j − 1 + 2 M j + h j h j − 1 + h j M j + 1 = 6 f [ x j , x j + 1 ] − f [ x j − 1 , x j ] h j − 1 + h j , \frac{h_{j-1}}{6}M_{j-1}+\frac{h_{j-1}+h_j}{3}M_j+\frac{h_j}{6}M_{j+1}=\frac{y_{j+1}-y_j}{h_j}-\frac{y_j-y_{j-1}}{h_{j-1}},\\ \frac{h_{j-1}}{h_{j-1}+h_j}M_{j-1}+2M_j+\frac{h_j}{h_{j-1}+h_j}M_{j+1}=6\frac{f[x_j,x_{j+1}]-f[x_{j-1},x_j]}{h_{j-1}+h_j}, 6hj1Mj1+3hj1+hjMj+6hjMj+1=hjyj+1yjhj1yjyj1,hj1+hjhj1Mj1+2Mj+hj1+hjhjMj+1=6hj1+hjf[xj,xj+1]f[xj1,xj],
整理后得到关于 M j − 1 , M j , M j + 1 M_{j-1},M_j,M_{j+1} Mj1,Mj,Mj+1的方程:
μ j M j − 1 + 2 M j + λ j M j + 1 = d j , \mu_jM_{j-1}+2M_j+\lambda_jM_{j+1}=d_j, μjMj1+2Mj+λjMj+1=dj,
其中 μ j = h j − 1 h j − 1 + h j , λ j = h j h j − 1 + h j d j = 6 f [ x j − 1 , x j , x j + 1 ] , μ j + λ j = 1 j = 1 , 2 , ⋯ , n − 1 \mu_j=\frac{h_{j-1}}{h_{j-1}+h_j},\lambda_j=\frac{h_j}{h_{j-1}+h_j}\\ d_j=6f[x_{j-1},x_j,x_{j+1}],\mu_j+\lambda_j=1\\ j=1,2,\cdots,n-1 μj=hj1+hjhj1,λj=hj1+hjhjdj=6f[xj1,xj,xj+1],μj+λj=1j=1,2,,n1
这里一共有n-1个方程,补充两个方程后可确定 M 0 , M 1 , ⋯ , M n M_0,M_1,\cdots,M_n M0,M1,,Mn共n-1个未知量.


  1. 第一类边界条件: S ′ ( x 0 ) = f 0 ′ , S ′ ( x n ) = f n ′ S'(x_0)=f'_0,S'(x_n)=f_n' S(x0)=f0,S(xn)=fn
    直接代入 s j ( x ) s_j(x) sj(x)的一阶导数表达式即得
    2 M 0 + M 1 = 6 ( ( y 1 − y 0 ) / h 0 − f 0 ′ ) / h 0 ≡ d 0 , M n − 1 + 2 M n = 6 ( f n ′ − ( y n − y n − 1 ) / h n − 1 ) / h n − 1 ≡ d n . 2M_0+M_1=6((y_1-y_0)/h_0-f_0')/h_0\equiv d_0,\\ M_{n-1}+2M_n=6(f'_n-(y_n-y_{n-1})/h_{n-1})/h_{n-1}\equiv d_n. 2M0+M1=6((y1y0)/h0f0)/h0d0,Mn1+2Mn=6(fn(ynyn1)/hn1)/hn1dn.
    与上面n-1个方程组联立可得n+1阶线性方程组
    [ 2 1 μ 1 2 λ 1 μ 2 2 λ 2 ⋱ ⋱ ⋱ μ n − 1 2 λ n − 1 1 2 ] [ M 0 M 1 M 2 ⋮ M n − 1 M n ] = [ d 0 d 1 d 2 ⋮ d n − 1 d n ] \begin{bmatrix}2&1&&&&&\\ \mu_1&2&\lambda_1\\ &\mu_2&2&\lambda_2\\ &&\ddots&\ddots&\ddots\\ &&&\mu_{n-1}&2&\lambda_{n-1}\\ &&&&1&2\end{bmatrix}\begin{bmatrix}M_0\\M_1\\M_2\\ \vdots \\M_{n-1}\\M_n\end{bmatrix}=\begin{bmatrix}d_0\\d_1\\d_2\\ \vdots \\d_{n-1}\\d_n\end{bmatrix} 2μ112μ2λ12λ2μn121λn12 M0M1M2Mn1Mn = d0d1d2dn1dn
    此方程组的系数矩阵严格对角占优,因此为非奇异矩阵,方程存在唯一解.可用追赶法求出三弯矩方程的解 M j . M_j. Mj.
  2. 第二类边界条件: M 0 = f 0 ′ ′ , M n = f n ′ ′ M_0=f''_0,M_n=f_n'' M0=f0′′,Mn=fn′′
    此时只需解n-1阶线性方程组
    [ 2 λ 1 μ 2 2 λ 2 ⋱ ⋱ ⋱ μ n − 2 2 λ n − 2 μ n − 1 2 ] [ M 1 M 2 ⋮ M n − 1 M n ] = [ d 1 − μ 1 f 0 ′ ′ d 2 ⋮ d n − 2 d n − 1 − λ n − 1 f n ′ ′ ] \begin{bmatrix}2&\lambda_1&&&\\ \mu_2&2&\lambda_2\\ &\ddots&\ddots&\ddots\\ &&\mu_{n-2}&2&\lambda_{n-2}\\ &&&\mu_{n-1}&2\end{bmatrix}\begin{bmatrix}M_1\\M_2\\ \vdots \\M_{n-1}\\M_n\end{bmatrix}=\begin{bmatrix}d_1-\mu_1f''_0\\d_2\\ \vdots \\d_{n-2}\\d_{n-1}-\lambda_{n-1}f''_n\end{bmatrix} 2μ2λ12λ2μn22μn1λn22 M1M2Mn1Mn = d1μ1f0′′d2dn2dn1λn1fn′′
    此方程严格对角占优,存在唯一解.
  3. 第三类边界条件: S ′ ( x 0 ) = S ′ ( x n ) , S ′ ′ ( x 0 ) = S ′ ′ ( x n ) S'(x_0)=S'(x_n),S''(x_0)=S''(x_n) S(x0)=S(xn),S′′(x0)=S′′(xn)
    由此边界条件可得 M 0 = M n , λ n M 1 + μ n M n − 1 + 2 M n = d n , M_0=M_n,\\ \lambda_nM_1+\mu_nM_{n-1}+2M_n=d_n, M0=Mn,λnM1+μnMn1+2Mn=dn,
    其中 λ n = h 0 / ( h 0 + h n − 1 ) , μ n = h n − 1 / ( h 0 + h n − 1 ) , d n = 6 [ ( y 1 − y 0 ) / h 0 − ( y n − y n − 1 ) / h n − 1 ] / ( h 0 + h n − 1 ) . \lambda_n=h_0/(h_0+h_{n-1}),\mu_n=h_{n-1}/(h_0+h_{n-1}),\\ d_n=6[(y_1-y_0)/h_0-(y_n-y_{n-1})/h_{n-1}]/(h_0+h_{n-1}). λn=h0/(h0+hn1),μn=hn1/(h0+hn1),dn=6[(y1y0)/h0(ynyn1)/hn1]/(h0+hn1).
    与前面n-1个方程联立可得n阶线性方程组:
    [ 2 λ 1 μ 2 2 λ 2 ⋱ ⋱ ⋱ μ n − 2 2 λ n − 2 λ n μ 2 2 ] [ M 1 M 2 ⋮ M n − 1 M n ] = [ d 0 d 1 d 2 ⋮ d n − 1 d n ] \begin{bmatrix}2&\lambda_1&&&\\ \mu_2&2&\lambda_2\\ &\ddots&\ddots&\ddots\\ &&\mu_{n-2}&2&\lambda_{n-2}\\ \lambda_n&&&\mu_2&2\end{bmatrix}\begin{bmatrix}M_1\\M_2\\ \vdots \\M_{n-1}\\M_n\end{bmatrix}=\begin{bmatrix}d_0\\d_1\\d_2\\ \vdots \\d_{n-1}\\d_n\end{bmatrix} 2μ2λnλ12λ2μn22μ2λn22 M1M2Mn1Mn = d0d1d2dn1dn
    此方程组系数矩阵严格对角占优,存在唯一解.

参考书目:《数值分析》张雪莹

相关文章:

数值分析——插值法(二)

文章目录 前言一、Hermite插值1.两点三次Hermite插值2.两点三次Hermite插值的推广3.非标准型Hermite插值 二、三次样条插值1.概念2.三弯矩方程 前言 之前写过Lagrange插值与Newton插值法的内容&#xff0c;这里介绍一些其他的插值方法&#xff0c;顺便复习数值分析. 一、Hermi…...

杨振宁大学物理视频中黄色的字,c#写程序去掉

先看一下效果&#xff1a;&#xff08;还有改进的余地&#xff09; 写了个程序消除杨振宁大学物理中黄色的字 我的方法是笨方法&#xff0c;也比较刻板。 1&#xff0c;首先想到&#xff0c;把屏幕打印下来。c#提供了这样一个函数&#xff1a; Bitmap bmp new Bitmap(640, 48…...

uni-app 设置缓存过期时间【跨端开发系列】

&#x1f517; uniapp 跨端开发系列文章&#xff1a;&#x1f380;&#x1f380;&#x1f380; uni-app 组成和跨端原理 【跨端开发系列】 uni-app 各端差异注意事项 【跨端开发系列】uni-app 离线本地存储方案 【跨端开发系列】uni-app UI库、框架、组件选型指南 【跨端开…...

微信小程序base64图片与临时路径互相转换

1、base64图片转临时路径 /*** 将base64图片转临时路径* param {*} dataurl* param {*} filename* returns*/base64ImgToFile(dataurl, filename "file") {const base64 dataurl; // base64码const time new Date().getTime();const imgPath wx.env.USER_DATA_P…...

蓝桥杯刷题——day2

蓝桥杯刷题——day2 题目一题干题目解析代码 题目二题干解题思路代码 题目一 题干 三步问题。有个小孩正在上楼梯&#xff0c;楼梯有n阶台阶&#xff0c;小孩一次可以上1阶、2阶或3阶。实现一种方法&#xff0c;计算小孩有多少种上楼梯的方式。结果可能很大&#xff0c;你需要…...

5.删除链表的倒数第N个节点

19.删除链表的倒数第N个节点 题目&#xff1a; 19. 删除链表的倒数第 N 个结点 - 力扣&#xff08;LeetCode&#xff09; 分析&#xff1a; 要删除倒数第几个节点&#xff0c;那么我们需要怎么做呢&#xff1f;我们需要定义两个指针&#xff0c;快指针和慢指针&#xff0c;…...

自己总结:selenium高阶知识

全篇大概10000字&#xff08;含代码&#xff09;&#xff0c;建议阅读时间30min 一、等待机制 如果有一些内容是通过Ajax加载的内容&#xff0c;那就需要等待内容加载完毕才能进行下一步操作。 为了避免人为操作等待&#xff0c;会遇到的问题&#xff0c; selenium将等待转换…...

前端怎么预览pdf

1.背景 后台返回了一个在线的pdf地址&#xff0c;需要我这边去做一个pdf的预览&#xff08;需求1&#xff09;&#xff0c;并且支持配置是否可以下载&#xff08;需求2&#xff09;&#xff0c;需要在当前页就能预览&#xff08;需求3&#xff09;。之前我写过一篇预览pdf的文…...

activemq 的安装部署

下载 https://activemq.apache.org/components/classic/download/# 在/opt目录下载 wget https://dlcdn.apache.org//activemq/5.18.6/apache-activemq-5.18.6-bin.tar.gz解压 tar -zxvf apache-activemq-5.18.6-bin.tar.gz配置java环境 vim /opt/apache-activemq-5.18.6/b…...

【H3CNE邓方鸣】配置链路聚合+2024.12.11

文章目录 链路聚合作用负载分担分类静态聚合动态聚合 链路聚合作用 定义&#xff1a;把连接到统一交换机上的多个物理端口捆绑为一个逻辑端口 增加链路带宽&#xff1a;聚合组内只要还有物理端口存活&#xff0c;链路就不会中断 提供链路可靠性&#xff1a;避免了STP计算&…...

C语言 学习 日志 递归函数 2024/12/12

C语言 学习 日志 递归函数 介绍: 初始调用&#xff1a;递归函数被首次调用。递归调用&#xff1a;递归函数在其定义中调用自身&#xff0c;创建新的栈帧。基本情况检查&#xff1a;每次递归调用时&#xff0c;检查是否满足基本情况。如果满足&#xff0c;返回结果并开始回溯。…...

【Ubuntu】使用ip link工具创建虚拟局域网并配置?

&#x1f98b;&#x1f98b;&#x1f98b;如何使用ip link工具创建虚拟局域网&#xff1f; sudo ip link add link enx888bd66b7000 name enx.120 type vlan id 120 上述命令使用ip link工具在Linux系统中创建了一个新的虚拟局域网&#xff08;VLAN&#xff09;接口&#xff0c…...

flink sink kafka的事务提交现象猜想

现象 查看flink源码时 sink kafka有事务提交机制&#xff0c;查看源码发现是使用两阶段提交策略&#xff0c;而事务提交是checkpoint完成后才执行&#xff0c;那么如果checkpoint设置间隔时间比较长时&#xff0c;事务未提交之前&#xff0c;后端应该消费不到数据&#xff0c…...

网络原理03

回顾 应用层&#xff1a;应用程序&#xff0c;数据具体如何使用 传输层&#xff1a;关注起点和终点 网络层&#xff1a;关注路径规划 数据链路层&#xff1a;关注相邻节点的转发 物理层&#xff1a;硬件设备 应用层 应用程序 在应用层&#xff0c;很多时候&#xff0c;…...

每天40分玩转Django:简介和环境搭建

Django简介和环境搭建 一、课程概述 学习项目具体内容预计用时Django概念Django框架介绍、MVC/MTV模式、Django特点60分钟环境搭建Python安装、pip配置、Django安装、IDE选择45分钟创建项目项目结构、基本配置、运行测试75分钟实战练习创建个人博客项目框架60分钟 二、Djang…...

【蓝桥杯最新板】蓝桥杯嵌入式液晶上实现电子时钟

这几年蓝桥杯比赛比较适合学生技能学习&#xff0c;考虑板子功能&#xff0c;提出完成的任务。 要求在液晶完成如下图效果&#xff1a; 主要是实现液晶显示时钟和数字时钟&#xff0c;具体样式可以依据实际情况微调。 实现过程&#xff1a; 1.需要画圆&#xff08;外圆、内圆…...

【机器学习】基础知识:拟合度(Goodness of Fit)

拟合度概念及意义 拟合度&#xff08;Goodness of Fit&#xff09;是衡量统计模型对数据解释能力的指标&#xff0c;用于评价模型对观测数据的拟合效果。在回归分析、分类模型或其他预测模型中&#xff0c;拟合度是模型性能的重要衡量标准。 1. 拟合度的作用 拟合度的主要作用…...

使用Jackson库在Java应用程序中将Map对象转换为JSON数组字符串,以及反向操作

在现代Java应用程序中&#xff0c;特别是使用RESTful Web服务时&#xff0c;经常需要将Java对象转换为JSON格式&#xff0c;反之亦然。 当表示如用户管理系统中的用户列表这样的数据结构时&#xff0c;将Map转换为JSON数组字符串变得非常有用。在这个指南中&#xff0c;我们将…...

深入解析强化学习中的 Generalized Advantage Estimation (GAE)

中文版 深入解析强化学习中的 Generalized Advantage Estimation (GAE) 1. 什么是 Generalized Advantage Estimation (GAE)? 在强化学习中&#xff0c;计算策略梯度的关键在于 优势函数&#xff08;Advantage Function&#xff09; 的设计。优势函数 ( A ( s , a ) A(s, a…...

离开wordpress

wordpress确实挺好用的 插件丰富 主题众多 收费的插件也很多 国内的做主题的也挺好 但是服务器跑起来各种麻烦伤脑筋 需要花在维护的时间太多了 如果你的网站持续盈利 你就会更担心访问质量访问速度 而乱七八糟的爬虫黑客 让你的服务器不堪重负 突然有一天看到了静态站…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

c++ 面试题(1)-----深度优先搜索(DFS)实现

操作系统&#xff1a;ubuntu22.04 IDE:Visual Studio Code 编程语言&#xff1a;C11 题目描述 地上有一个 m 行 n 列的方格&#xff0c;从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子&#xff0c;但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作

一、上下文切换 即使单核CPU也可以进行多线程执行代码&#xff0c;CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短&#xff0c;所以CPU会不断地切换线程执行&#xff0c;从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

今日学习:Spring线程池|并发修改异常|链路丢失|登录续期|VIP过期策略|数值类缓存

文章目录 优雅版线程池ThreadPoolTaskExecutor和ThreadPoolTaskExecutor的装饰器并发修改异常并发修改异常简介实现机制设计原因及意义 使用线程池造成的链路丢失问题线程池导致的链路丢失问题发生原因 常见解决方法更好的解决方法设计精妙之处 登录续期登录续期常见实现方式特…...

4. TypeScript 类型推断与类型组合

一、类型推断 (一) 什么是类型推断 TypeScript 的类型推断会根据变量、函数返回值、对象和数组的赋值和使用方式&#xff0c;自动确定它们的类型。 这一特性减少了显式类型注解的需要&#xff0c;在保持类型安全的同时简化了代码。通过分析上下文和初始值&#xff0c;TypeSc…...