自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(67)
  • 收藏
  • 关注

原创 Leetcode 673. 最长递增子序列的个数 (最长上升子序列求方案数)

f[i]表示第i个元素结尾的上升子序列的长度cnt[i]表示第i个元素结尾的上升子序列的个数。先用常规的dp,求出f[i]和cnt[i],然后再遍历一遍计算出答案class Solution {public: int findNumberOfLIS(vector<int>& nums) { int n = nums.size(); vector<int> f(n, 1), cnt(n, 1); in...

2021-11-30 23:52:28 449

原创 Leetcode 698. 划分为k个相等的子集 (先必要性判断,然后爆搜)

先必要性判断,然后爆搜,搜索的时候采用桶思想,将k个桶的水装满,然后元素用vistied数组标记已使用过。class Solution {public: bool canPartitionKSubsets(vector<int>& nums, int k) { int sum = 0; for (auto num : nums) { sum += num; } if (sum %...

2021-11-30 17:13:58 75

原创 Leetcode 400. 第 N 位数字 (数学题,找规律)

一位数: 1-9,共9个数字两位数:10 - 99 共 90个数, 2* 90个数字三位数:100-999, 共900个数,3 * 900 个数字四位数:1000-9999,共9000个数字, 4 * 90000个数字因此,第一步,是确定第n个数字几位数,确定的方法是不断减去cnt * base确定完了是第几个数字,在确定这个数字属于哪个数。然后再找到这个数字是第几位数,然后将那一个数字取出。class Solution {public: int findN...

2021-11-30 16:27:12 420

原创 Leetcode 786. 第 K 个最小的素数分数(用优先队列处理N路归并)

思路是先将一列读入到优先队列中,然后每次从优先队列中拿出一个最小的元素,同时后面的元素补位置。class Solution {public: vector<int> kthSmallestPrimeFraction(vector<int>& arr, int k) { int n = arr.size(); auto cmp = [&](const pair<int, int>& x, co...

2021-11-29 21:20:08 775

原创 2020年考研数学线代大题:口算正交变换方法

很容易得到A的特征值为1+2*a,1-a,1-aB的特征值为0, 2, 4要求秩相等a=-1/2, A的特征值为0, 3/2, 3/2A的三个特征向量为(1, 1, 1) (1, -1, 0) (1, 1, -2), 规范对角矩阵为diag(0, sqrt(1/2), 1/2)B的三个特征向量为( 1, 1, 0) (1, -1, 0) (0, 0, 4), 规范对角矩阵为diag(0, sqrt(3/2), sqrt(3/2))最后一步算四个矩阵相乘,这一步如果只有过程,...

2021-11-29 17:12:01 750

原创 Leetcode 519. 随机翻转矩阵 (二维数组映射)

数组随机模拟超时,改造为unordered_mapclass Solution {public: Solution(int m, int n) { row = m; col = n; total = m * n; srand(time(nullptr)); map.resize(total); for (int i = 0; i < total; i++) { ...

2021-11-27 18:59:32 275

原创 三阶实对称矩阵含重根的快速还原秒杀法

2021-11-26 21:48:23 1102

原创 态密度的Delta函数公式以及范霍夫奇点

2021-11-25 22:48:16 1918 3

原创 考研二阶矩阵合同的计算

二阶矩阵比较特殊,可以直接待定系数硬算,三阶就很吃力了。直接设系数硬算,利用对称性可以把C解出来。第二题也可以直接计算出来,甚至可以直接写出正交矩阵的形式。

2021-11-22 21:39:11 2111

原创 SU(4)Hubbard平均场Python代码

标准的SU(N)共线磁序平均场计算,存在很强简并性。import numpy as npfrom numpy import exp, pi, sqrtfrom numpy.linalg import eighimport matplotlib.pylab as pltfrom numba import njitdef H0_SU4(H, k, t = 1): A = t * np.array([[sqrt(3),0,1,exp(-1j*k)],[0, sqrt(3),1,1],[

2021-11-22 00:18:07 1212

原创 SU(N)平均场Hubbard模型求解代码

nk = 512; k = linspace(0,2*pi,nk);t = 1; % 最近邻hoopingU = 1; % Hubbard系数mu = 0; % 化学势1/4填充取值N = 40; % N/2是对应的y方向原子个数m = 4*N; % 总的原子的个数T = 0.001; % 温度N1avg = 0.25*eye(m);N2avg = 0.

2021-11-21 22:53:22 381

原创 Python 石墨烯边缘磁性Hatree_Fock计算

Hatree_Fock自洽过程尽可能向量化优化import numpy as npfrom numpy import exp, pifrom numpy.linalg import eighimport matplotlib.pylab as pltfrom numba import njit@njitdef Fermi(E, mu, T): return 1/(np.exp((E - mu)/T) + 1)@njitdef tridiag_block_matrix(H,.

2021-11-21 22:35:52 591

原创 边缘态半无穷格林函数谱函数计算

注意迭代的时候numpy的深浅拷贝问题。import numpy as npfrom numpy.linalg import invfrom math import piimport matplotlib.pyplot as pltfrom numpy import expfrom numba import njit# @njitdef semi_inf_GF(w, Ha, Hb, delta = 0.01, ncc = 20): m, _ = Ha.shape Z.

2021-11-21 21:08:32 1206

原创 边缘态能带计算Python numba优化版本

from math import piimport numpy as npfrom numpy import exp, sqrtfrom numpy.linalg import eighimport matplotlib.pylab as pltfrom numba import njit@njitdef tridiag_block_matrix(H, c, u, d): # c, u, d are center, upper and lower blocks N, _ =.

2021-11-21 04:36:54 1417

原创 边缘态能带计算C++代码demo

#define EIGEN_USE_MKL_ALL#define EIGEN_VECTORIZE_SSE4_2const double PI = std::acos(-1);const double rt3 = std::sqrt(3);const std::complex<double> i1(0.0, 1.0);Eigen::MatrixXcd Hamiltonian_H0_SU4(double k, int N, double t = 1){ Eigen::Matr.

2021-11-21 02:52:37 525

原创 边缘态能带计算Python实现

以下代码是计算标准一维边缘态能带的算法实现。其中块三对角矩阵暂时无法高性能的实现。优化后可以利用numba或者GPU加速。from math import sqrt, piimport numpy as npfrom numpy import expfrom numpy.linalg import invfrom scipy.linalg import block_diagfrom numpy.linalg import eighimport matplotlib.pylab as

2021-11-21 01:26:29 1132

原创 Leetcode 1254. 统计封闭岛屿的数目 (染色法+BFS遍历)

我们将陆地区域全部染色一般,如果走到边界,那么就说明不可能被包围,否则就会被包围。注意在BFS不能提前返回,否则我们就没有完全染色。const int dx[] = {0, 1, -1, 0};const int dy[] = {1, 0, 0, -1};class Solution {public: int closedIsland(vector<vector<int>>& grid) { int n = grid.size()...

2021-11-20 17:32:24 358

原创 Leetcode 594. 最长和谐子序列(count计数)

class Solution {public: int findLHS(vector<int>& nums) { unordered_map<int, int> cnt; for (auto num : nums) { cnt[num]++; } int res = 0; for (auto [k, v] : cnt) { if (c...

2021-11-20 00:51:40 620

原创 考研数学多重积分计算秒杀(对称性化简以及雅可比球坐标)

先利用镜面对称性化简交叉项,只需要计算平方项,在利用轮换对称性只算一个二次积分,然后在用雅可比和球坐标积分来算,其中球坐标积分会涉及到三角函数幂次积分,使用华莱士公式来速算。先平移成标准球面,x^2 + (y - 1)^2 + z^2 = 1y' = y - 1原等式为 x^2 + 2(y'+1)^2 + 3z^2, 展开之后分组为 x^2 + 2y^2 + 3z^2 + 2y + 2用轮换对称性做y^2 + 2x^2 + 3x^2 + 2z + 2两式相加除2,有2*dS...

2021-11-19 23:24:58 1378

原创 十三届大学生数学竞赛第四题:轮换对称加球坐标华莱士暴力破解

根据点火公式,很容易看出前面两个系数相等,由对称性猜出第三个系数相等。直接在用点火公式计算也行。下面再来看交叉项系数。五次方系数前面推出来。后两项用二倍角球出来。这个题目如果能在半个小时算出来,计算相当过关。需要熟练记忆华莱士公式,以及从0到pi和0到2*pi的推广形式。...

2021-11-19 01:25:13 617

原创 Hubbard模型平均场demo代码

import numpy as npimport matplotlib.pyplot as pltfrom numpy import cos, pi, expfrom numpy.linalg import eight = 1la = 1.4e = t * (la**2 - 2)nk = 256delta = 0.01U = 3mu = 0T = 0.01def Hamiltonian0(k): H = np.zeros((2, 2)) H[0, 0] = .

2021-11-19 00:09:45 419 1

原创 算子法二阶线性非齐次微分方程的通解

对于一般的二阶线性非齐次微分方程我们先利用格林函数的思想来求解固定每一个时刻,假定我们能求解那么可以证明原方程的解就是我们引入阶跃函数将上面等式上限变为正无穷我们将上式改写为卷积形式到这里我们已经形式上解决了这个一般的问题。我们只需要求解G(t),通过一个积分计算,即解决了这个一般性问题。当然这样计算未必很好算。求解G(t)最直接的方法是拉普拉斯变换法,这样即可以解出G(t)。这样对所有f(t), 我们都可以通过相同的方法找到通解,这就是信号与系统中核心思

2021-11-18 15:31:41 5488

原创 使用信号与系统解决二阶非齐次线性微分方程解的一般形式

这个解法在数学中是不得分的,得到传递函数以后,必须用卷积写出时域形式,然后在放缩,这样才能得满分。这道题目的母题是

2021-11-18 13:38:31 390

原创 强关联理论研究风格

强关联物理的出发点一般都是多体模型哈密顿量,常见的模型包括Hubbard模型,t-J模型,以及自旋模型,由于指数墙问题,这些模型通常都是不能严格求解的(包括数值解)。因此理解这些模型的性质以及对应的物理是强关联物理的核心问题。常见的研究风格有一下几种:1. 以求解模型为基础的数值算法派通过各种算法(严格对角化ED,DMRG,QMC,Tensor Network,动力学平均场)求解各种模型哈密顿量并分析其中物理。其中ED只能处理20个格点左右,需要结合其他方法一起使用。这块模型计算量非常大,需要使

2021-11-18 02:24:16 274

原创 径向球坐标拉普拉斯方程在高数中的应用

我们假设球对称,后两项都为0。那么这个函数就可以解出来。根据上面条件,可以直接把u(r) = 1/12 r^3,然后根据欧拉齐次函数公式。右边等于pi*r^5 dr = pi/6

2021-11-17 21:26:24 435

原创 Leetcode 1472. 设计浏览器历史记录 (数组模拟)

class BrowserHistory {private: vector<string> urls; int cur;public: BrowserHistory(string homepage) { cur = 0; urls.push_back(homepage); } void visit(string url) { urls.erase(urls.begin() + cur + ...

2021-11-17 18:23:45 132

原创 Leetcode 2069. 模拟行走机器人 II (数学模拟题目)

class Robot {private: int step; int width; int height;public: Robot(int width, int height) { this->width = width; this->height = height; step = 0; } void move(int num) { step = (...

2021-11-17 02:05:42 171

原创 三阶实对称矩阵的秩一分解(快速计算三阶矩阵特征值特征向量的方法)

定理:三阶实对称矩阵如果存在二重特征根一定可以写成如下形式其中三个特征值为,,,其中一个特征向量是。通过上述方法,可以快速计算出三个特征值和一个特征向量,在用常规方法计算一个特征向量,利用正交性构造第三个特征向量。练习: 秒杀方法...

2021-11-16 23:01:34 8561

原创 Leetcode 372. 超级次方 (递归+快速幂)

先找到递归结构,然后转化为整数次幂,再用快速幂优化。const int mod = 1337;typedef long long LL;class Solution {public: int superPow(int a, vector<int>& b) { a %= mod; if (b.size() == 1) { return myPow(a, b.back()); } ...

2021-11-16 18:26:31 846

原创 二阶常系数微分方程解的卷积形式以及应用

不需要任何计算,直接通过卷积法得到二阶常微分方程解的通解,尽管右边的非齐次项未知。然后在放缩即可以解决问题。

2021-11-16 17:48:56 1288

原创 统计力学练习: Ising模型的平均场解以及严格求解

即使从经典模型来看,每个格点有自旋向上,自旋向下两种去值。假设对于N个格点,总的状态数就是2^N次方。根据统计力学,我们需要对所有的状态进行求和。因此一般来说,即使是最简单的模型,想要求出严格解未必是容易的事情。对于更加复杂的模型,严格求解配分函数及乎不可能。首先介绍平均场的方法,平均场的思想是把其中一个算符用平均值替代。这样配分函数就能计算出来。二维三维的情况是类似的,只是配位数不同。下面介绍一维情况下的严格解,即严格计算配分函数。...

2021-11-15 18:31:22 1357

原创 拉普拉斯变换卷积法处理非齐次线性微分方程通解

其中右边f(x)的形式不需要知道。我们可以将解表示为卷积形式。很容易证明通解是有界函数。只需要证明特解也是有界的即可。用拉普拉斯变换,然后将特解写成卷积的形式。第一问直接用多项式的封闭性,设为一次微分方程,很容易做。第二问由拉普拉斯变换,原方程可以变为(s+1)y(p) - y(0) = F(p),移项后有两项,一项是特解,另一项是通解。直接反变换,可以直接写出通解。...

2021-11-15 17:24:22 4057

原创 Leetcode 677. 键值映射 (Trie树改造)

在原始Tire树的基础上改造,每个节点维护后面的所有后缀的value之和。用一个HashMap计数处理重复。struct TrieNode { int val; TrieNode * next[26]; TrieNode() { this->val = 0; for (int i = 0; i < 26; ++i) { this->next[i] = nullptr; } }..

2021-11-14 22:53:46 565

原创 计算格林函数的Lanczos算法

2021-11-11 16:15:34 411 1

原创 在谈严格对角化以及格林函数计算

严格对角化一般指计算模型的本征值和基态。这里难点是构建模型的基矢以及哈密顿量矩阵,后者存储为稀疏矩阵形式,前者由一系列二进制数组构成。利用二进制状态压缩表示态。然后就是对角化操作。这里不是必须手写Lanczos算法。Fortan可以直接调用ARPACK库,Python中的scipy也可以调用。当然C++手写Lanczos性能也不差。之后就是格林函数的计算,首先需要在基态的基础上,构造新的激发态。此时粒子数改变了,因此要构造新的基矢。Sparse Matrix的逆不一定是Sparse,因此如.

2021-11-11 02:21:11 1263 1

原创 Lanczos方法计算严格对角化格林函数

2021-11-10 00:48:14 327

原创 严格对角化基态Lanczos算法C++ Eigen实现

目前Eigen暂时不支持直接对超大稀疏矩阵求最小特征值,需要手写一些步骤。1. 将超大型稀疏矩阵投影到Krylov子空间,Krylov子空间最大为1W*1W2. Krylov子空间是通过随机向量迭代的办法生成,思想来源于幂法3. 该方法将超大型稀疏矩阵转化为三对角矩阵,也可以用稀疏存储。4. 只需要求解投影后的矩阵的最小特征值,这里C++ Eigen库支持的很完善。Python demodef lanczos(hm,length): dimension = 2*..

2021-11-09 21:15:56 1791

原创 清华大学电子工程系招生(学硕很少,专硕和直博比较多)

还有直博这里不放了。

2021-11-08 14:23:00 618

原创 费米Hubbard严格对角化Python实现

利用诸如列表推导式等Python特性来写的话,结合scipy库,代码量少很多,特别容易。但是缺点是numba优化scipy支持不全,特别是稀疏矩阵,这一块还没有支持,因此瓶颈在第二步。import timefrom numba import njitimport scipy.sparse as sparseimport scipy.sparse.linalg as sparse_algL = 12Nup = 6Ndown = 6t = -2.0U = 10.0hoppings

2021-11-08 04:27:06 704 1

原创 在谈严格对角化程序以及性能优化

首先指出,由于指数墙的原因,不论怎么优化,在不改进核心算法的前提下,严格对角化自旋模型的上限格点保守估计在64个点,电子模型在32个点。通常我们希望我们的程序达到自旋模型32个点,电子模型16个点。对于超过10000 * 10000大小的矩阵,即使稀疏矩阵,我们不可能将整个矩阵完全对角化,只能求解出基态。除了基态以外,我们还需要计算出零温格林函数,得到单粒子谱函数。但是这样得到的单粒子谱函数也只有几个点,无法得出详细的信息,我们还需要使用CPT方法的思想,得出整个谱函数。整个严格对角化以及计

2021-11-08 02:10:18 357

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除