(挑战智慧极限系列)面向对象的物理电学

前言:

        最近几日看到留言中的讨论,觉得有一些人非常的浮躁,但也很高兴能有几位对数学比较熟的人,有些题目都没看完就在这里乱逞能,对于这些人,我希望能先把题目看完。我的五张电路图,前三张都不难,用数学和电学知识一定可以仿真的,它们是对已知领域的实现,因为回路状态是可以计算出来的。但图四、图五以及附注里面的才是我真正想解决的问题。在已知规则中加入了未知的因素,便是将有序状态变成了无序状态。如果未知元素不符合现有规则,我们还可以去用数学算出来吗?如果我们有1万个乃至100万个元素,我们还去计算它的整体方程吗?

       比如图中?所代表的元件。它的算式可能如下,也可能更复杂:

       0~1v:它是一个绝缘体
       1~2v:它是可变电阻,阻值呈抛物线状。
       2~3v:它是每隔0.1v为单位的十层跃迁电阻。
       4~4.5v:它是一个电源。
       4.5v以上:它到达临界点,核电池爆炸发出强电压高电流烧毁周边部分元件。当周边元件被烧毁,每隔一个t时间的刷新要求来临,我们仍然要计算机出图的状态。

     想出售系统的先掂量一下自己能否做到,类似路由和普通电路仿真系统之类我自己都可以做,而且我又不是要靠做project赚钱,买来何用?

        本人出的题目,各位大人先贤可以努力思考,如果您能够想出这道题的解法,您可以自豪的去微软或者Google应聘了,我相信能看懂这些题的人肯定都是具备雄厚的编程功底了,能解决这类题目的人都是天才中的天才,精英中的精英。在看题之前,首先您要确认自己不但有高超的智慧,还要有丰富的编程经验,同时要对面向对象和设计模式非常的熟悉。但即使您具备了这一点,您也要考虑到这些题目也不一定有解。

        实现已知的理论,这仅仅称为技术,
        探索未知的领域,才是科学的真谛!!!
        你是愿意成为大师,还是愿意成为工匠?

         题目一:

        设计一套基于物理电路的CAD(计算机辅助制图/设计)仿真系统。该系统务求完美,至少它能够通过一个统一的思想完成以下五个示例图的仿真和运算。我和朋友在开发该仿真系统时对这种需求的无从下手,最终的设计还是仅能满足可以进行单向图遍历非反馈的数字电路仿真。

       在计算机辅助制图上可以采用了《设计模式》一书中的Lexi的例子和参考微软的DrawCli这套代码。

       在元件的基础类设计上,大家可以参考如下设计:
       图元基础属性包括:图元ID,类ID,图元Hint,图元Pin脚(Pin脚分为In、Out、In/Out三种,Pin脚承载电压),是否启动设备,等等。所谓的电器元件的阻抗和属性全部交由内部计算获得,对于欧姆电阻就是公式为线性运算的元件。

图一:这是一个最简单的物理电路图,它由图元对象5V电源催动,电流通过电源发出,向整个图遍历,最终回到电源的负极。在这里,我们还可以认为是一个有向图。如果只是这种方式,我们可以通过并联电阻公式计算两个节点之间的电阻值来计算电路电流从而进行模拟。

图二:这里,我们的图已经比上一个复杂多了。我们已经比较难于用并联电阻公式来计算并联值了。在仿真的难度上增加了很多。

图三:图中,7所代表的位置是一个电容或者电感二极管,重所周知,电容和电感的电阻阻值是不确定的,它是一条曲线或者波浪型。假设我们编程对电容元件派生类进行控制,它每个时刻的电阻阻值和电流值是可以算出的,那么这已经不是简单的可以用公式计算出回路电阻阻值了,尤其当它是二极管的时候,可能突然就允许电流通过了,也可能永远不让通过,那么我们也许只能采用模糊数学逼近法计算可能的电流值,但首先那不是一个好方法,其次会在模拟系统中导致器件的模拟损坏。

图四:这里的?电器元件是一个需要待测的元件,也许是我们在派生创建该元件的时候没有对该元件的参数进行有效的标注,也许是某一个高人开发了这个元件之后就离职了,但我们现在就要用这个元件进行演示,对于该元件来说,它内部的汇编代码记录了自己的实现。因此,我们的模拟系统中需要激活该元件的功能,这直接导致了计算全系统电阻阻值已经是不可能的事情了,而逼近法却有可能导致一个二极管元器件的损坏。  

5V

50

 

 

 

 

图5:图4的逼近版,为了防止在前四个仿真体系中投机取巧,它里面有两个未知电元件,但都是有具体实现并且符合初始派生类的设计,要求该系统也能运作。

        注:不同于目前其他的仿真系统,比如路由仿真系统,这种可控数字信号的模拟是非常简单的,数字系统数据的传递是不会造成反馈的,比如路由器接受到IP包之后只需要向其下一条转发即可,对于路由器本身,只要模拟了它的所有协议,那么从任意一个节点出发,都可以造成其相邻节点的行为响应以把整个系统运行起来。数字电路大都也可以有类似方式进行。但模拟电路仿真系统不一样,大家只要上过高中物理就知道,在一个负载的电路上,中间可能串接不同的电容甚至二极管三极管乃至未知导体。当然,在我们面向对象的编程中,电容的设计都可以由基类接口保证的,但它们的内部Action使我们无法去运算出整个回路的等效电阻。更何况,当许多元件组成一个超大回路后,想通过各种方程通过计算一次性得到系统状态的目的将落空。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 28
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值