美高梅官方网站66159

curvejs 还能根据你的想象力实现很多功能,持续更新中

作者:美高梅官方网站66159    来源:未知    发布时间:2020-03-26 10:04    浏览量:

还记得 window 杰出的显示器爱慕程序《变幻线》吗?

 

首要根源 Scala 语言发明人 Martin Odersky 教授的 Coursera 课程 《Functional Programming Principles in Scala》


《machine learning a probabilistic perspective》部分习题解答,持续更新中

美高梅官方网站66159 1

2. Higher Order Functions

把其他函数作为参数也许充任再次来到值,正是 higher order functions,python 里面也得以观望如此使用的情形。在酷壳上的博客有一个事例正是将函数作为再次来到值。

Chapter 3

Tencent AlloyTeam 刚刚开源了一款 Web 魔幻线条框架 curvejs,可让线条成为一名佳绩的舞者。

2.1 佚名函数

在 python 里边叫 lambda 函数,平时与 map(卡塔尔, filter(State of Qatar, reduce(卡塔尔联合利用,前面也写过一篇这样的博客。

举一个 scala 的 reduce 的例子,f: Int => Int 表示 f 是三个大背头映射到整数的函数,总括上面公式:

美高梅官方网站66159 2

∑bn=af(n)

def sum(f: Int => Int, a: Int, b: Int): Int = {
    def loop(a: Int, acc: Int): Int =
        if (a > b) acc
        else loop(a + 1, f(a) + acc)
    loop(a, 0)
}
def sumInts(a: Int, b: Int) = sum(x => x, a, b)  // f(n)=n
def sumCubes(a: Int, b: Int) = sum(x => x * x * x, a, b)  // f(n)=n*n*n
println(sumInts(2, 7))   //求和
println(sumCubes(3, 10)) //求立方和

Ex 3.2 Beta-Bernoulli模型的边缘似然函数

由3.3.4节取得,后验预测布满为
![][1]
则边际布满为
![][2]
![][3]
![][4]

美高梅官方网站66159 3

2.2 currying

把贰个函数的多少个参数分解成多个函数, 然后把函数多层封装起来,每层函数都回到二个函数去选取下一个参数那样,可以简化函数的八个参数。

// sum 返回函数 sumF,风格与 python 相似
  def sum(f: Int => Int): (Int, Int) => Int = {
    def sumF(a: Int, b:Int): Int =
      if (a > b) 0 else f(a) + sumF(a + 1, b)
    sumF
  }           
  def sumInts = sum(x => x)      
  def sumCubes = sum(x => x * x * x) 

  sumInts(1, 5)            //> res0: Int = 15
  sumCubes(1, 5)           //> res1: Int = 225
  sum(x=>x)(1, 5)          //> res2: Int = 15
  (sum(x=>x))(1, 5)        //> res3: Int = 15

越发轻便的写法:

def sum(f: Int => Int)(a: Int, b: Int): Int =
  if (a > b) 0 else f(a) + sum(f)(a + 1, b)

sum(x => x)(1, 5)  // 第一个()相当于创建了一个匿名函数

mapReduce 达成进度富含 map 一一映射函数和 reduce 函数及单位成分zero(乘为1,加为0),参数包含体系区间 [a, b] 七个参数,如若我们求 [a, b] 区间上装有因素的平方和:

def mapReduce(map: Int => Int, reduce: (Int, Int) => Int, zero: Int)(a: Int, b: Int): Int = 
  if (a > b) zero
  else reduce(map(a), mapReduce(map, reduce, zero)(a + 1, b))
def sumOfSquare(a: Int, b: Int) = mapReduce(x => x*x, (x, y) => x + y, 0)(a, b) //这里确定了三个,留下参数a,b

比如说求立方和,九次方和等,越来越灵活的用法是 map 和 reduce 能够先钦定二个reduce(都以sum),使用时再内定另贰个(map),代码就不贴了。说来讲去,全数mapreduce设置,满含map,reduce, zero, a, b都足以冬辰设置,替换组合成包括分化参数列表的新函数。

Ex 3.3 Beta-Binomial模型的后验预测布满

![][5]
n = 1时
![][6]

使用 curvejs 完成相似《变幻线》的功用只须求几行代码:【DEMO 体验地方】

2.3 类

构造贰个分数(rational)类,达成加减、比尺寸等基本作用。

object rationals {
  val x = new Rational(1, 3)              //> x  : week3.Rational = 1/3
  val y = new Rational(5, 7)              //> y  : week3.Rational = 5/7
  val z = new Rational(3)                 //> z  : week3.Rational = 3/1
  x.numer                                 //> res0: Int = 1
  x.sub(y).sub(z)                         //> res1: week3.Rational = 71/-21
  y.add(y)                                //> res2: week3.Rational = 10/7
  x.less(y)                               //> res3: Boolean = true
  x.max(y)                                //> res4: week3.Rational = 5/7
}

class Rational(x: Int, y: Int) {
  require(y != 0, "denomitor must be nonzero")

  // scala 的构造函数就是执行body
  def this(x: Int) = this(x, 1) // 第二种构造函数, 补全到第一种

  private def gcd(a: Int, b: Int): Int =
    if (b==0) a else gcd(b, a % b) //private函数,求最大公约数

  val numer = x / gcd(x, y)  // 每次构造新类,都化简
  val denom = y / gcd(x, y)  // val,gcd函数只计算一次

  def add(that: Rational) =
    new Rational(
      numer * that.denom + denom * that.numer, // 交叉相乘相加
      denom * that.denom)

  def neg: Rational = new Rational(-numer, denom)

  def sub(that: Rational) = add(that.neg)

  def less(that: Rational) = numer * that.denom < that.numer * denom

  def max(that: Rational) = if (this.less(that)) that else this // this 关键字,表示使用该method的object

  override def toString = numer + "/" + denom // 每次打印类的格式
}

Ex 3.4 Beta updating from censored likelihood

扔掉硬币5次,X为朝上次数。仅仅知道X < 3而不知道X的确切值,求相应后验可能率(未归一化)结果为叁个掺杂分布
![][7]

const  { Stage, Curve, motion } = curvejs

let stage = new Stage(document.getElementById('myCanvas'))

stage.add(new Curve({
    color: '#00FF00',
    data: {value: 0, step: 0.008, width: 600, height: 400},
    motion: motion.noise
}))

function tick(){
    stage.update()
    requestAnimationFrame(tick)
}

tick()

2.4 操作符

c++里面有操作符的重载,在scala里面本事层面上来讲未有操作符那么些定义。比方 1 + 2 实际是 1.+(2)。 + 是目的 1 的一种办法。Scala 完成 1 + 2 这种写法供给二种本领,以地点的例证来深入分析:

  1. 地点的例子中 r.add(s) 能够写成 r add s,任何只包括多少个参数的艺术都得以写成这么的样式,这种做法叫Infix Notation
  2. 但难题是,以往整数的加法是 a + b,分数的加法固然是 a add b,风格不相像。还应该有一个措施叫 Relaxed Identifiers。大约意思是标识符不只能够是字母起初的字符串组成,还能是运算符(假使前面是冒号,加起码二个空格,不然会将冒号也见到标记的一有个别)。

福衢寿车与整数加法风格一模二样的分数运算,代码如下:

package week3

object rationals {
  val x = new Rational(1, 3)              //> x  : week3.Rational = 1/3
  val y = new Rational(5, 7)              //> y  : week3.Rational = 5/7
  val z = new Rational(3)                 //> z  : week3.Rational = 3/1
  -x                                      //> res0: week3.Rational = 1/-3
  x - y - z                               //> res1: week3.Rational = 71/-21
  y + y                                   //> res2: week3.Rational = 10/7
  x < y                                   //> res3: Boolean = true
  x * x + z * z                           //> res4: week3.Rational = 82/9
}

class Rational(x: Int, y: Int) {
  require(y != 0, "denomitor must be nonzero")

  def this(x: Int) = this(x, 1)
  private def gcd(a: Int, b: Int): Int =
    if (b==0) a else gcd(b, a % b)

  val numer = x / gcd(x, y)
  val denom = y / gcd(x, y)

  def + (that: Rational) =
    new Rational(
      numer * that.denom + denom * that.numer,
      denom * that.denom)

  def unary_- : Rational = new Rational(-numer, denom) // unary_:一元运算符和二元运算符不同,一元要特地指出

  def - (that: Rational) = this + -that

  def < (that: Rational) = numer * that.denom < that.numer * denom

  def * (that: Rational) = new Rational(numer * that.numer, denom * that.denom)

  override def toString = numer + "/" + denom // 打印类的格式
}

只顾到地方代码中 x*x + z*z 没用括号也能总括出正确的结果,这是因为 scala 通用一套依据标记符明显运算优先级的准则表。

Scala%20%u4E2D%u7684%u51FD%u6570%u5F0F%u7F16%u7A0B%u57FA%u7840%28%u4E8C%29%0A%3D%3D%3D%0A%0A@%28scala%29%5B%u5B66%u4E60%u7B14%u8BB0%7CCoursera%5D%0A%0A%3E%20%u4E3B%u8981%u6765%u81EA%20Scala%20%u8BED%u8A00%u53D1%u660E%u4EBA%20Martin%20Odersky%20%u6559%u6388%u7684%20Coursera%20%u8BFE%u7A0B%20**%u300AFunctional%20Programming%20Principles%20in%20Scala%u300B**%u3002%0A%0A%0A---%0A%0A%23%232.%20Higher%20Order%20Functions%0A%u628A%u5176%u4ED6%u51FD%u6570%u4F5C%u4E3A%u53C2%u6570%u6216%u8005%u4F5C%u4E3A%u8FD4%u56DE%u503C%uFF0C%u5C31%u662F%20**higher%20order%20functions**%uFF0Cpython%20%u91CC%u9762%u4E5F%u53EF%u4EE5%u770B%u5230%u8FD9%u6837%u4F7F%u7528%u7684%u60C5%u5F62%u3002%u5728%u9177%u58F3%u4E0A%u7684%u535A%u5BA2%u6709%u4E00%u4E2A%u4F8B%u5B50%u5C31%u662F%u5C06%u51FD%u6570%u4F5C%u4E3A%u8FD4%u56DE%u503C%u3002%0A%0A%23%23%232.1%20%u533F%u540D%u51FD%u6570%0A%u5728%20python%20%u91CC%u8FB9%u53EB%20lambda%20%u51FD%u6570%uFF0C%u5E38%u5E38%u4E0E%20map%28%29%2C%20filter%28%29%2C%20reduce%28%29%20%u8054%u5408%u4F7F%u7528%uFF0C%u524D%u9762%u4E5F%u5199%u8FC7%u4E00%u7BC7%u8FD9%u6837%u7684%u535A%u5BA2%u3002%0A%0A%u4E3E%u4E00%u4E2A%20scala%20%u7684%20reduce%20%u7684%u4F8B%u5B50%uFF0C%60f%3A%20Int%20%3D%3E%20Int%60%20%u8868%u793A%20f%20%u662F%u4E00%u4E2A%u6574%u6570%u6620%u5C04%u5230%u6574%u6570%u7684%u51FD%u6570%uFF0C%u8BA1%u7B97%u4E0B%u9762%u516C%u5F0F%uFF1A%0A%24%24%5Csum_%7Bn%3Da%7D%5E%7Bb%7Df%28n%29%24%24%0A%60%60%60scala%0Adef%20sum%28f%3A%20Int%20%3D%3E%20Int%2C%20a%3A%20Int%2C%20b%3A%20Int%29%3A%20Int%20%3D%20%7B%0A%20%20%20%20def%20loop%28a%3A%20Int%2C%20acc%3A%20Int%29%3A%20Int%20%3D%0A%20%20%20%20%20%20%20%20if%20%28a%20%3E%20b%29%20acc%0A%20%20%20%20%20%20%20%20else%20loop%28a%20+%201%2C%20f%28a%29%20+%20acc%29%0A%20%20%20%20loop%28a%2C%200%29%0A%7D%0Adef%20sumInts%28a%3A%20Int%2C%20b%3A%20Int%29%20%3D%20sum%28x%20%3D%3E%20x%2C%20a%2C%20b%29%20%20//%20f%28n%29%3Dn%0Adef%20sumCubes%28a%3A%20Int%2C%20b%3A%20Int%29%20%3D%20sum%28x%20%3D%3E%20x%20*%20x%20*%20x%2C%20a%2C%20b%29%20%20//%20f%28n%29%3Dn*n*n%0Aprintln%28sumInts%282%2C%207%29%29%20%20%20//%u6C42%u548C%0Aprintln%28sumCubes%283%2C%2010%29%29%20//%u6C42%u7ACB%u65B9%u548C%0A%60%60%60%0A%0A%23%23%23%202.2%20currying%0A%0A%u628A%u4E00%u4E2A%u51FD%u6570%u7684%u591A%u4E2A%u53C2%u6570%u5206%u89E3%u6210%u591A%u4E2A%u51FD%u6570%uFF0C%20%u7136%u540E%u628A%u51FD%u6570%u591A%u5C42%u5C01%u88C5%u8D77%u6765%uFF0C%u6BCF%u5C42%u51FD%u6570%u90FD%u8FD4%u56DE%u4E00%u4E2A%u51FD%u6570%u53BB%u63A5%u6536%u4E0B%u4E00%u4E2A%u53C2%u6570%u8FD9%u6837%uFF0C%u53EF%u4EE5%u7B80%u5316%u51FD%u6570%u7684%u591A%u4E2A%u53C2%u6570%u3002%0A%0A%60%60%60scala%0A//%20sum%20%u8FD4%u56DE%u51FD%u6570%20sumF%uFF0C%u98CE%u683C%u4E0E%20python%20%u76F8%u4F3C%0A%20%20def%20sum%28f%3A%20Int%20%3D%3E%20Int%29%3A%20%28Int%2C%20Int%29%20%3D%3E%20Int%20%3D%20%7B%0A%20%20%20%20def%20sumF%28a%3A%20Int%2C%20b%3AInt%29%3A%20Int%20%3D%0A%20%20%20%20%20%20if%20%28a%20%3E%20b%29%200%20else%20f%28a%29%20+%20sumF%28a%20+%201%2C%20b%29%0A%20%20%20%20sumF%0A%20%20%7D%20%20%20%20%20%20%20%20%20%20%20%0A%20%20def%20sumInts%20%3D%20sum%28x%20%3D%3E%20x%29%20%20%20%20%20%20%0A%20%20def%20sumCubes%20%3D%20sum%28x%20%3D%3E%20x%20*%20x%20*%20x%29%20%0A%20%20%0A%20%20sumInts%281%2C%205%29%20%20%20%20%20%20%20%20%20%20%20%20//%3E%20res0%3A%20Int%20%3D%2015%0A%20%20sumCubes%281%2C%205%29%20%20%20%20%20%20%20%20%20%20%20//%3E%20res1%3A%20Int%20%3D%20225%0A%20%20sum%28x%3D%3Ex%29%281%2C%205%29%20%20%20%20%20%20%20%20%20%20//%3E%20res2%3A%20Int%20%3D%2015%0A%20%20%28sum%28x%3D%3Ex%29%29%281%2C%205%29%20%20%20%20%20%20%20%20//%3E%20res3%3A%20Int%20%3D%2015%0A%60%60%60%0A%u66F4%u4E3A%u7B80%u77ED%u7684%u5199%u6CD5%uFF1A%0A%60%60%60scala%0Adef%20sum%28f%3A%20Int%20%3D%3E%20Int%29%28a%3A%20Int%2C%20b%3A%20Int%29%3A%20Int%20%3D%0A%20%20if%20%28a%20%3E%20b%29%200%20else%20f%28a%29%20+%20sum%28f%29%28a%20+%201%2C%20b%29%0A%0Asum%28x%20%3D%3E%20x%29%281%2C%205%29%20%20//%20%u7B2C%u4E00%u4E2A%28%29%u76F8%u5F53%u4E8E%u521B%u5EFA%u4E86%u4E00%u4E2A%u533F%u540D%u51FD%u6570%0A%60%60%60%0AmapReduce%20%u5B9E%u73B0%u8FC7%u7A0B%u5305%u62EC%20map%20%u4E00%u4E00%u6620%u5C04%u51FD%u6570%u548C%20reduce%20%u51FD%u6570%u53CA%u5355%u4F4D%u5143%u7D20%20zero%uFF08%u4E58%u4E3A1%uFF0C%u52A0%u4E3A0%uFF09%uFF0C%u53C2%u6570%u5305%u62EC%u5E8F%u5217%u533A%u95F4%20%5Ba%2C%20b%5D%20%u4E24%u4E2A%u53C2%u6570%uFF0C%u5047%u8BBE%u6211%u4EEC%u6C42%20%5Ba%2C%20b%5D%20%u533A%u95F4%u4E0A%u6240%u6709%u5143%u7D20%u7684%u5E73%u65B9%u548C%uFF1A%0A%60%60%60scala%0Adef%20mapReduce%28map%3A%20Int%20%3D%3E%20Int%2C%20reduce%3A%20%28Int%2C%20Int%29%20%3D%3E%20Int%2C%20zero%3A%20Int%29%28a%3A%20Int%2C%20b%3A%20Int%29%3A%20Int%20%3D%20%0A%20%20if%20%28a%20%3E%20b%29%20zero%0A%20%20else%20reduce%28map%28a%29%2C%20mapReduce%28map%2C%20reduce%2C%20zero%29%28a%20+%201%2C%20b%29%29%0Adef%20sumOfSquare%28a%3A%20Int%2C%20b%3A%20Int%29%20%3D%20mapReduce%28x%20%3D%3E%20x*x%2C%20%28x%2C%20y%29%20%3D%3E%20x%20+%20y%2C%200%29%28a%2C%20b%29%20//%u8FD9%u91CC%u786E%u5B9A%u4E86%u4E09%u4E2A%uFF0C%u7559%u4E0B%u53C2%u6570a%uFF0Cb%0A%60%60%60%0A%u6BD4%u5982%u6C42%u7ACB%u65B9%u548C%uFF0C%u56DB%u6B21%u65B9%u548C%u7B49%uFF0C%u66F4%u7075%u6D3B%u7684%u7528%u6CD5%u662F%20map%20%u548C%20reduce%20%u53EF%u4EE5%u5148%u6307%u5B9A%u4E00%u4E2Areduce%uFF08%u90FD%u662Fsum%uFF09%uFF0C%u4F7F%u7528%u65F6%u518D%u6307%u5B9A%u53E6%u4E00%u4E2A%uFF08map%uFF09%uFF0C%u4EE3%u7801%u5C31%u4E0D%u8D34%u4E86%u3002%u603B%u4E4B%uFF0C%u6240%u6709mapreduce%u8BBE%u7F6E%uFF0C%u5305%u62ECmap%uFF0Creduce%2C%20zero%2C%20a%2C%20b%u90FD%u53EF%u4EE5%u65E0%u5E8F%u8BBE%u7F6E%uFF0C%u66FF%u6362%u7EC4%u5408%u6210%u5305%u542B%u4E0D%u540C%u53C2%u6570%u5217%u8868%u7684%u65B0%u51FD%u6570%u3002%0A%0A%23%23%232.3%20%u7C7B%0A%0A%u6784%u9020%u4E00%u4E2A%u5206%u6570%uFF08rational%uFF09%u7C7B%uFF0C%u5B9E%u73B0%u52A0%u51CF%u3001%u6BD4%u5927%u5C0F%u7B49%u57FA%u672C%u529F%u80FD%u3002%0A%60%60%60scala%0Aobject%20rationals%20%7B%0A%20%20val%20x%20%3D%20new%20Rational%281%2C%203%29%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%3E%20x%20%20%3A%20week3.Rational%20%3D%201/3%0A%20%20val%20y%20%3D%20new%20Rational%285%2C%207%29%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%3E%20y%20%20%3A%20week3.Rational%20%3D%205/7%0A%20%20val%20z%20%3D%20new%20Rational%283%29%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%3E%20z%20%20%3A%20week3.Rational%20%3D%203/1%0A%20%20x.numer%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%3E%20res0%3A%20Int%20%3D%201%0A%20%20x.sub%28y%29.sub%28z%29%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%3E%20res1%3A%20week3.Rational%20%3D%2071/-21%0A%20%20y.add%28y%29%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%3E%20res2%3A%20week3.Rational%20%3D%2010/7%0A%20%20x.less%28y%29%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%3E%20res3%3A%20Boolean%20%3D%20true%0A%20%20x.max%28y%29%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%3E%20res4%3A%20week3.Rational%20%3D%205/7%0A%7D%0A%0Aclass%20Rational%28x%3A%20Int%2C%20y%3A%20Int%29%20%7B%0A%20%20require%28y%20%21%3D%200%2C%20%22denomitor%20must%20be%20nonzero%22%29%0A%20%20%0A%20%20//%20scala%20%u7684%u6784%u9020%u51FD%u6570%u5C31%u662F%u6267%u884Cbody%0A%20%20def%20this%28x%3A%20Int%29%20%3D%20this%28x%2C%201%29%20//%20%u7B2C%u4E8C%u79CD%u6784%u9020%u51FD%u6570%2C%20%u8865%u5168%u5230%u7B2C%u4E00%u79CD%0A%20%20%0A%20%20private%20def%20gcd%28a%3A%20Int%2C%20b%3A%20Int%29%3A%20Int%20%3D%0A%20%20%20%20if%20%28b%3D%3D0%29%20a%20else%20gcd%28b%2C%20a%20%25%20b%29%20//private%u51FD%u6570%uFF0C%u6C42%u6700%u5927%u516C%u7EA6%u6570%0A%20%20%20%20%0A%20%20val%20numer%20%3D%20x%20/%20gcd%28x%2C%20y%29%20%20//%20%u6BCF%u6B21%u6784%u9020%u65B0%u7C7B%uFF0C%u90FD%u5316%u7B80%0A%20%20val%20denom%20%3D%20y%20/%20gcd%28x%2C%20y%29%20%20//%20val%uFF0Cgcd%u51FD%u6570%u53EA%u8BA1%u7B97%u4E00%u6B21%0A%20%20%0A%20%20def%20add%28that%3A%20Rational%29%20%3D%0A%20%20%20%20new%20Rational%28%0A%20%20%20%20%20%20numer%20*%20that.denom%20+%20denom%20*%20that.numer%2C%20//%20%u4EA4%u53C9%u76F8%u4E58%u76F8%u52A0%0A%20%20%20%20%20%20denom%20*%20that.denom%29%0A%20%20%20%20%20%20%0A%20%20def%20neg%3A%20Rational%20%3D%20new%20Rational%28-numer%2C%20denom%29%0A%20%20%0A%20%20def%20sub%28that%3A%20Rational%29%20%3D%20add%28that.neg%29%0A%20%20%0A%20%20def%20less%28that%3A%20Rational%29%20%3D%20numer%20*%20that.denom%20%3C%20that.numer%20*%20denom%0A%20%20%0A%20%20def%20max%28that%3A%20Rational%29%20%3D%20if%20%28this.less%28that%29%29%20that%20else%20this%20//%20this%20%u5173%u952E%u5B57%uFF0C%u8868%u793A%u4F7F%u7528%u8BE5method%u7684object%0A%20%20%20%20%20%20%0A%20%20override%20def%20toString%20%3D%20numer%20+%20%22/%22%20+%20denom%20//%20%u6BCF%u6B21%u6253%u5370%u7C7B%u7684%u683C%u5F0F%0A%7D%0A%60%60%60%0A%0A%23%23%23%202.4%20%u64CD%u4F5C%u7B26%0A%0Ac++%u91CC%u9762%u6709%u64CD%u4F5C%u7B26%u7684%u91CD%u8F7D%uFF0C%u5728scala%u91CC%u9762%u6280%u672F%u5C42%u9762%u4E0A%u6765%u8BF4%u6CA1%u6709%u64CD%u4F5C%u7B26%u8FD9%u4E2A%u6982%u5FF5%u3002%u6BD4%u5982%20%601%20+%202%60%20%u5B9E%u9645%u662F%20%601.+%282%29%60%u3002%20+%20%u662F%u5BF9%u8C61%201%20%u7684%u4E00%u79CD%u65B9%u6CD5%u3002Scala%20%u5B9E%u73B0%20%601%20+%202%60%20%u8FD9%u79CD%u5199%u6CD5%u9700%u8981%u4E24%u79CD%u6280%u672F%uFF0C%u4EE5%u4E0A%u9762%u7684%u4F8B%u5B50%u6765%u5206%u6790%uFF1A%0A%0A1.%20%u4E0A%u9762%u7684%u4F8B%u5B50%u4E2D%20%60r.add%28s%29%60%20%u53EF%u4EE5%u5199%u6210%20%60r%20add%20s%60%uFF0C%u4EFB%u4F55%u53EA%u5305%u542B%u4E00%u4E2A%u53C2%u6570%u7684%u65B9%u6CD5%u90FD%u53EF%u4EE5%u5199%u6210%u8FD9%u6837%u7684%u5F62%u5F0F%uFF0C%u8FD9%u79CD%u505A%u6CD5%u53EB**Infix%20Notation**%u3002%0A2.%20%u4F46%u95EE%u9898%u662F%uFF0C%u73B0%u5728%u6574%u6570%u7684%u52A0%u6CD5%u662F%20%60a%20+%20b%60%uFF0C%u5206%u6570%u7684%u52A0%u6CD5%u5982%u679C%u662F%20%60a%20add%20b%60%uFF0C%u98CE%u683C%u4E0D%u4E00%u81F4%u3002%u8FD8%u6709%u4E00%u4E2A%u65B9%u6CD5%u53EB%20**Relaxed%20Identifiers**%u3002%u5927%u6982%u610F%u601D%u662F%u6807%u5FD7%u7B26%u4E0D%u4EC5%u53EF%u4EE5%u662F%u5B57%u6BCD%u5F00%u5934%u7684%u5B57%u7B26%u4E32%u7EC4%u6210%uFF0C%u8FD8%u53EF%u4EE5%u662F%u8FD0%u7B97%u7B26%uFF08%u5982%u679C%u540E%u9762%u662F%u5192%u53F7%uFF0C%u52A0%u81F3%u5C11%u4E00%u4E2A%u7A7A%u683C%uFF0C%u5426%u5219%u4F1A%u5C06%u5192%u53F7%u4E5F%u770B%u51FA%u6807%u5FD7%u7684%u4E00%u90E8%u5206%uFF09%u3002%0A%0A%u5B9E%u73B0%u4E0E%u6574%u6570%u52A0%u6CD5%u98CE%u683C%u4E00%u81F4%u7684%u5206%u6570%u8FD0%u7B97%uFF0C%u4EE3%u7801%u5982%u4E0B%uFF1A%0A%60%60%60scala%0Apackage%20week3%0A%0Aobject%20rationals%20%7B%0A%20%20val%20x%20%3D%20new%20Rational%281%2C%203%29%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%3E%20x%20%20%3A%20week3.Rational%20%3D%201/3%0A%20%20val%20y%20%3D%20new%20Rational%285%2C%207%29%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%3E%20y%20%20%3A%20week3.Rational%20%3D%205/7%0A%20%20val%20z%20%3D%20new%20Rational%283%29%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%3E%20z%20%20%3A%20week3.Rational%20%3D%203/1%0A%20%20-x%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%3E%20res0%3A%20week3.Rational%20%3D%201/-3%0A%20%20x%20-%20y%20-%20z%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%3E%20res1%3A%20week3.Rational%20%3D%2071/-21%0A%20%20y%20+%20y%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%3E%20res2%3A%20week3.Rational%20%3D%2010/7%0A%20%20x%20%3C%20y%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%3E%20res3%3A%20Boolean%20%3D%20true%0A%20%20x%20*%20x%20+%20z%20*%20z%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20//%3E%20res4%3A%20week3.Rational%20%3D%2082/9%0A%7D%0A%0Aclass%20Rational%28x%3A%20Int%2C%20y%3A%20Int%29%20%7B%0A%20%20require%28y%20%21%3D%200%2C%20%22denomitor%20must%20be%20nonzero%22%29%0A%20%20%0A%20%20def%20this%28x%3A%20Int%29%20%3D%20this%28x%2C%201%29%0A%20%20private%20def%20gcd%28a%3A%20Int%2C%20b%3A%20Int%29%3A%20Int%20%3D%0A%20%20%20%20if%20%28b%3D%3D0%29%20a%20else%20gcd%28b%2C%20a%20%25%20b%29%0A%20%20%20%20%0A%20%20val%20numer%20%3D%20x%20/%20gcd%28x%2C%20y%29%0A%20%20val%20denom%20%3D%20y%20/%20gcd%28x%2C%20y%29%0A%20%20%0A%20%20def%20+%20%28that%3A%20Rational%29%20%3D%0A%20%20%20%20new%20Rational%28%0A%20%20%20%20%20%20numer%20*%20that.denom%20+%20denom%20*%20that.numer%2C%0A%20%20%20%20%20%20denom%20*%20that.denom%29%0A%20%20%20%20%20%20%0A%20%20def%20unary_-%20%3A%20Rational%20%3D%20new%20Rational%28-numer%2C%20denom%29%20//%20unary_%uFF1A%u4E00%u5143%u8FD0%u7B97%u7B26%u548C%u4E8C%u5143%u8FD0%u7B97%u7B26%u4E0D%u540C%uFF0C%u4E00%u5143%u8981%u7279%u5730%u6307%u51FA%0A%20%20%0A%20%20def%20-%20%28that%3A%20Rational%29%20%3D%20this%20+%20-that%0A%20%20%0A%20%20def%20%3C%20%28that%3A%20Rational%29%20%3D%20numer%20*%20that.denom%20%3C%20that.numer%20*%20denom%0A%20%20%0A%20%20def%20*%20%28that%3A%20Rational%29%20%3D%20new%20Rational%28numer%20*%20that.numer%2C%20denom%20*%20that.denom%29%0A%20%20%0A%20%20override%20def%20toString%20%3D%20numer%20+%20%22/%22%20+%20denom%20//%20%u6253%u5370%u7C7B%u7684%u683C%u5F0F%0A%7D%0A%60%60%60%0A%0A%u6CE8%u610F%u5230%u4E0A%u9762%u4EE3%u7801%u4E2D%20%60x*x%20+%20z*z%60%20%u6CA1%u7528%u62EC%u53F7%u4E5F%u80FD%u8BA1%u7B97%u51FA%u51C6%u786E%u7684%u7ED3%u679C%uFF0C%u8FD9%u662F%u56E0%u4E3A%20scala%20%u901A%u7528%u4E00%u5957%u6839%u636E%u6807%u8BC6%u7B26%u786E%u5B9A%u8FD0%u7B97%u4F18%u5148%u7EA7%u7684%u89C4%u5219%u8868%u3002

 

Ex 3.12 非共轭先验的Bernoulli布满参数的MAP估算

除开转变线,curvejs 仍然是能够依靠你的想象力完结无数成效,比方:

a

![][8]
![][9]

  • Scale-To

  • Points-To

  • Rotate

  • 美高梅官方网站66159,Word

  • Perlin-Noise

  • Simple

  • Simple-ES5

  • Lerp Color

  • Curves

  • Line

  • Close

b

当N超级小时,采纳a难题的先验可以获得相比好的揣度,当N超大时使用Beta布满作为先验可以获得相比较好的评估价值
[9]:http://latex.codecogs.com/gif.latex?when%20%5C%20%5Cfrac%7BN_1%7D%7BN_0%7D%20%3E%20%5Cfrac%7Blog%280.6/0.5%29%7D%7Blog%280.5/0.4%29%7D%20%5C%5C%20%5Ctheta%20%3D%200.5%20%5C%5C%20else%20%5C%20%5Ctheta%20%3D%200.4
[8]:http://latex.codecogs.com/gif.latex?p%28%5Ctheta%7CD%29%20%5Cpropto%20p%28%5Ctheta%29p%28D%7C%5Ctheta%29%20%5C%5C%20%3D%20p%28%5Ctheta%29%5Ctheta%5E%7BN_1%7D%281-%5Ctheta%29%5E%7BN%20-%20N_1%7D%20%5C%5C%20%3D%200.5%20%5Cdelta%28%5Ctheta%20-%200.5%29%5Ctheta%5E%7BN_1%7D%281-%5Ctheta%29%5E%7BN%20-%20N_1%7D%20+%200.5%20%5Cdelta%28%5Ctheta%20-%200.4%29%5Ctheta%5E%7BN_1%7D%281-%5Ctheta%29%5E%7BN%20-%20N_1%7D
[7]:http://latex.codecogs.com/gif.latex?p%28%5Ctheta%20%7C%20X%20%3C%203%29%20%5Cpropto%20p%28%5Ctheta%2C%20X%20%3C%203%29%20%5C%5C%20%3D%20%5Csum_%7Bi%20%3D%200%7D%5E%7B2%7Dp%28%5Ctheta%2C%20X%20%3D%20i%20%7C%20n%20%3D%205%29%20%5C%5C%20%3D%20%5Csum_%7Bi%20%3D%200%7D%5E%7B2%7Dp%28%5Ctheta%29P%28X%20%3D%20i%7C%5Ctheta%29%5C%5C%20%3D%5Csum_%7Bi%20%3D%200%7D%5E%7B2%7DC_5%5Ei%5Ctheta%5Ei%281%20-%20theta%29%5E%7B5-i%7D
[1]:http://latex.codecogs.com/gif.latex?p%28X%3Dk%7CD_%7B1%3AN%7D%29%20%3D%20%5Cfrac%7BN_k%20+%20%5Calpha_k%7D%7B%5Csum_i%20N_i%20+%20%5Calpha_i%7D%20%3D%20%5Cfrac%7BN_k%20+%20%5Calpha_k%7D%7BN%20+%20%5Calpha%7D
[2]:http://latex.codecogs.com/gif.latex?p%28D%29%20%3D%20%5Cfrac%7B%5Calpha_1%28%5Calpha_1%20+%201%29...%28%5Calpha_1%20+%20N_1%20-1%29%5Calpha_0%28%5Calpha_0%20+%201%29...%28%5Calpha_0%20+%20N_0%20-1%29%7D%7B%5Calpha%28%5Calpha%20+%201%29...%28%5Calpha%20+%20N%20-1%29%7D
[3]:http://latex.codecogs.com/gif.latex?%3D%5Cfrac%7B%28%20%5Calpha_1%20+%20N_1%20-%201%29%21%7D%7B%28%5Calpha_1%20-%201%29%21%7D%5Cfrac%7B%28%5Calpha_0%20+%20N_0%20-1%29%21%7D%7B%28%5Calpha_0%20-%201%29%21%7D%5Cfrac%7B%28%5Calpha%20-%201%29%21%7D%7B%28%5Calpha%20+%20N%20-%201%29%21%7D
[4]:http://latex.codecogs.com/gif.latex?%5Cfrac%7B%5CGamma%28%5Calpha_1%20+%20N_1%29%5CGamma%28%5Calpha_0%20+%20N_0%29%5CGamma%28%5Calpha%29%7D%7B%5CGamma%28%5Calpha_1%29%5CGamma%28%5Calpha_0%29%5CGamma%28%5Calpha%20+%20N%29%7D
[5]:http://latex.codecogs.com/gif.latex?p%28x%7C%20n%2CD%29%20%3D%20Bb%28x%7C%5Calpha_0%27%2C%5Calpha_1%27%2Cn%29%20%5C%5C%20%3D%20C_n%5Ex%5Cfrac%7BB%28x%20+%20%5Calpha_1%27%2Cn-x+%5Calpha_0%27%20%29%7D%7BB%28%5Calpha_0%27%2C%20%5Calpha_1%27%29%7D%20%5C%5C%20%3D%20C_n%5Ex%5Cfrac%7B%5CGamma%28x%20+%20%5Calpha_1%27%29%5CGamma%28n-x+%5Calpha_0%27%29%7D%7B%5CGamma%28%5Calpha_0%27+n+%5Calpha_1%27%29%7D%5Cfrac%7B%5CGamma%28%5Calpha_0%27+%5Calpha_1%27%29%7D%7B%5CGamma%28%5Calpha_0%27%29%5CGamma%28%5Calpha_1%27%29%7D
[6]:http://latex.codecogs.com/gif.latex?x%20%5Cin%20%5C%7B0%2C1%5C%7D%20%5C%5C%20p%28x%20%3D%201%20%7C%201%2CD%29%20%3D%20%5Cfrac%7B%5CGamma%281%20+%20%5Calpha_1%27%29%7D%7B%5CGamma%28%5Calpha_1%27%29%7D%5Cfrac%7B%5CGamma%28%5Calpha_0%27%29%7D%7B%5CGamma%28%5Calpha_0%27%29%7D%5Cfrac%7B%5CGamma%28%5Calpha_0%27%20+%20%5Calpha_1%27%29%7D%7B%5CGamma%28%5Calpha_0%27%20+%20%5Calpha_1%27%20+%201%29%7D%20%5C%5C%20%3D%20%5Cfrac%7B%5Calpha_1%27%20+%201%7D%7B%5Calpha_0%27%20+%20%5Calpha_1%27%20+%201%7D

切切实实使用指南和法规请查看官方文书档案和演示 Demo%0Alet%20stage%20%3D%20new%20Stage(canvas)%0A%0Aconst%20data%20%3D%20%5B%0A%20%20%20%20%5B70%2C70%2C12%2C76%2C12%2C123%2C70%2C128%5D%2C%0A%20%20%20%20%5B25%2C68%2C23%2C140%2C80%2C140%2C74%2C100%5D%2C%0A%20%20%20%20%5B73%2C62%2C72%2C90%2C75%2C110%2C93%2C134%5D%2C%0A%20%20%20%20%5B21%2C62%2C21%2C62%2C21%2C128%2C21%2C128%5D%2C%0A%20%20%20%20%5B21%2C128%2C17%2C96%2C17%2C68%2C65%2C60%5D%2C%0A%20%20%20%20%5B12%2C58%2C41%2C132%2C61%2C132%2C96%2C58%5D%2C%0A%20%20%20%20%5B44%2C104%2C112%2C52%2C-20%2C82%2C77%2C136%5D%2C%0A%20%20%20%20%5B52%2C48%2C53%2C48%2C54%2C49%2C52%2C48%5D%2C%0A%20%20%20%20%5B8%2C175%2C24%2C204%2C60%2C197%2C56%2C74%5D%2C%0A%20%20%20%20%5B81%2C72%2C17%2C42%2C105%2C145%2C41%2C120%5D%0A%5D%0Aconst%20position%20%3D%20%5B0%2C0%2C60%2C0%2C60%2C0%2C145%2C0%2C145%2C0%2C210%2C10%2C280%2C-5%2C350%2C0%2C350%2C0%2C400%2C0%20%5D%0Aconst%20colors%20%3D%20%5B%27%2322CAB3%27%2C%27%2322CAB3%27%2C%27%2322CAB3%27%2C%27%2322CAB3%27%2C%27%2322CAB3%27%2C%27%2322CAB3%27%2C%27%2322CAB3%27%2C%27%23FF7784%27%2C%27%23FF7784%27%2C%27%23FF7784%27%5D%0Aconst%20rd%20%3D%20function()%20%7B%0A%20%20%20%20return%20-2%20%2B%20Math.random()%20%202%0A%7D%0A%0Aconst%20rdX%20%3D%20function()%20%7B%0A%20%20%20%20return%2010%20%2B%20Math.floor(Math.random()%20%20(canvas.width%20-%2020%20%2B%201))%0A%7D%0A%0Aconst%20rdY%20%3D%20function()%20%7B%0A%20%20%20%20return%2010%20%2B%20Math.floor(Math.random()%20%20(canvas.height%20-%2020%20%2B%201))%0A%7D%0A%0Aconst%20motionFn%20%3D%20function%20motion(points%2C%20data)%20%7B%0A%20%20%20%20points.forEach((item%2C%20index)%3D%3E%20%7B%0A%20%20%20%20%20%20%20%20points%5Bindex%5D%20%2B%3D%20data%5Bindex%5D%0A%0A%0A%20%20%20%20%20%20%20%20if%20(index%20%25%202%20%3D%3D%3D%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(points%5Bindex%5D%20%2B%20this.x%20%3C%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20points%5Bindex%5D%20%3D%20-this.x%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20data%5Bindex%5D%20%3D%20-1%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(points%5Bindex%5D%20%2B%20this.x%20%3E%20canvas.width)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20points%5Bindex%5D%20%3D%20canvas.width%20-%20this.x%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20data%5Bindex%5D%20%3D%20-1%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(points%5Bindex%5D%20%2B%20this.y%20%3C%200)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20points%5Bindex%5D%20%3D%20-this.y%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20data%5Bindex%5D%20%3D%20-1%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20if%20(points%5Bindex%5D%20%2B%20this.y%20%3E%20canvas.height)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20points%5Bindex%5D%20%3D%20canvas.height%20-%20this.y%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20data%5Bindex%5D%20%3D%20-1%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D)%0A%7D%0A%0Aconst%20dance%20%3D%20function()%7B%0A%20%20%20%20stage.children.forEach((child%20%2Cindex)%3D%3E%7B%0A%20%20%20%20%20%20%20%20child.pause()%0A%20%20%20%20%20%20%20%20child.pointsTo(data%5Bindex%5D%2C2000%2C%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20end%3Afunction()%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20setTimeout(()%3D%3E%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20this.play()%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%7D%2C3000)%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D)%0A%20%20%20%20%7D)%0A%7D%0A%0A%0A%3B(function%20main()%7B%0A%20%20%20%20for(let%20i%20%3D%200%20%3Bi%20%3C%2010%3B%20i%2B%2B)%20%7B%0A%0A%20%20%20%20%20%20%20%20let%20curve%20%3D%20new%20Curve(%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20x%3A%20position%5Bi%20%202%5D%20%2B%2030%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20y%3A%20position%5Bi%20*%202%20%2B%201%5D%20%2B%2080%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20color%3A%20colors%5Bi%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20points%3A%20%5BrdX()%2C%20rdY()%2C%20rdX()%2C%20rdY()%2C%20rdX()%2C%20rdY()%2C%20rdX()%2C%20rdY()%5D%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20motion%3A%20motionFn%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20data%3A%20%5Brd()%2C%20rd()%2C%20rd()%2C%20rd()%2C%20rd()%2C%20rd()%2C%20rd()%2C%20rd()%5D%2C%0A%20%20%20%20%20%20%20%20%7D)%0A%20%20%20%20%20%20%20%20stage.add(curve)%0A%20%20%20%20%7D%0A%0A%20%20%20%20setTimeout(()%3D%3Edance()%2C2000)%0A%20%20%20%20setInterval(()%3D%3Edance()%2C10000)%0A%7D)())。

(文/开源中夏族民共和国State of Qatar    

上一篇:没有了

更多新闻推荐

Copyright © 2015-2019 http://www.77zhth.net. 美高梅官方网站66159有限公司 版权所有