精华内容
下载资源
问答
  • 把一般的基地化为标准正交基底

    千次阅读 2018-06-27 00:25:23
    Trans_orthogonal_basis <- function(A) { n_col <- ncol(A) n_row <- nrow(A) B <- A if((n_col == n_row)&(n_row>1)) { if(Matrix::rankMatrix(A)[1] ==... for...
    Trans_orthogonal_basis <- function(A)
    {
      n_col <- ncol(A)
      n_row <- nrow(A)
      B <- A
      if((n_col == n_row)&(n_row>1))
      {
        if(Matrix::rankMatrix(A)[1] == n_col)
        {
          for(i in 2:n_col)
          {
            temp1 <- 0
            temp2 <- 0
            for(j in 1:(i-1))
            {
              temp1 <- ((sum(A[,i]*B[,j]))/(sum(B[,j]*B[,j])))*B[,j]
              temp2 <- temp2 + temp1
            }
            B[,i] <- A[,i] - temp2
          }
        }
      }
      A <- B 
      cat("未单位化\n")
      print(MASS::fractions(A))
      return(apply(A,2,function(x){x/sqrt(sum(x*x))}))
    }
    X <- matrix(c(1,-1,-1,1,1,1,0,0,1,0,1,0,-1,0,0,1),nrow = 4)
    Trans_orthogonal_basis(X)
    
    


    展开全文
  • 标准正交

    千次阅读 2020-01-10 12:01:06
    首先,介绍内积运算,然后通过内积定义正交关系; 其次,解释了什么是基以及什么是标准正交基; 接着,阐明了标准正交基的一些便利性; 最后,给出如何由一组基得到一组标准正交基。

    一、由内积到正交

      为了说明正交,需要先解释一种运算——内积. 内积的概念源自内积空间,下文摘自我的另一篇博客 内积空间(传送门)
      设 V \small V V 是实线性空间,在其上定义了内积运算 (   ⋅   , ⋅   ) : V × V → R \small (\,\cdot\,,\cdot\,): V \times V \to R (,):V×VR,即 ∀    x , y ∈ V \small \forall \;x,y \in V x,yV,在 R \small R R 中都有唯一的一个元素 δ \delta δ 与之对应,称为 x x x y y y内积,记为 ( x , y ) (x,y) (x,y),且满足以下性质:

    1.   ( x , x ) ≥ 0 1.\,(x,x)\geq0 1.(x,x)0    ( x , x ) = 0 ⇔ x = 0 \,\, (x,x)=0 \Leftrightarrow x=0 (x,x)=0x=0
    2.   ( x , y ) = ( y , x ) 2.\,(x,y)=(y,x) 2.(x,y)=(y,x)
    3.   ( a x , z ) = a ( x , z ) ,   a ∈ R 3.\,(ax,z)=a(x,z),\,a \in R 3.(ax,z)=a(x,z),aR
    4.   ( x + y , z ) = ( x , z ) + ( y , z ) 4.\,(x+y,z)=(x,z)+(y,z) 4.(x+y,z)=(x,z)+(y,z)

    则称 ( V , (   ⋅   , ⋅   ) ) \small (V,(\,\cdot\,,\cdot\,)) (V,(,))内积空间.

      可以通过内积来定义向量的长度: ∥ x ∥ = ( x , x ) \small \Vert x\Vert=\sqrt{(x,x)} x=(x,x) ∥ k x ∥ = ( k x , k x ) = k 2 ( x , x ) = k ∥ x ∥ \small \Vert kx\Vert=\sqrt{(kx,kx)}=\sqrt{k^2(x,x)}=k \Vert x\Vert kx=(kx,kx) =k2(x,x) =kx.

      长度为 1 的向量称为单位向量. 若 α ≠ 0 \small \alpha\neq0 α=0,则由上述性质,向量 α ∥ α ∥ \displaystyle\frac{\alpha}{\Vert \alpha \Vert} αα 就是一个单位向量,这一操作通常称为将 α \alpha α 单位化.

      在解析几何中,向量 α , β \small \alpha, \beta α,β 的夹角 ⟨ α , β ⟩ \small \langle \alpha,\beta \rangle α,β 的余弦可以通过内积来表示:
    c o s   ⟨ α , β ⟩ = ( α , β ) ∥ α ∥ ∥ β ∥ cos\,\langle \alpha,\beta \rangle=\frac{(\alpha,\beta)}{\Vert \alpha\Vert\Vert \beta\Vert} cosα,β=αβ(α,β)为了在一般的内积空间中利用上述公式引入夹角的概念,需要先证明一个重要的不等式:
    柯西-施瓦兹(Cauchy-Schwarz)不等式 (证明传送门) ( α , β ) 2 ≤ ( α , α ) ( β , β ) (\alpha,\beta) ^2\leq(\alpha,\alpha)(\beta,\beta) (α,β)2(α,α)(β,β) ( α , β ) ≤ ∥ α ∥ ∥ β ∥ \small (\alpha,\beta)\leq\Vert \alpha\Vert\Vert \beta\Vert (α,β)αβ. 若 α , β \small \alpha,\beta α,β 均不为零向量,则有 ∣ ( α , β ) ∣ ∥ α ∥ ∥ β ∥ ≤ 1 \displaystyle\frac{\vert(\alpha,\beta)\vert}{\Vert \alpha\Vert\Vert \beta\Vert}\leq1 αβ(α,β)1,由此可定义两者间的夹角 ⟨ α , β ⟩ = a r c c o s ( α , β ) ∥ α ∥ ∥ β ∥ , 0 ≤ ⟨ α , β ⟩ ≤ π . \langle \alpha,\beta \rangle=arccos\frac{(\alpha,\beta)}{\Vert \alpha\Vert\Vert \beta\Vert},0\leq \langle \alpha,\beta \rangle\leq\pi. α,β=arccosαβ(α,β),0α,βπ.则内积也可以表示为: ( α , β ) = ∥ α ∥ ∥ β ∥ c o s ⟨ α , β ⟩ (\alpha, \beta) = \Vert \alpha\Vert\Vert \beta\Vert cos\langle \alpha,\beta \rangle (α,β)=αβcosα,β.

      若两向量 α , β \small \alpha, \beta α,β 的内积 ( α , β ) \small (\alpha, \beta) (α,β) 为零,则称两向量相互正交.

      显然这里正交的定义与解析几何中向量垂直的说法是一致的,即两个非零向量相互正交的充要条件是它们的夹角为 π / 2 \small \pi/2 π/2.

    二、标准正交基

      基的概念源于线性空间. 若在线性空间 V \small V V 中有 n n n线性无关的向量 α 1 , α 2 , ⋯   , α n \alpha_1, \alpha_2,\cdots,\alpha_n α1,α2,,αn,且 V \small V V 中任一向量都能由它们线性表出,则 V \small V V 的维数为 n n n,并称 α 1 , α 2 , ⋯   , α n \alpha_1, \alpha_2,\cdots,\alpha_n α1,α2,,αn V \small V V 的一组.

      在内积空间 V \small V V 中的一组非零向量,若它们两两相互正交,则称为一正交向量组.
      正交向量组 α 1 , α 2 , ⋯   , α m \alpha_1, \alpha_2,\cdots,\alpha_m α1,α2,,αm 一定线性无关,简单证明一下:

       设 k 1 α 1 + k 2 α 2 + ⋯ + k m α m = 0 k_1\alpha_1+k_2\alpha_2+\cdots+k_m\alpha_m=0 k1α1+k2α2++kmαm=0
       两边同时对 α i \alpha_i αi 作内积,则由正交性,
       左边 = k i ( α i , α i ) =k_i(\alpha_i,\alpha_i) =ki(αi,αi),右边 = 0 =0 =0.
       又因为 ( α i , α i ) ≠ 0 (\alpha_i,\alpha_i)\neq 0 (αi,αi)=0,所以 k i = 0 , i = 1 , 2 , ⋯   , m k_i=0,i=1,2,\cdots,m ki=0,i=1,2,,m,故向量组线性无关.

      于是 n n n 维内积空间 V \small V V 中,含有 n n n 个向量的正交向量组线性无关,故形成一组基,称为正交基. 进一步,若每个向量的长度均为1,称为标准正交基.
      设 ϵ 1 , ϵ 2 , ⋯   , ϵ n \epsilon_1,\epsilon_2,\cdots,\epsilon_n ϵ1,ϵ2,,ϵn 为一组标准正交基,由定义,有
    ( ϵ i , ϵ j ) = δ i j = { 1 ,    i = j 0 ,    i ≠ j (\epsilon_i,\epsilon_j)=\delta_{ij}=\begin{cases} 1, \,\, i=j \\ 0, \,\, i\neq j \end{cases} (ϵi,ϵj)=δij={1,i=j0,i=j

    三、标准正交基,你有什么好?

    标准正交基下:

    1. 向量的坐标可以通过内积简单求出
      ϵ 1 , ϵ 2 , ⋯   , ϵ n \epsilon_1,\epsilon_2,\cdots,\epsilon_n ϵ1,ϵ2,,ϵn V \small V V 中的一组标准正交基, α \alpha α V \small V V 中任一向量,则 α \alpha α 可以表示成 ϵ 1 , ϵ 2 , ⋯   , ϵ n \epsilon_1,\epsilon_2,\cdots,\epsilon_n ϵ1,ϵ2,,ϵn 的线性组合,即 α = k 1 ϵ 1 + k 2 ϵ 2 + ⋯ + k n ϵ n \alpha=k_1\epsilon_1+k_2\epsilon_2+\cdots+k_n\epsilon_n α=k1ϵ1+k2ϵ2++knϵn所谓坐标,就是向量在基下的组合系数,即 ( k 1 , k 2 , ⋯   , k n ) (k_1,k_2,\cdots,k_n) (k1,k2,,kn)
      ϵ \epsilon ϵ 与等式两边作内积,由标准正交基的定义,有 ( α , ϵ i ) = k i ,   i = 1 , 2 , ⋯   , n (\alpha,\epsilon_i)=k_i,\,i=1,2,\cdots,n (α,ϵi)=ki,i=1,2,,n,于是 α = ( α , ϵ 1 ) ϵ 1 + ( α , ϵ 2 ) ϵ 2 + ⋯ + ( α , ϵ n ) ϵ n . \alpha=(\alpha,\epsilon_1)\epsilon_1+(\alpha,\epsilon_2)\epsilon_2+\cdots+(\alpha,\epsilon_n)\epsilon_n. α=(α,ϵ1)ϵ1+(α,ϵ2)ϵ2++(α,ϵn)ϵn.

    2. 向量之间的内积可以通过坐标简单表示
      α = x 1 ϵ 1 + x 2 ϵ 2 + ⋯ + x n ϵ n β = y 1 ϵ 1 + y 2 ϵ 2 + ⋯ + y n ϵ n \begin{aligned}&\alpha=x_1\epsilon_1+x_2\epsilon_2+\cdots+x_n\epsilon_n\\&\beta=y_1\epsilon_1+y_2\epsilon_2+\cdots+y_n\epsilon_n\end{aligned} α=x1ϵ1+x2ϵ2++xnϵnβ=y1ϵ1+y2ϵ2++ynϵn ( α , β ) = x 1 y 1 + x 2 y 2 + ⋯ + x n y n (\alpha,\beta)=x_1y_1+x_2y_2+\cdots+x_ny_n (α,β)=x1y1+x2y2++xnyn X = ( x 1 , x 2 , ⋯   , x n ) T ,    Y = ( y 1 , y 2 , ⋯   , y n ) T \small X=(x_1,x_2,\cdots,x_n)^T,\;Y=(y_1,y_2,\cdots,y_n)^T X=(x1,x2,,xn)T,Y=(y1,y2,,yn)T
      ( α , β ) = X T Y = Y T X . \small (\alpha,\beta)=X^TY=Y^TX. (α,β)=XTY=YTX.
      这个表达式正是几何中向量的内积在直角坐标系下坐标表达式的推广.

    四、由基到标准正交基

      既然标准正交基这么好,那怎样才能得到一组标准正交基. 下面这个定理给出了答案:

      对于 n n n 维内积空间任意一组基 α 1 , α 2 , ⋯   , α n \alpha_1, \alpha_2,\cdots,\alpha_n α1,α2,,αn,都可以找到一组标准正交基 ϵ 1 , ϵ 2 , ⋯   , ϵ n \epsilon_1,\epsilon_2,\cdots,\epsilon_n ϵ1,ϵ2,,ϵn,使得
    s p a n { ϵ 1 , ϵ 2 , ⋯   , ϵ i } = s p a n { α 1 , α 2 , ⋯   , α i } , i = 1 , 2 , ⋯   , n span\lbrace\epsilon_1,\epsilon_2,\cdots,\epsilon_i\rbrace=span\lbrace\alpha_1, \alpha_2,\cdots,\alpha_i\rbrace,i=1,2,\cdots,n span{ϵ1,ϵ2,,ϵi}=span{α1,α2,,αi},i=1,2,,n ϵ 1 , ϵ 2 , ⋯   , ϵ i \epsilon_1,\epsilon_2,\cdots,\epsilon_i ϵ1,ϵ2,,ϵi α 1 , α 2 , ⋯   , α i \alpha_1, \alpha_2,\cdots,\alpha_i α1,α2,,αi 可以互相线性表出.

    证明:
    采用构造的方式,给出标准正交基的求法,利用数学归纳法:

    (1) 首先,取 ϵ 1 = α 1 ∥ α 1 ∥ \epsilon_1=\frac{\alpha_1}{\Vert \alpha_1\Vert} ϵ1=α1α1 ϵ 1 \epsilon_1 ϵ1 α 1 \alpha_1 α1 可以相互线性表出,且为单位向量.

    (2) 其次,假设已经求出 ϵ 1 , ϵ 2 , ⋯   , ϵ m \epsilon_1,\epsilon_2,\cdots,\epsilon_m ϵ1,ϵ2,,ϵm,它们是单位正交的,具有性质 s p a n { ϵ 1 , ϵ 2 , ⋯   , ϵ m } = s p a n { α 1 , α 2 , ⋯   , α m } span\lbrace\epsilon_1,\epsilon_2,\cdots,\epsilon_m\rbrace=span\lbrace\alpha_1, \alpha_2,\cdots,\alpha_m\rbrace span{ϵ1,ϵ2,,ϵm}=span{α1,α2,,αm}下一步,求 ϵ m + 1 \epsilon_{m+1} ϵm+1.

    ϵ m + 1 \epsilon_{m+1} ϵm+1 应当与 ϵ 1 , ϵ 2 , ⋯   , ϵ m \epsilon_1,\epsilon_2,\cdots,\epsilon_m ϵ1,ϵ2,,ϵm 正交,且为单位向量,且需满足 s p a n { ϵ 1 , ϵ 2 , ⋯   , ϵ m + 1 } = s p a n { α 1 , α 2 , ⋯   , α m + 1 } span\lbrace\epsilon_1,\epsilon_2,\cdots,\epsilon_{m+1}\rbrace=span\lbrace\alpha_1, \alpha_2,\cdots,\alpha_{m+1}\rbrace span{ϵ1,ϵ2,,ϵm+1}=span{α1,α2,,αm+1} α m + 1 \alpha_{m+1} αm+1 可以由 ϵ 1 , ϵ 2 , ⋯   , ϵ m + 1 \epsilon_1,\epsilon_2,\cdots,\epsilon_{m+1} ϵ1,ϵ2,,ϵm+1 线性表出.

    这样选取 ϵ m + 1 \epsilon_{m+1} ϵm+1
    α m + 1 \alpha_{m+1} αm+1 在空间 s p a n { ϵ 1 , ϵ 2 , ⋯   , ϵ m } span\lbrace\epsilon_1,\epsilon_2,\cdots,\epsilon_m\rbrace span{ϵ1,ϵ2,,ϵm} 上的投影,记作
    β = k 1 ϵ 1 + k 2 ϵ 2 + ⋯ + k m ϵ m \beta=k_1\epsilon_1+k_2\epsilon_2+\cdots+k_m\epsilon_m β=k1ϵ1+k2ϵ2++kmϵm α m + 1 − β \alpha_{m+1}-\beta αm+1β s p a n { ϵ 1 , ϵ 2 , ⋯   , ϵ m } span\lbrace\epsilon_1,\epsilon_2,\cdots,\epsilon_m\rbrace span{ϵ1,ϵ2,,ϵm} 正交,
    α m + 1 − β \alpha_{m+1}-\beta αm+1β ϵ i , i = 1 , 2 , ⋯   , m \epsilon_i,i=1,2,\cdots,m ϵi,i=1,2,,m 正交,即 ( α m + 1 − β , ϵ i ) = 0 (\alpha_{m+1}-\beta,\epsilon_i)=0 (αm+1β,ϵi)=0
    β = k 1 ϵ 1 + k 2 ϵ 2 + ⋯ + k m ϵ m \beta=k_1\epsilon_1+k_2\epsilon_2+\cdots+k_m\epsilon_m β=k1ϵ1+k2ϵ2++kmϵm 代入,整理得
    ( α m + 1 − k i ϵ i , ϵ i ) = 0 (\alpha_{m+1}-k_i\epsilon_i,\epsilon_i)=0 (αm+1kiϵi,ϵi)=0于是 k i = ( α m + 1 , ϵ i ) , i = 1 , 2 , ⋯   , m k_i=(\alpha_{m+1},\epsilon_i),i=1,2,\cdots,m ki=(αm+1,ϵi),i=1,2,,m,取 ϵ m + 1 = α m + 1 − β ∥ α m + 1 − β ∥ \epsilon_{m+1}=\frac{\alpha_{m+1}-\beta}{\Vert \alpha_{m+1}-\beta\Vert} ϵm+1=αm+1βαm+1β ϵ 1 , ϵ 2 , ⋯   , ϵ m + 1 \epsilon_1,\epsilon_2,\cdots,\epsilon_{m+1} ϵ1,ϵ2,,ϵm+1 是一正交向量组,且满足
    s p a n { ϵ 1 , ϵ 2 , ⋯   , ϵ m + 1 } = s p a n { α 1 , α 2 , ⋯   , α m + 1 } span\lbrace\epsilon_1,\epsilon_2,\cdots,\epsilon_{m+1}\rbrace=span\lbrace\alpha_1, \alpha_2,\cdots,\alpha_{m+1}\rbrace span{ϵ1,ϵ2,,ϵm+1}=span{α1,α2,,αm+1} (3) 由归纳法原理,定理得证.

    注:由 s p a n { ϵ 1 , ϵ 2 , ⋯   , ϵ i } = s p a n { α 1 , α 2 , ⋯   , α i } , i = 1 , 2 , ⋯   , n span\lbrace\epsilon_1,\epsilon_2,\cdots,\epsilon_i\rbrace=span\lbrace\alpha_1, \alpha_2,\cdots,\alpha_i\rbrace,i=1,2,\cdots,n span{ϵ1,ϵ2,,ϵi}=span{α1,α2,,αi},i=1,2,,n 可知,两组基之间的过渡矩阵是上三角形的.


    参考文献:北京大学数学系前代数小组. 高等代数[M]. 第四版. 北京:高等教育出版社,2013.


    Plus: 如有错误、可以改进的地方、或任何想说的,请在评论区留言!

    展开全文
  • 正交多项式拟合函数

    千次阅读 2018-11-29 20:04:08
    = m),求曲线拟合的正交多项式,满足最小二乘误差 。 函数接口定义: int OPA( double (*f)(double t), int m, double x[], double w[], double c[], double *eps ) 在接口定义中:f是给定函数f(x),m为...

    实验要求:

    给定函数f(x)在 m 个采样点处的值f()以及每个点的权重(1<= i <= m),求曲线拟合的正交多项式,满足最小二乘误差

    函数接口定义:

    int OPA( double (*f)(double t), int m, double x[], double w[], double c[], double *eps )

    在接口定义中:f是给定函数f(x),m为采样点个数,x传入m个采样点,w传入每个点的权重;c传回求得的曲线拟合的正交多项式的系数,eps传入最小二乘误差上限TOL,并且传回拟合的实际最小二乘误差

    另外,在裁判程序中还定义了常数MAXN,当拟合多项式的阶数达到MAXN却仍未达到精度要求时,即返回 n = MAXN时的结果。

    伪代码:


     

      Algorithm: Orthogonal Polynomials Approximation

    To approximate a given function by a polynomial with error bounded

    by a given tolerance.

    Input: number of data m; x[m]; y[m]; weight w[m]; tolerance TOL;

                maximum degree of polynomial Max_n.

    Output: coefficients of the approximating polynomial.

    1. 1  Set  j0(x) º 1;  a0 = (j0, y)/(j0, j0);  P(x) = a0 j0(x);  err = (y, y) - a0 (j0, y);
    2. 2  Set  a1= (xj0, j0)/(j0, j0);  j1(x) = (x - a1) j0(x);
    3. 1 = (j1, y)/(j1, j1);  P(x) += a1 j1(x);  err  -= a1 (j1, y);

    Step 3  Set  k = 1;

    1. 4  While (( k < Max_n)&&(|err|³TOL))  do  steps 5-7

                    Step 5  k ++;

    1. ak= (xj1, j1)/(j1, j1);  bk-1 = (j1, j1)/(j0, j0);
    2. 2(x) = (x - ak) j1(x) - bk-1 j0(x);  ak = (j2, y)/(j2, j2);
    1. (x) += ak j2(x);  err  -= ak (j2, y);
    1. Set j0(x) = j1(x); j1(x) = j2(x);

    Step 8  Output ( );  STOP.


    c语言实现:
    
    #include<stdio.h>
    #include<math.h>
    
    #define MAXM 200 /* 采样点个数上限*/
    #define MAXN 5 /* 拟合多项式阶数上限*/
    
    /* 这里仅给出2个测试用例,正式裁判程序可能包含更多测试用例 */
    double qi_x[MAXN+1][MAXN+1];//存储基底函数
    double ak[MAXN+1];//存储拟合函数对应基地的系数
    
    
    double f1(double x)
    {
      return sin(x);
    }
    
    double f2(double x)
    {
      return exp(x);
    }
    
    
    //用于求x的n次方
    double power(double x,int n)
    {
        int i;
        double y=1;
        for(i=0;i<n;i++)
        {
            y=y*x;
        }
        return y;
    }
    
    //用于求解两个基底函数的内积
    double get_Inner_product(double x[],double y1[],double y2[] ,double w[],int m)
    {
        int i,j;
        double sum=0;
        double sum1,sum2;
        for(i=0;i<m;i++)
        {
            sum1=0;
            sum2=0;
            for(j=0;j<=MAXN;j++)
            {
                sum1=sum1+y1[j]*power(x[i],j);
                sum2=sum2+y2[j]*power(x[i],j);
            }
            sum=sum+w[i]*sum1*sum2;
        }
        return sum;
    }
    
    //用于完成x*a(x)的功能
     void carry_x(double x[],double *temp)
    {
        int i;
    
        for(i=MAXN+1;i>0;i--)
        temp[i]=x[i-1];
    
        temp[0]=0;
    }
    
    //用于完成拟合函数和基底函数的内积
    double get_function_inner_product(double (*f)(double t),double x[],double y1[],double w[],int m)
    {
        int i,j;
        double sum=0;
        double sum1;
        for(i=0;i<m;i++)
        {
          sum1=0;
          for(j=0;j<=MAXN;j++)
          {
              sum1=sum1+y1[j]*power(x[i],j);
          }
          sum=sum+w[i]*f(x[i])*sum1;
        }
       // printf("%f\n",sum);
        return sum;
    }
    
    //求解正交基底
    void Array_op(int n,double fg,double fg1)
    {
        int i;
        carry_x(qi_x[n-1],qi_x[n]);
           if(n==1)
           {
               for(i=0;i<=n;i++)
               qi_x[n][i]=qi_x[n][i]-fg*qi_x[n-1][i];
           }
           else{
           for(i=0;i<=n;i++)
            {
                qi_x[n][i]=qi_x[n][i]-fg*qi_x[n-1][i]-fg1*qi_x[n-2][i];
            }
            //qi_x[n][0]=-fg*qi_x[n-1][0]-fg1*qi_x[n-2][0];
           }
    }
    
    //完成函数拟合并返回误差和拟合次数
    int OPA( double (*f)(double t), int m, double x[], double w[], double c[], double *eps )
    {
        double err;
        double sum=0;
        double m1,n;
        double temp[MAXN+1]={0};
        int i;
    
        qi_x[0][0]=1;
        ak[0]=get_function_inner_product(f,x,qi_x[0],w,m)/get_Inner_product(x,qi_x[0],qi_x[0],w,m);
    
        for(i=0;i<m;i++)
        {
            sum=sum+w[i]*f(x[i])*f(x[i]);
        }
    
        err=sum-ak[0]*get_function_inner_product(f,x,qi_x[0],w,m);
       // printf("%f\n",err);
    
        carry_x(qi_x[0],temp);
    
        m1=get_Inner_product(x,temp,qi_x[0],w,m)/get_Inner_product(x,qi_x[0],qi_x[0],w,m);
    
        Array_op(1,m1,0.0);
    
        ak[1]=get_function_inner_product(f,x,qi_x[1],w,m)/get_Inner_product(x,qi_x[1],qi_x[1],w,m);
        err=err-ak[1]*get_function_inner_product(f,x,qi_x[1],w,m);
        int k=1;
    
        while((k<MAXN)&&(fabs(err)>=*eps))
        {
            k=k+1;
            double temp1[MAXN+1]={0};
    
            carry_x(qi_x[k-1],temp1);
    
            m1=get_Inner_product(x,temp1,qi_x[k-1],w,m)/get_Inner_product(x,qi_x[k-1],qi_x[k-1],w,m);
    
            n=get_Inner_product(x,qi_x[k-1],qi_x[k-1],w,m)/get_Inner_product(x,qi_x[k-2],qi_x[k-2],w,m);
    
            Array_op(k,m1,n);
           // printf("%f\n",get_function_inner_product(f,x,qi_x[k],w,m));
    
            ak[k]=get_function_inner_product(f,x,qi_x[k],w,m)/get_Inner_product(x,qi_x[k],qi_x[k],w,m);
           // printf("%f\n",ak[k]);
            err=err-ak[k]*get_function_inner_product(f,x,qi_x[k],w,m);
        }
        *eps=err;
        return k;
    }
    
    //输出实验结果
    void print_results( int n, double c[], double eps)
    { /* 用于输出结果 */
      int i;
      int m,k;
      for(m=0;m<MAXN+1;m++)
      {
          c[m]=0;
          for(k=0;k<MAXN+1;k++)
          c[m]=c[m]+ak[k]*qi_x[k][m];
      }
      printf("%d\n", n);
      for (i=0; i<=n; i++)
        printf("%8.4e ", c[i]);
      printf("\n");
      printf("error = %6.2e\n", eps);
      printf("\n");
    }
    
    int main()
    {
      int m, i, n;
      double x[MAXM], w[MAXM], c[MAXN+1], eps;
    
      /* 测试1 */
      m = 90;
      for (i=0; i<m; i++) {
        x[i] = 3.1415926535897932 * (double)(i+1) / 180.0;
        w[i] = 1.0;
      }
      eps = 0.001;
      n = OPA(f1, m, x, w, c, &eps);
      print_results(n, c, eps);
    
      /* 测试2 */
      memset(qi_x,0,sizeof(qi_x));
      memset(ak,0,sizeof(ak));
      m = 200;
      for (i=0; i<m; i++) {
        x[i] = 0.01*(double)i;
        w[i] = 1.0;
      }
      eps = 0.001;
      n = OPA(f2, m, x, w, c, &eps);
      print_results(n, c, eps);
    
      return 0;
    }
    --------------------- 
    作者:couchy-wu 
    来源:CSDN 
    原文:https://blog.csdn.net/qq_41989372/article/details/84638914 
    版权声明:本文为博主原创文章,转载请附上博文链接!

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     


     

     

    展开全文
  • 1. 向量和正交基 1.1 向量的内积: 两个向量的内积等于其中一个向量的模与另一个向量在这个向量方向上投影的乘积。   两个相互垂直的向量的内积为0。也就是说,两个向量的内积计算出来为0,那么这两个向量正交。 ...

    1. 向量和正交基

    1.1 向量的内积:

    在这里插入图片描述
    两个向量的内积等于其中一个向量的模与另一个向量在这个向量方向上投影的乘积。
    在这里插入图片描述
      两个相互垂直的向量的内积为0。也就是说,两个向量的内积计算出来为0,那么这两个向量正交。
    在这里插入图片描述

    1.2 向量内积的线性表示

    1.2.1 二维向量的内积

      将向量用放在坐标系中进行表示,那么对于向量 a = (1, 1) 向量b = (2, 0)。那么可以通过带入坐标的方式来进行向量内积的计算。
    <a, b> = [1, 1]
    在这里插入图片描述

    1.2.2 多维向量的内积表示

      对于n维向量,其内积的计算方式,同二维向量一致,都是通过向量对应坐标相乘再相加。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    1.3正交基

      在n维空间当中,由n个互相正交的向量组成一个正交基,在该空间当中的任何一个向量都可以由该正交基表示。
      对于n维空间当中的一个向量,其可以用坐标来表示,其中每个坐标代表了其在对应基向量上的投影。
      同样也可以说,一组正交基能够构成在该空间当中的任意一个向量,只需要在每个基向量前确定一组唯一的系数。
    在这里插入图片描述

    2.函数和正交函数集

    2.1 函数的内积

      对于函数,可以采用和上面向量类似的方法,来求得其内积。首先考虑离散的情况:
    如下图,有两个离散的函数,其序列长度是相同的,
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    对这两个离散的序列求内积可以得
    在这里插入图片描述
    在这里插入图片描述
      如果在函数得到序列的时候,序列之间的距离趋于0,那么可以两个函数内积的结果根据微积分可以得到。
    在这里插入图片描述

    2.2 函数的正交基

      有了函数的内积,那么根据前面多维向量的内积进行一个类似的推导,即可以得到函数正交和函数正交基的概念。
      两个函数正交,函数的内积为0
    在这里插入图片描述
      若函数 𝑓1(𝑡) , 𝑓2(𝑡),𝑓3(𝑡) , ……,𝑓n(𝑡)彼此正交,则可以组成一个正交函数集
    {𝑓1(𝑡) , 𝑓2(𝑡) ,𝑓3(𝑡) ,……, 𝑓n(𝑡) }.

      根据正交函数集,那么任意函数都可以由这个完备的正交函数集来构成,需要一组确定的系数,来表达这一个函数。这个系数,就是函数在这一个正交函数集上各个分量上的“投影”。
    在这里插入图片描述


    参考:深入浅出数字信号处理

    展开全文
  • 正交基函数

    千次阅读 2019-08-29 23:07:05
    在每一个波段内,多项式是关于一个常量正交得,而在不同波段间,多项式是关于另一个常量正交得,我们可以用一个三角形的图来显示每个波段函数,对n波段近似我们就得到了n(n+1)个系数。 递归定义三条规则: ...
  • 正交性、标准正交基和投影正交基与标准正交基一维投影高维投影和Gram-Schmidt过程三维空间四维及以上空间实现Gram-Schmidt过程相关话题标准正交基的性质 正交基与标准正交基 一个nnn维空间中任何一组线性无关的向量...
  • 正交基与普通基
  • 正交、完备性、对偶向量

    千次阅读 2017-12-27 10:58:12
    若是一组两两互相正交的向量,展式称为x的正交展开。分解系数是在各个基向量上的投影。 设向量和向量满足如下双正交关系: 那么,我们对原始信号就行投影变换(內积): 看看,我们把最关心的分解...
  • 如果一个基中的每一个向量长度为1,且任意两个不同的向量的点积等于0,那么该基就称为标准正交基,例如: 2. 标准正交基的好处 标准正交基有什么好处?它们可以构造很好的坐标系,此时求该坐标系中的坐标时,...
  • 利用奇异积分方程方法研究了正交各向异性的功能梯度材料涂层基底结构的平面断裂问题,首先通过积分变换得到问题的形式解,然后利用边界条件通过积分变换与留数定理得到了一组奇异积分方程,最后利用Gauss―Chebyshev...
  • A/|A|就是单位的了。...例如a(1 1 1) b (1 0 2) 中间那部分算出来是3/3 则 (1 1 1)-3/3(1 0 2 ) = ( 0,1 -1) 这一组正交基就是(1/√3 1/√3 1/√3 0 , 1/√2, -1√2) 3D的话 就A B C然后 C=c-(BT/BT B)c B-(AT
  • ▼3.3 施密特正交化:寻找最佳投影基在本章的前面两个小节里,我们通过向指定子空间进行投影,探索到了如何寻找“最近距离”的有效途径,通过理论分析和推导,成功得出了一组描述投影向量p和投影矩阵P的计算公式...
  • 我上传的是利用正交多项式作最小二乘拟合希望对大家有用。
  • matlab正交多项式拟合

    千次阅读 2021-04-22 06:17:15
    在实验模态分析中用 Matlab 实现离散化正交多项式算法 [C], 马永列; 陈章 位; 胡海清 4.在实验模态分析中用 Matlab 实现离散化正交多项式算法 [C], 马永列......变换后的条件数上限表如下: 拟合次数 1 =1 cond2 ( A)...
  • 正交向量 在我的博文程序员的自我修养之数学基础02中介绍了向量内积的概念。我们知道,对于 n维向量,其内积为: 仔细观察一下这个表达式,我们不难得出向量内积与矩阵乘法之间的联系: 回顾了向量内积之后,...
  • 利用C程序编写格拉姆-施密特正交化的过程.利用C程序编写格拉姆-施密特正交化的过程格拉姆-施密特正交化在线性代数中,如果内积空间上的一组向量能够组成一个子空间,那么这一组向量就称为这个子空间的一个基。Gram-...
  • 通过正交实验优化基底冠加工参数,将基底冠数据与加工参数导入快速成形系统加工10个纯钛基底冠。将完成的纯钛基底冠在铝合金代型上就位粘接,进行边缘适合性检测,评估加工精度。得到激光快速成形技术可以进行纯钛基底...
  • 多项式拟合中构造正交多项式函数族 从P0开始构造正交多项式函数族 P1到PN满足地推多项式: 2.其中αk和βk\alpha_{k}和\beta_{k}αk​和βk​的递推公式分别为 864494618)]
  • 本程序使用java实现了利用正交多项式作最小二乘拟合
  • 线性代数(四十) : 正交补与正交投影

    万次阅读 2014-03-25 12:42:50
    线性代数(四十) : 正交
  • 正交(orthogonality)、正交集(orthogonal set)、单位正交集 定义:如果向量uuu和向量vvv是相互正交的,则有:u⋅v=0u\cdot v=0u⋅v=0。 因为对于零向量,都有0T⋅v=00^T\cdot v=00T⋅v=0,所以零向量与RnR^nRn中...
  • 施密特正交化(Gram–Schmidt process)

    万次阅读 热门讨论 2009-11-18 15:06:00
    在线性代数中,如果内积空间上的一组向量能够张成一个子空间,那么这一组向量就称为这个子...Gram-Schmidt正交化提供了一种方法,能够通过这一子空间上的一个基得出子空间的一个正交基,并可进一步求出对应的标准正交
  • 正交与投影

    2019-01-08 17:44:00
    正交与投影 我们在高中就知道,两个平面向量正交的时候时垂直的,写成向量乘法就是。在学习了线性代数后,我们把它写成了。这里的向量可以是任意维数的,比如。上面的点乘被称为求取向量的内积,即对应元素的求积累...
  • 1.构造Legendre基函数作为基底 2.构造Chebyshev基函数作为基底 过程: 构造Legendre多项式函数作为基底 function [ L ] = LegendreBases( n,a,b ) %LegendreBases: crate the basis of chebyshev functional ...
  • 本节介绍正交的概念,以及将基变为正交基的格拉姆-施密特(Gram-Schmidt)方法 0 回顾正交基 1 正交 如果向量x,y满足: 则称x与y正交(orthogonal)或者垂直(perpendicular),记做: 2 标准正交基 设X是具有欧几里得...
  • 利用C程序编写格拉姆-施密特正交化的过程格拉姆-施密特正交化在 HYPERLINK "/wiki/%E7%BA%BF%E6%80%A7%E4%BB%A3%E6%95%B0" \o "线性代数" 线性代数中,如果HYPERLINK "/wiki/????§ˉ??oé?′" \o "内积空间" 内...
  • 上学期考完DQE,重拾了傅立叶变换,对他有了不同...我觉得其中一个最重要的理解是傅立叶变换是一种“change of basis”,变换基底的操作。这里要类比线性代数中的概念,也就是什么是“change of basis”。在线性代...
  • 格拉姆-施密特正交化Gram-Schimidt

    千次阅读 2012-04-11 15:48:54
    格拉姆-施密特正交化 维基百科,自由的百科全书 跳转到: 导航, 搜索 跳过字词转换说明 汉漢▼▲ 线性代数 1 & 2 \\ 3 & 4 \end{bmatrix}" src="http://upload.wikimedi

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,067
精华内容 426
关键字:

正交基底