蒙特卡洛方法学习(二)

之前介绍了蒙特卡洛的优势。详情可参考之前的《蒙特卡洛方法学习(一)》。

那么对于我们设计的电路,对于电路中的元器件参数容差,进行统计分布,用一组伪随机数求得元器件的随机抽样序列,对这些随机抽样得到的元器件参数再对设计的电路进行功能仿真,比如:直流分析,交流分析,瞬态分析等等。

利用Multisim进行蒙特卡洛仿真电路。这里举一个简单的例子,如下:

  对于上述电路中,电阻的阻值会有一个容差范围,电容的容值也会有一个容差范围,这些容差会对整个电路带来的影响,可以利用蒙特卡洛方法进行仿真,具体操作如下所示:

(1)设置模型容差列表

  按照上图,打开蒙特卡洛应用。

     上述打开之后,电阻的阻值容差已经直接加载过来了,电容的还没有,可以点击add tolerance。

   从上到下各个含义,相信大家都能看懂。这里不再赘述。

  上述参数添加好后,再点击ok键,可以看到如下图所示,电容C1容差添加进来。依次再添加其他几个电容的容差。

 

(2)分析参数

上述已经将模型的容差列表设置完毕,接下来要设置分析参数,如下所示:

  其中可以选择分析的类型,比如交流分析,直流分析,瞬态分析等等。如下所示:

还可以对所选择的分析进行参数设置,如下图所示,这里笔者保持默认。

   下图是设置仿真的次数,输出变量。这里笔者设置为100次,输出变量不变。

把输出的结果打印在一张图上,可以将下述进行打钩。

(3)最后的结果

  进行多次随机抽样测得结果,基本上参数影响不是很大。

   上图是运行的日志,可以查看影响的结果。

时间: 2024-10-12 03:36:40

蒙特卡洛方法学习(二)的相关文章

蒙特卡洛方法学习(一)

转载:http://www.ruanyifeng.com/blog/2015/07/monte-carlo-method.html 蒙特卡罗方法是一种计算方法.原理是通过大量随机样本,去了解一个系统,进而得到所要计算的值. 它非常强大和灵活,又相当简单易懂,很容易实现.对于许多问题来说,它往往是最简单的计算方法,有时甚至是唯一可行的方法.   一.π的计算 第一个例子是,如何用蒙特卡罗方法计算圆周率π. 正方形内部有一个相切的圆,它们的面积之比是π/4. 现在,在这个正方形内部,随机产生1000

增强学习Reinforcement Learning经典算法梳理2:蒙特卡洛方法

1 前言 在上一篇文章中,我们介绍了基于Bellman方程而得到的Policy Iteration和Value Iteration两种基本的算法,但是这两种算法实际上很难直接应用,原因在于依然是偏于理想化的两个算法,需要知道状态转移概率,也需要遍历所有的状态.对于遍历状态这个事,我们当然可以不用做到完全遍历,而只需要尽可能的通过探索来遍及各种状态即可.而对于状态转移概率,也就是依赖于模型Model,这是比较困难的事情. 什么是状态转移?就比如一颗子弹,如果我知道它的运动速度,运动的当前位置,空气

ios开发runtime学习二:runtime交换方法

#import "ViewController.h" /* Runtime(交换方法):主要想修改系统的方法实现 需求: 比如说有一个项目,已经开发了2年,忽然项目负责人添加一个功能,每次UIImage加载图片,告诉我是否加载成功 当系统提供的控件不能满足我们的需求的时候,我们可以 1:通过继承系统控件,重写系统的方法,来扩充子类的行为(super的调用三种情况) 2:当需要为系统类扩充别的属性或是方法的时候,与哪个类有关系,就为哪个类创建分类.3:利用runtime修改系统的类,增加

OpenCV for Python 学习 (二 事件与回调函数)

今天主要看了OpenCV中的事件以及回调函数,这么说可能不准确,主要是下面这两个函数(OpenCV中还有很多这些函数,可以在 http://docs.opencv.org/trunk/modules/highgui/doc/user_interface.html 找到,就不一一列举了),然后自己做了一个简单的绘图程序 函数如下: cv2.setMouseCallback(windowName, onMouse[, param]) cv2.createTrackbar(trackbarName,

Makefile持续学习二

Makefile概述 一.Makefile里有什么? Makefile里主要包含5个东西:显式规则.隐晦规则.变量定义.文件指示和注释 1.显式规则:显式规则说明如恶化生成一个或多的目标文件,包含要生成的文件,文件的依赖文件,生成的命令 2.隐晦规则:由make自动推动功能完成 3.变量定义:变量一般都是字符串,类似C语言中的宏定义,当Makefile被执行时,其中的变量都会被扩展到相应的引用位置上 4.文件指示: 在一个Makefile中引用另一个Makefile 根据某些情指定Makefil

redis ruby客户端学习( 二)

接上一篇redis ruby客户端学习( 二) 对于redis的五种数据类型:字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets),上一篇介绍了字符串. 1,哈希(Map) hset.设置 key 指定的哈希集中指定字段的值.如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联.如果字段在哈希集中存在,它将被重写. require "redis" r = Redis.new r.hset 'my_h

Jquery Easy UI初步学习(二)datagrid的使用

第一篇学的是做一个管理的外框,接着就是数据datagrid绑定了,这里我用asp.net mvc3来做的,主要就是熟悉属性.方法. 打开easyui的demo 就可以看到如下一段代码: 和上篇一样class="easyui-datagrid", data-options="...",这是一样的,其他我在网上查了查,并做了整理 DataGrid 属性 参数名 类型 描述 默认值 title string Datagrid面板的标题 null iconCls strin

nodejs学习二 深入了解console

上一篇我们用console.log编写了第一个程序,虽然如此简单.那么我就从它来说说Node.js中的对象. 对于学过Java .net 的人来说,对象这个词应该都很亲切,如果不觉得亲切,还是先学习一下面向对象. 我们编程中,一切皆对象.你可以把任何一个东西当做对象. 然而,Node.js中也存在对象,而console也是一种对象.既然是对象,他应该有公有的方法.正如你所看到的,log就是它的方法,貌似还是静态的. 那么console中有哪些方法呢,那我们就让他输出一下吧. 噢,原来consol

JBPM学习(二):ProcessEngine与Service API

1.获取processEngine的方法: a) 方法一 private ProcessEngine processEngine = new Configuration().setResource("jbpm.cfg.xml").buildProcessEngine(); b) 方法二 // 获取单例的ProcessEngine对象,使用的是默认的配置文件(jbpm.cfg.xml) private ProcessEngine processEngine = Configuration