Rho

LBM中的straight boundary及部分代码(以D2Q9为例)

不羁岁月 提交于 2020-08-13 03:16:57
本文将从何雅玲老师的《格子Boltzmann方法的理论和应用》、Yuanxun Bill&Justin Meskas 的《Lattice Boltzmann Method for Fluid SImulations》、Timm Kruger 的《The Lattice Boltzmann Method》以及默罕默德的《格子玻尔兹曼方法——基础与工程应用(附计算机代码)几本书中挑选一些重要的或常用到的直边界进行介绍。 值得一提的是,Timm Kruger里把边界分成两类:link-wise和wet-node。他俩的区别可见下图。Link-wise包括反弹边界条件,wet-node包括平衡格式,非平衡插值格式,非平衡反弹格式等。而何雅玲老师和穆罕默德的《格子玻尔兹曼方法——基础与工程应用(附计算机代码)》等里并没有这两个概念。 在边界条件中应注意未知的是哪几个方向的分布函数,左边界是f1 f5 f8,右边界是f3 f6 f7,上边界是f4 f7 f8,下边界是f2 f5 f6。当然,在每个边界上也可以把个方向的分布函数都给定,这并没有什么影响(这段话主要是针对我学习时搞不懂为什么有的人给了3个,有的给了4个,有的给了8个。。。。后来才发现多给了是不要紧的)。 角点处需要特殊处理,有时往往是角点处理不好导致计算发散或结果不理想。角点处会专门介绍。 周期性边界 (1)标准周期性边界

芯片Timing sign-off Corner理解

纵然是瞬间 提交于 2020-08-12 05:07:21
参考博文:http://blog.sina.com.cn/s/blog_5ced60e80102y7pd.html 一颗健壮的IC芯片应该具有能屈能伸的品质,他需要适应于他所在应用范围内变化的温度、电压,他需要承受制造工艺的偏差,这就需要在设计实现过程中考虑这些变化的温度、电压和工艺偏差。 在STA星球,用 library PVT、RC corner跟OCV 来模拟这些不可控的随机因素。在每个工艺结点,通过大量的建模跟实测,针对每个具体的工艺,foundary厂都会提供一张推荐的timingsignoff表格, 建议需要signoff的corner及各个corner需要设置的ocv跟margin。这些corner能保证大部分芯片可以承受温度、电压跟工艺偏差,一个corner=libraryPVT+ RC corner + OCV,本文将关注于library PVT。 ------OCV(on-chip-variation)也是用来模拟cell的PVT及线的RC变化,与前面两个不同的是,前两者是芯片全局的PVT/RC Corner,OCV是芯片上内的局部偏差(包括process 、 voltage、temperature、network RC)。比如在STA分析setup时,并不是用最慢的library PVT来signoff就是最差情况,对于capture

opencv之霍夫曼变换

给你一囗甜甜゛ 提交于 2020-08-12 04:39:08
霍夫变换不仅可以找出图片中的直线,也可以找出圆,椭圆,三角形等等,只要你能定义出直线方程,圆形的方程等等. 不得不说,现在网上的各种博客质量真的不行,网上一堆文章,乱TM瞎写,误人子弟.本身自己就没有理解的很清楚,又不去读算法实现的源码,写的云山雾罩的,越看越懵逼. 霍夫变换本身的思路是很简明的. 这篇文章我们就以霍夫直线变换说明算法的思想. 霍夫变换 思考一下,二维平面里我们怎么表达直线. 有两种表达方式: 直角坐标系(也叫笛卡尔坐标系) 极坐标系(也叫球坐标系) 第一种就是最常见的直角坐标系下的表达:y=ax+b的形式. 第二种就是极坐标系下的表达: 我们把直角坐标系下的直线方程用r,theta去表达直线方程的斜率和截距. 则得到极坐标下的表达: r=xcosθ+ysinθ 假设图像中某像素点坐标为(x,y).在直角坐标系下穿过这一点我们可以画出无数条直线. 转化到一个r-θ坐标系下,我们就可以绘制出一条曲线. 也就是r=xcosθ+ysinθ中的x,y是已知数,θ和r是未知数 这条曲线上每一个θ对应一个r,代表了一条直线.这些直线的共同点是他们都穿过了坐标为(x,y)的像素点. 针对图像中的每一个像素点,我都可以绘制出一条曲线来表达穿过该点的无数条直线. 那曲线的交点代表什么呢? 很显然,代表着交点处的(θ,r)所代表的直线即穿过了像素点A,又穿过了像素点B,像素点C....

算法岗面试题:模型的bias和variance是什么?用随机森林举例

大兔子大兔子 提交于 2020-08-12 00:18:24
校招在即,准备准备一些面试可能会用到的东西吧。希望这次面试不会被挂。 基本概念 说到机器学习模型的误差,主要就是bias和variance。 Bias:如果一个模型的训练错误大,然后验证错误和训练错误都很大,那么这个模型就是高bias。可能是因为欠拟合,也可能是因为模型是弱分类器。 Variance:模型的训练错误小,但是验证错误远大于训练错误,那么这个模型就是高Variance,或者说它是过拟合。 这个图中,左上角是低偏差低方差的,可以看到所有的预测值,都会落在靶心,完美模型; 右上角是高偏差,可以看到,虽然整体数据预测的好像都在中心,但是波动很大。 【高偏差vs高方差】 在机器学习中,因为偏差和方差不能兼顾,所以我们一般会选择高偏差、低方差的左下角的模型。稳定性是最重要的,宁可所有的样本都80%正确率,也不要部分样本100%、部分50%的正确率。个人感觉,稳定性是学习到东西的体现,高方差模型与随机蒙的有什么区别? 随机森林为例 上面的可能有些抽象,这里用RandomForest(RF)来作为例子: 随机森林是bagging的集成模型,这里: \(RF(x)=\frac{1}{B}\sum^B_{i=1}{T_{i,z_i}(x)}\) RF(x)表示随机森林对样本x的预测值; B表示总共有B棵树; \(z_i\) 表示第i棵树所使用的训练集,是使用bagging的方法

如何用搜狗拼音输入法输入希腊字母及各种上下标

非 Y 不嫁゛ 提交于 2020-08-11 18:14:42
本篇介绍使用搜狗拼音输入法输入希腊字母 工具/原料 搜狗拼音输入法 方法一:软键盘 右击输入法悬浮窗打开菜单-选择软键盘 这里有很多软键盘,其中第二个就是希腊字母软键盘,点击打开 第二次使用可以点击输入法悬浮窗上的软键盘快捷键来快速打开 缺点:使用这个方法要在20多个希腊字母里面寻找,比较考验眼力;输入时必须打开软键盘,输入完再关闭软键盘才能输入其他字符。 END 方法二:自定义短语 右键-设置属性 高级-自定义短语设置 直接编辑配置文件 将以下内容复制粘贴到配置文件最后 ; 希腊字母 alpha,4=α alpha,5=Α beta,4=β beta,5=Β gamma,4=γ gamma,5=Γ delta,4=δ delta,5=Δ epsilon,4=ε epsilon,5=Ε zeta,4=ζ zeta,5=Ζ eta,4=η eta,5=Η theta,4=θ theta,5=Θ iota,4=ι iota,5=Ι kappa,4=κ kappa,5=Κ lambda,4=λ lambda,5=Λ mu,4=μ mu,5=Μ nu,4=ν nu,5=Ν xi,4=ξ xi,5=Ξ omicron,4=ο omicron,5=Ο pi,4=π pi,5=Π rho,4=ρ rho,5=Ρ sigma,4=σ sigma,5=Σ tau,4=τ tau,5=Τ

机器学习入门:极度舒适的GBDT原理拆解

亡梦爱人 提交于 2020-08-11 11:05:40
机器学习入门:极度舒适的GBDT拆解 本文旨用小例子+可视化的方式拆解GBDT原理中的每个步骤,使大家可以彻底理解GBDT Boosting → Gradient Boosting Boosting是集成学习的一种基分类器(弱分类器)生成方式,核心思想是通过迭代生成了一系列的学习器,给误差率低的学习器高权重,给误差率高的学习器低权重,结合弱学习器和对应的权重,生成强学习器。 Boosting算法要涉及到两个部分,加法模型和前向分步算法。 加法模型就是说强分类器由一系列弱分类器线性相加而成。一般组合形式如下: $$F_M(x;P)=\sum_{m=1}^n\beta_mh(x;a_m)$$ 其中,$h(x;a_m)$就是一个个的弱分类器,$a_m$是弱分类器学习到的最优参数,$β_m$就是弱学习在强分类器中所占比重,P是所有$α_m$和$β_m$的组合。这些弱分类器线性相加组成强分类器。 前向分步就是说在训练过程中,下一轮迭代产生的分类器是在上一轮的基础上训练得来的。也就是可以写成这样的形式: $$F_m (x)=F_{m-1}(x)+ \beta_mh_m (x;a_m)$$ Gradient Boosting = Gradient Descent + Boosting Boosting 算法(以AdaBoost为代表)用错分数据点来识别问题,通过调整错分数据点的权重来改进模型

2019全国大学生数学建模竞赛题目 A题 高压油管的压力控制

故事扮演 提交于 2020-08-11 09:46:04
A题 高油管的压力控制 问题1 问题1的第一小问,如何设置单向阀每次开启的时长,使得高压油管内的压力尽可能稳定在 100 M P a 100MPa 1 0 0 M P a 左右。首先要明确高压油管的工作原理以及过程。燃油经过高压油泵从A处进入高压油管,再由喷口B喷出。燃油进入和喷出的间歇性工作过程会导致高压油管内压力的变化。 高压油管内部压力变化 进气状态 高压油管内的初始压力为 100 M P a 100MPa 1 0 0 M P a ,当高压油泵从A出进入高压油管时,此时高压油管的压力是增大的。质量守恒定律,高压油管内的燃油的体积不变,根据密度-质量-体积公式 ρ = m V \mathrm{ \rho}=\frac{m}{V} ρ = V m ​ 质量增大,密度增大,此时高压油管内的压强是增大的。这是在起初一个短时间内的状态。在开启了一段时长后(这段时长的参数是自己设置的,在后面要用到遍历及优化的思想,本题按 0.01 m s 0.01ms 0 . 0 1 m s 遍历搜索最佳时长为 0.29 m s 0.29ms 0 . 2 9 m s ) t 1 (0.287ms) 后,要关闭 10ms 。 在进气阶段两个蓝色标注是非常重要的量 ,我们要记在心里,贯穿整个高压油管工作的始尾。下图取 500 m s 500ms 5 0 0 m s 为界,此时是高压油管只进气压强的变化图。

机器学习入门:极度舒适的GBDT原理拆解

北城以北 提交于 2020-08-11 06:32:46
机器学习入门:极度舒适的GBDT拆解 本文旨用小例子+可视化的方式拆解GBDT原理中的每个步骤,使大家可以彻底理解GBDT Boosting → Gradient Boosting Boosting是集成学习的一种基分类器(弱分类器)生成方式,核心思想是通过迭代生成了一系列的学习器,给误差率低的学习器高权重,给误差率高的学习器低权重,结合弱学习器和对应的权重,生成强学习器。 Boosting算法要涉及到两个部分,加法模型和前向分步算法。 加法模型就是说强分类器由一系列弱分类器线性相加而成。一般组合形式如下: $$F_M(x;P)=\sum_{m=1}^n\beta_mh(x;a_m)$$ 其中,$h(x;a_m)$就是一个个的弱分类器,$a_m$是弱分类器学习到的最优参数,$β_m$就是弱学习在强分类器中所占比重,P是所有$α_m$和$β_m$的组合。这些弱分类器线性相加组成强分类器。 前向分步就是说在训练过程中,下一轮迭代产生的分类器是在上一轮的基础上训练得来的。也就是可以写成这样的形式: $$F_m (x)=F_{m-1}(x)+ \beta_mh_m (x;a_m)$$ Gradient Boosting = Gradient Descent + Boosting Boosting 算法(以AdaBoost为代表)用错分数据点来识别问题,通过调整错分数据点的权重来改进模型

open CV对图像的各类操作

﹥>﹥吖頭↗ 提交于 2020-08-11 06:05:24
本文章用于记录自己使用open CV过程中的要点,便于遗忘时查看。 首先使用 using namespace std; using namespace cv; 避免每次都需要敲 ::cv及::std; 图像的读写显示存取 图像定义: Mat image; 图像读取: imread(const String & filename,int flags = IMREAD_COLOR); 支持格式有: Windows bitmaps - *.bmp, *.dib (always supported) JPEG files - *.jpeg, *.jpg, *.jpe (see the Notes section) JPEG 2000 files - *.jp2 (see the Notes section) Portable Network Graphics - *.png (see the Notes section) WebP - *.webp (see the Notes section) Portable image format - *.pbm, *.pgm, *.ppm *.pxm, *.pnm (always supported) Sun rasters - *.sr, *.ras (always supported) TIFF files - *.tiff, *.tif

Miller Rabin 算法简介

血红的双手。 提交于 2020-08-10 11:51:02
0.1 一些闲话 最近一次更新是在2019年11月12日。之前的文章有很多问题:当我把我的代码交到LOJ上,发现只有60多分。我调了一个晚上,尝试用 {2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 61, 24251, 2147483647, 998244353} 这么一大串数作为基底,然后左改右改,总算过去了。特别感谢 @骗分过样例 的提醒,现在张贴的代码应该是值得信赖的了。 之前我的同学好像就指出过我的文章的很多问题。比如说我之前写到,Miller Rabin在面对合数 \(46856248255981\) 时,如果用 {2,3,7,61,24251} 做基底,是会判断错误的。但实际上,他说他对着我的代码写了一遍,发现这个数是可以判掉的。 OI中的数学需要细心。相比其他算法方面,数学真的不好调试——一个公式算错了,一个下标写反了,程序就错了。而且复杂的数学代码很难用gdb查错,只能反复自己的公式是否写对,并且在转换成代码的时候是否有差错。编程需要细致和求实精神。当你在写代码,亦或是在写题解时,多问自己一个:有没有问题?是不是哪里写错了?这里为什么要这么写?可不可以造数据Hack?尤其是在写博客的时刻,每一个OIer都需要做到足够细致——因为这些文章不是写出来好看,让同学膜拜的,而是真的要帮到网络另一端,需要帮助的人。 这是我尤为欠缺的