V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
einsxiao
V2EX  ›  分享发现

算力最强云笔记 DocRun 之最个性语言 Pond 之二项式分解

  •  
  •   einsxiao · 2020-10-24 12:30:20 +08:00 · 1585 次点击
    这是一个创建于 1495 天前的主题,其中的信息可能已经有所发展或是发生改变。

    DocRun 除了支持双向连接双栏编辑,文档拓扑关系图,调用本地 Python/Matlab/R 之类的环境之外,还支持直接运行 Pond

    Pond 语言简易文档

    Pond 具备强力表达式引擎,这里以二项式分解为例: 暴力展开

    # 多项式暴力展开
    clear(x,y)
    (x+y)^8 //.{
      (a~+b~)^n~:>a*(a+b)^(n-1)+b*(a+b)^(n-1), 
      a~~*(b~+c~~):>Times(a)*b+Times(a)*Plus(c) 
    } 
    

    使用杨辉三角优化

    N=18; c = [1,2,1]; #二项式的系数
    Do(c=Join(1,Table(c[i-1]+c[i],{i,c.size(),2,-1}),1),{N-2} )
    (x+y)^N/.{(a~+b~)^(n~Number?$>1&):>Plus@@Table(c[i+1]*a^i*b^(n-i), {i,0,n} ) } 
    

    ->上例可运行代码及运行结果

    4 条回复    2020-10-25 18:44:02 +08:00
    whileFalse
        1
    whileFalse  
       2020-10-24 15:27:47 +08:00
    所以为什么要设计一个新的语言呢?
    einsxiao
        2
    einsxiao  
    OP
       2020-10-25 16:12:57 +08:00
    @whileFalse 大概有这些理由:

    * 作者很迷 Mathematica,可是 Mathematica 很封闭,Pond 是开放的

    * Pond 的内核和 Mathematica 相似,但是兼容了目前流行的 js 、python 的语法系统,上手使用没有违和感

    * 用户可以把自己的代码添加到 Pond 系统中,并且不同用户之间的 Pond 代码可以相互调用

    * Pond 可以无依赖直接在浏览器运行
    whileFalse
        3
    whileFalse  
       2020-10-25 16:27:40 +08:00
    @einsxiao 那么 Pond 语言是一个独立的语言,还是 DocRun 的一部分呢?
    einsxiao
        4
    einsxiao  
    OP
       2020-10-25 18:44:02 +08:00
    @whileFalse Pond 是一个独立的语言,在 DocRun 运行的 Pond 是 DocRun 的一个特殊版本(使用 wasm 直接在浏览器运行)
    Pond 本来的部分,是在我研究生所在组实验室作为计算时沟通高性能 C++和 cuda 代码沟通的建模语言(譬如有保证和 GPU 编程效率的各种语法糖),目前主要的模块代码集中应用在材料的相场计算领域。
    这部分工作在做商业化尝试,应该过一段时间会开源出来。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1012 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 21:15 · PVG 05:15 · LAX 13:15 · JFK 16:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.