回到简体

This commit is contained in:
chai2010
2016-02-15 11:06:34 +08:00
parent 9e878f9944
commit 2b37b23285
177 changed files with 2354 additions and 2354 deletions

View File

@@ -1,6 +1,6 @@
## 3.3. 複數
## 3.3. 复数
Go言提供了兩種精度的複數類complex64和complex128分别對應float32和float64兩種浮點數精度。置的complex函數用於構建複數,內建的real和imag函分别返迴複數的實部和部:
Go言提供了两种精度的复数类complex64和complex128分别对应float32和float64两种浮点数精度。置的complex函数用于构建复数,内建的real和imag函分别返回复数的实部和部:
```Go
var x complex128 = complex(1, 2) // 1+2i
@@ -10,28 +10,28 @@ fmt.Println(real(x*y)) // "-5"
fmt.Println(imag(x*y)) // "10"
```
如果一個浮點數面值或一個十進製整數面值面跟着一i例如3.141592i或2i將構成一個複數的虛部,複數的實部是0
如果一个浮点数面值或一个十进制整数面值面跟着一i例如3.141592i或2i将构成一个复数的虚部,复数的实部是0
```Go
fmt.Println(1i * 1i) // "(-1+0i)", i^2 = -1
```
在常量算術規則下,一個複數常量可以加到另一普通值常量(整或浮點數、實部或部),我可以用自然的方式書寫複數就像1+2i或之等價的寫法2i+1。上面x和y的聲明語句還可以化:
在常量算术规则下,一个复数常量可以加到另一普通值常量(整或浮点数、实部或部),我可以用自然的方式书写复数就像1+2i或之等价的写法2i+1。上面x和y的声明语句还可以化:
```Go
x := 1 + 2i
y := 3 + 4i
```
複數也可以用==和!=行相等比較。隻有兩個複數的實部和部都相等的候它才是相等的(譯註:浮點數的相等比是危的,需要特别小心理精度問題)。
复数也可以用==和!=行相等比较。只有两个复数的实部和部都相等的候它才是相等的(译注:浮点数的相等比是危的,需要特别小心理精度问题)。
math/cmplx包提供了複數處理的多函,例如求複數的平方根函和求冪函數
math/cmplx包提供了复数处理的多函,例如求复数的平方根函和求幂函数
```Go
fmt.Println(cmplx.Sqrt(-1)) // "(0+1i)"
```
下面的程序使用complex128複數算法生成一Mandelbrot像。
下面的程序使用complex128复数算法生成一Mandelbrot像。
<u><i>gopl.io/ch3/mandelbrot</i></u>
```Go
@@ -81,16 +81,16 @@ func mandelbrot(z complex128) color.Color {
}
```
於遍歷1024x1024像每個點的兩個嵌套的循環對應-2到+2區間的複數平面。程序反複測試每個點對應複數值平方值加一增量值對應的點是否超出半徑爲2的。如果超了,通過根據預設置的逃逸迭代次數對應的灰度顔色來代替。如果不是,那麽該點屬於Mandelbrot集合使用黑色顔色標記。最程序生成的PNG格式分形圖像圖像輸出到標準輸出,如3.3所示。
于遍历1024x1024像每个点的两个嵌套的循环对应-2到+2区间的复数平面。程序反复测试每个点对应复数值平方值加一增量值对应的点是否超出半径为2的。如果超了,通过根据预设置的逃逸迭代次数对应的灰度颜色来代替。如果不是,那么该点属于Mandelbrot集合使用黑色颜色标记。最程序生成的PNG格式分形图像图像输出到标准输出,如3.3所示。
![](../images/ch3-03.png)
**練習 3.5** 實現一個綵色的Mandelbrot使用image.NewRGBA創建圖使用color.RGBA或color.YCbCr生成色。
**练习 3.5** 实现一个彩色的Mandelbrot使用image.NewRGBA创建图使用color.RGBA或color.YCbCr生成色。
**練習 3.6** 陞采樣技術可以降低每像素對計算顔色值和平均值的影響。簡單的方法是將每個像素分層四個子像素,實現它。
**练习 3.6** 升采样技术可以降低每像素对计算颜色值和平均值的影响。简单的方法是将每个像素分层四个子像素,实现它。
**練習 3.7** 另一生成分形像的方式是使用牛頓法來求解一個複數方程,例如$$z^4-1=0$$。每個起點到四根的迭代次數對應陰影的灰度。方程根對應的點用顔色表示。
**练习 3.7** 另一生成分形像的方式是使用牛顿法来求解一个复数方程,例如$$z^4-1=0$$。每个起点到四根的迭代次数对应阴影的灰度。方程根对应的点用颜色表示。
**練習 3.8**提高精度生成更多别的分形。使用四不同精度型的數字實現相同的分形complex64、complex128、big.Float和big.Rat。後面兩種類型在math/big包明。Float是有指定限精度的浮點數Rat是效精度的有理。)它們間的性能和存使用比如何?渲染圖可見時縮放的别是多少?
**练习 3.8**提高精度生成更多别的分形。使用四不同精度型的数字实现相同的分形complex64、complex128、big.Float和big.Rat。后面两种类型在math/big包明。Float是有指定限精度的浮点数Rat是效精度的有理。)它们间的性能和存使用比如何?渲染图可见时缩放的别是多少?
**練習 3.9** 編寫一個web服器,用於給客戶端生成分形的像。行客端用HTTP參數參數指定x,y和zoom參數
**练习 3.9** 编写一个web服器,用于给客户端生成分形的像。行客端用HTTP参数参数指定x,y和zoom参数