Floquet工程及其在能带拓扑性上的应用
Floquet engineering是一种利用周期性驱动(如激光、微波等)调控量子系统动力学和能带结构的技术,其核心思想基于Floquet理论(由法国数学家Gaston Floquet于1883年提出)。该领域在凝聚态物理、冷原子物理和光学等领域有广泛应用,尤其在拓扑物态和非平衡系统研究中具有重要意义。 本文主要介绍Floquet engineering的发展历程(一些关键性的文章导览)、Floquet的基本数学理论以及其在能带拓扑性上的应用。第三个问题的研究更偏向于一种对于Floquet工程的现代化应用,增强拓扑性质的认知将为我们理解材料的横向量子Hall效应以及Dirac半金属打开Dirac锥形成手性边缘态,甚至向Floquet Weyl半金属的转换提供帮助。 Floquet工程的发展 Floquet理论是在19世纪末到20世纪初建立的,最早由Gaston Floquet在1883年的文章"Sur les équations différentielles linéaires à coefficients...
【Cpp程序设计】输入输出流
在面向对象编程中,我们定义了类的概念并讲解了如何使用。下面我们通过标准输入输出的流类来进一步加深对于类和对象的理解。 本章的主要内容是流类,标准流对象,使用流操纵算子控制输出格式,调用cout的成员函数,以及cin的高级用法。在了解C++程序输入输出的规则的同时,我们也要进一步理解继承多态的概念。 流类...
【Cpp程序设计】面向对象的编程(五)
在面向对象编程的概念中,有封装、继承和多态三种机制,正是因为这些机制,提高了程序的可读性,可扩充性和可重用性。多态就是我们介绍面向对象编程的最后一个概念,所以这一部分就是【Cpp程序设计】面向对象编程所有内容的结尾了。“多态”(polymorphism)这个概念是指同一个名字的事物可以完成不同的功能。多态可以分为编译时多态和运行时多态,前者主要为函数的重载,在Cpp文件进行编译时,编译器就可以根据传入的实参形式确定调用的函数是哪一个;而后者则是一个全新的使用方法,我们本章就主要介绍这种方法的使用,他与继承和虚函数有着紧密的联系。 本章主要内容:多态的基本概念,运行时多态的两种实现方法,多态的实现原理,以及一些注意事项。 运行时多态的两种实现方法通过基类指针实现多态...
【Cpp程序设计】面向对象的编程(四)
一个编程语言的好坏,不仅取决于其运行效率,还有代码重用的能力,开发的效率也是一个非常重要的环节。在面向对象的编程中,我们引入了“继承”和“派生”的概念,用来帮助程序员进行代码重用,尽管可能会牺牲一部分运行效率,但是这将为开发的工作提供极大的遍历。例如,当我们想为一个大学建立一个学生的管理系统时,我们会写一个基本类,比如叫“学生”,但是同时,学生也分为物院的同学、信科的同学、中文的同学等等,如果我们还为其编写一个独立的类,显然工作量将随着学生的种类的增多而增加,尤其使有很多相同功能的成员函数时,开发的效率会变得十分低。但是如果各种种类的同学可以继承“学生”这个基本类,在其中继承其函数和成员,就可以极大的简化开发过程。 本节我们主要介绍C++中类的继承与派生,内容相对简单,但是这些都是第五章多态的基础。 何为“继承”与“派生”...
【算法分析】数学基础与递推方程
前言因为是本学期在学的课程,马上要期中考试了,打算尝试通过写blog的方式来复习一下。所以这部分现在不重要,后面我会好好写这部分的QWQ 函数的渐近界基本定义和定理$\qquad$ 在算法分析中的函数通常是定义在自然数集合上的函数$f:\mathbb{N}\to\mathbb{N}$,并且函数$f(n)$通常为非负的。我们在学习高数中的极限时,通常会描述某个非负函数阶数更大,这个阶数实际上就是我们现在要说的函数的渐近界。 定义1 假设$f$和$g$是定义域为自然数集$\mathbb{N}$上的函数 若存在正数$c$和$n_0$使得对一切$n\ge n_0$有$0\le f(n)\le cg(n)$成立,则称$f(n)$的渐进上界是$g(n)$,记作$f(n)=O(g(n))$ 若存在正数$c$和$n_0$使得对一切$n\ge n_0$有$0\le cg(n)\le f(n)$成立,则称$f(n)$的渐进下界是$g(n)$,记作$f(n)=\Omega(g(n))$ 若对于任意正数$c$都存在$n_0$,使得对一切$n\ge n_0$时有$0\le f(n)\lt...
【Cpp程序设计】面向对象的编程(三)
在明白如何构造对象和访问对象中的内容后,我们已经可以定义一些类来使我们的程序结构化,但是我们对于基本类型再能使用的运算符”+”,”-“,”*”,”/“并不能直接用在我们定义的类上。例如我们之前定义的Complex类,显然它也有比较良好的四则运算的性质,如果我们不能直接使用而是必须定义一些函数就过于繁琐了。本章中,我们就详细介绍一下在自己定义的类中,如何将运算符进行重载,从而使之可以在对象上直接使用。 主要内容:+、-、*、/的重载;=重载=>深度拷贝;通过友元函数进行运算符的重载;流插入运算符和流提取算符的重载;类型强制转换运算符的重载;自增自减算符的重载。 运算符重载的原理和基本方法 运算符重载实际上就是编写以运算符作为名称的函数,可以把这种函数当成接收一个,两个或者多个参数的函数,不过这些参数不再以参数表的形式出现,而是按照运算符自身的特性安排其位置。其基本的定义格式如下: 123返回值类型 operator...
【Cpp程序设计】面向对象的编程(二)
在前面的一章,我们介绍了C++语言面向对象编程的类的一些基本定义和方法,本章我们希望通过定义一些特殊的成员变量和成员函数来进一步丰满我们对于对象的认知。 本章主要内容:静态成员变量和静态成员函数;常量对象和常量成员函数;封闭类;成员对象;const成员和引用成员;友元;this指针。 static:静态成员变量和静态成员函数 static关键字作用在一个变量前,意味着这个变量是一个静态的变量,意味着它一旦生成,除非特别声明,直到程序结束才会消亡,就像第一章中最后举例中的所看到的,即使Func已经结束,但是其中定义的静态变量仍然没有消亡。对于一个类,当他的成员变量和成员变量前加上了static的声明,则称为静态成员变量和静态成员函数。 ...
【Cpp程序设计】面向对象的编程(一)
C++语言相较于C语言增加了许多有应用价值的语法和函数,其中最为关键的就是在C面向过程编程的基础上,引入了class关键字来使C++支持面向对象的编程,这使得开发效率得到了很好的提升。这篇文章中,我想简单介绍一下class类的使用方法,当然我们略去说什么结构化编程的缺点以及什么四个基本特点这种话术,直接讲该怎么写代码,另外我也是这学期才开始学习C++编写程序的,难免有一些缺漏之处,希望大家海涵。QWQ 本节的主要内容是类的定义和类内成员的访问,以及类的特殊成员函数——构造函数和析构函数,学习理解它们的机制以及执行顺序。 类的定义和访问 在C++中,类的基本定义方法如下: 12345678class...
黎曼空间中的张量
我们前面已经讨论了张量的定义以及其运算方法,现在我们具体到一种空间中,以实际的例子来体会以下张量的作用。当我们在仿射空间中引入度规场和不变距离时,我们称这个空间构成一个黎曼空间。 黎曼空间度规张量 我们用度规张量和二次型的方式来定义空间内相邻两个点的距离,可以将其写成: ds^2=g_{\mu\nu}dx^\mu...
张量及其运算
对于矢量的认知,可能在高中阶段的向量学习中就已经比较完善了,而对于矩阵以及他的运算,正常的同学一般会在刚上大学的线性代数课程中首次接触。在数学课程中,方阵一般代表一个线性方程组的系数矩阵,而对于学习物理学的同学而言,方阵的意义更多的是在n维空间内某一位置下一个当前空间的矢量的通量,例如动量密度矢量,它一般是一个的方阵,意味着空间中点处的动量大小和指向。 而张量这个概念则是更进一步的泛化“一组数”的概念。最开始接触张量的概念应该是在力学的学习中,刚体运动章节中一闪而过的转动惯量张量,或许当时就会有很多同学将张量和矩阵的概念画上等号了吧。然而,张量并非只能由行和列两个指标,它还可以是0个,1个,3个甚至无数个,按照我们的阶数观点来看的话,标量就是0阶张量,矢量就是1阶张量,而矩阵就是2阶张量。如果我们这样来看的话,张量的概念就又似乎被泛化为计算机中list的类型,似乎也不是物理上可以进行有物理意义运算的数学概念,我们还需要对这个量施以任何坐标中描述同一流形的要求,这样就得到了完整的所谓的张量。 ...