自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (1)
  • 收藏
  • 关注

原创 数值计算优化方法C/C++(七)——奇异递归模板

奇异递归模板简介奇异递归模板是模板的一种使用技巧,通常这种技巧和一种叫做静态多态特性一起出现。是一种继承时将子类型作为模板参数传给基类的一种模板使用方法。奇异递归模板应用对象计数有时我们可能会需要对一些类型的对象计数,通常我们是通过一个static int成员来实现计数功能。这个实现本身并不复杂,但是如果我们想要实现多个类型都能够计数,我们就需要在每个类型中都添加一个static int成员,同时在它们的构造函数中添加一个计数操作。如果需要计数的类型比较多就可能会有较多的重复性操作。那么我们自然希望

2020-10-17 14:23:58 651 1

原创 模板函数限制参数为特定类型

问题最近要写一个模板函数,要求是必须被指定的类型才能执行,未被指定的类型要求报错。注册器模板类其实所谓接受指定类型作为参数就是对类型进行注册,凡是注册过的类型才能传入模板,非注册类型应当匹配失败,所以直接使用一个模板类的特化来实现注册。template <typename T>struct Register{};template <>struct Register<myint> { typedef myint Type; constexpr stat

2020-06-20 11:39:07 5404 2

原创 数值分析与优化(一)——高斯消元法

基本原理矩阵A=[a11a12⋯a1na21a22⋯a2n⋮⋮⋱⋮an1an2⋯ann]A=\left[\begin{matrix}a_{11}&a_{12}&\cdots&a_{1n}\\a_{21}&a_{22}&\cdots&a_{2n}\\\vdots&\vdots&\ddots&\vdots\\a_{n1...

2020-03-31 21:52:22 3346

原创 计算流体力学简介(九)——拉瓦尔喷管模拟

控制方程首先根据前面一维无粘流动的控制方程u=[ρρuE],F=[ρuρu2+pu(E+p)],E=pγ−1+12ρu2 ∂u∂t+∂F∂x=0u=\left[\begin{matrix}\rho \\\rho u\\E\end{matrix}\right],F=\left[\begin{matrix}\rho u\\\rho u^2+p\\u(E+p)\end{m...

2020-02-03 11:35:13 15631

原创 计算流体力学简介(八)——激波管问题

问题描述

2020-01-24 16:11:34 10373 3

原创 计算流体力学简介(七)——频散关系保持(DRP)格式

色散误差前面的计算中分析了一阶格式的格式粘性,并且提到了一阶格式的格式粘性是泰勒展开的最低阶误差项,因为格式是一阶所以最低阶误差就是二阶项,表现为粘性,因此称为格式粘性。但是前面也有提到泰勒展开的误差项中偶数阶误差项表现为耗散,奇数阶表现为色散。因此其实一阶格式的最高阶误差应当分为奇数阶和偶数阶分别分析。当保留三阶误差项时即可得到一个色散项。这个色散项会使得各频率分量以不同与微分方程描述的传播速...

2020-01-24 16:11:03 2593

原创 计算流体力学简介(六)——有限体积法和基本无震荡(ENO)格式简介

基本原理有限体积法和通量差分在网格划分上基本相同,原理上也差不多。网格划分上,有网格点在网格的中心也有网格点在网格顶点的。不论哪种网格划分,网格边界都是通量点,每一步计算都只有网格点上有值,通量点上的值是利用插值临时计算出来用于推进的。这里我就只做网格点在网格中心的情况。对于方程∂u∂t+∂f∂x=0\frac{\partial u}{\partial t}+\frac{\partial f...

2020-01-24 16:10:45 3110

原创 计算流体力学简介(五)——通量差分

基本原理

2020-01-24 16:10:15 1659

原创 计算流体力学简介(四)——有限差分法

基本原理有限差分法的原理很简单,就是利用差商代替微分,利用泰勒展开得到微分项的差商近似,从而求出方程的近似解。记差分算子Ekf=f(x+kh)E^kf=f(x+kh)Ekf=f(x+kh),微分算子Dkf=∂kf∂xkD^kf=\frac{\partial^kf}{\partial x^k}Dkf=∂xk∂kf​利用差分算子和微分算子表示泰勒展开有Ef=If+hDf+12h2D2f+⋯+1...

2020-01-24 16:10:04 5539 5

原创 计算流体力学简介(三)——有限元

一维对流方程

2020-01-24 16:09:45 2375

原创 计算流体力学简介(二)——伪谱法

一维对流方程∂u∂t+c∂u∂x=0\frac{\partial u}{\partial t}+c\frac{\partial u}{\partial x}=0∂t∂u​+c∂x∂u​=0,取c=−1c=-1c=−1,现用伪谱法求解。指数初场

2020-01-24 16:09:19 3963 1

原创 计算流体力学简介(一)——一些基本概念

偏微分方程与常微分方程偏微分方程和常微分方程的区别主要就是体现在待求解函数是一元函数还是多元函数。多元函数存在对不同自变量的偏导数,因此这种带有多元函数偏导数的方程就是偏微分方程。而对于只有一个自变量的一元函数,由它的各阶导数组成的方程就是常微分方程。描述带阻尼的简谐振动的方程md2xdt2+νdxdt+kx=0m\frac{d^2x}{dt^2}+\nu\frac{dx}{dt}+kx=...

2020-01-24 16:09:12 4667

原创 数值计算优化方法C/C++(六)——统计质数个数(访存优化以及vector-bool的坑)

(原谅我不知道标题里怎么加<>,标题里那个是vector<bool>)

2019-11-08 18:30:29 1249

原创 并行计算(二)——CUDA

并行计算(二)——CUDA一、简介CUDA是NVIDIA提供的一种通用的并行计算平台和编程模型,使用CUDA可以像在CPU上一样使用GPU进行编程。CUDA要介绍的话东西实在太多了,而且GPU的工作原理和CPU尽管本质上还是相似的,但是实际使用的思路和CPU却可能完全不同。CUDA C编程和普通C语言也没有什么太多的不同,由于CPU和GPU使用的二进制指令不同,因此使用CUDA C编程时需要...

2019-08-02 08:57:45 1020

原创 并行计算(一)——OpenMP

并行计算(一)——openmp一、简介OpenMP是一种用于共享内存并行系统的多线程库,其支持C/C++、Fortran,并且目前大多数常用编译器,如VS内置编译器、gcc、icc等都提供了openmp的相关支持。OpenMP中包含了一套编译器伪指令、运行时函数和一些环境变量。其通过对串行代码的很少的修改就可以实现串行代码的并行化(不过要想得到更好性能依旧需要仔细的设计),并且可以自由控制编译...

2019-06-11 15:20:04 3407 5

原创 数值计算优化方法C/C++(五)——矩阵转置优化示例(访存优化和SIMD的使用)

C++数值计算简单加速技术(五)——矩阵转置优化示例(访存优化和SIMD的使用)

2019-05-24 17:22:17 6368 2

原创 数值计算优化方法C/C++(三)——SIMD

C++数值计算简单加速技术(三)——SIMD1、概述SIMD全称Single Instruction Multiple Data,单指令多数据流,能够复制多个操作数,并把它们打包在大型寄存器的一组指令集。这个技术其实和GPU计算基本相似,就是几个执行部件同时访问内存,一次性获得所有操作数再进行运算,从而掩盖访存的时间开销,实现加速。因此只要能GPU并行的计算都可以通过SIMD优化,在CPU上获...

2019-04-25 00:06:02 9467 10

原创 数值计算优化方法C/C++(四)——矩阵乘法优化示例(访存优化和SIMD的使用)

C++数值计算简单加速技术(四)——矩阵乘法优化示例(访存优化和SIMD的使用)

2019-01-17 18:53:39 10542 14

原创 数值计算优化方法C/C++(二)——表达式模板

表达式模板1、概述其实从某种意义上讲,表达式模板实际是一种模板元编程技术。它是利用模板类来实现在调用某些运算的函数时先不进行计算,而是把运算符和参与运算的变量的引用保存成一个模板类作为一个表达式记录下来,直到最后需要这个表达式结果的时候再进行真正的数值计算,从而延迟计算。那么什么时候我们需要延迟计算呢?最简单的两个例子:1)double f(double a,double b){ if...

2019-01-17 18:53:27 2076 1

原创 数值计算优化方法C/C++(一)——模板元编程

模板元编程1、概述模板元编程是使用C++编译时的模板推导能力进行数值、类型的运算推导的技术。最早的C++的源程序之一是Erwin Unruh在一次C++标准委员会会议上所展示的,那一段代码本身是不能通过编译的但在其编译时的错误提示信息中包含了一系列计算出来的指数值。模版元编程需要很多技巧,常常需要类型重定义、枚举常量、继承、模板偏特化等方法来配合,因此编写模版元编程比较复杂也比较困难。STL中...

2019-01-17 18:53:18 1890

K-Means.cpp

模式识别实验,K-means程序 K均值(K-means)是一种聚类算法,属于无监督学习,采用距离作为相似性指标,从而发现给定数据集中的K个类,且每个类的中心是根据类中所有值的均值得到,每个类用聚类中心来描述。对于给定的一个包含n个d维数据点的数据集X以及要分得的类别K,选取欧式距离作为相似度指标,聚类目标是使得各类的聚类平方和最小。

2020-04-04

空空如也

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

TA关注的人

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