Go语言实现线性回归

文章目录


在这里插入图片描述

思路

首先,构造一些随机数据,这些数据大致分布在y=2x+b附近
我们要拟合的方程是y=mx+c,也就是要确定方程的系数m和c
将数据输入到方程得到预测结果,然后将预测结果与实际结果求均方差
我们优化的目标就是使得均方差最小,这里直接选择迭代500次,然后输出结果

具体实现代码如下:

代码

package main

import (
	"fmt"
	"math/rand"
	"runtime"
	"time"
)
import . "gorgonia.org/tensor"
import G "gorgonia.org/gorgonia"

const vecSize = 1000000

// 实现线性回归
func main() {
	var m, c G.Value

	m, c = LinearRegression(Float32, 500)
	fmt.Printf("Float32: y = %3.2fx + %3.3f", m, c)

	fmt.Println()

	m, c = LinearRegression(Float64, 500)
	fmt.Printf("Float64: y = %3.2fx + %3.3f", m, c)
}

// 构造数据
func xy(dt Dtype) (x Tensor, y Tensor) {
	var xBack, yBack interface{}
	switch dt {
	case Float32:
		xBack = Range(Float32, 1, vecSize+1).([]float32)
		yBackC := Range(Float32, 1, vecSize+1).([]float32)
		for i, v := range yBackC {
			yBackC[i] = v*2 + rand.Float32()
		}
		yBack = yBackC
	case Float64:
		xBack = Range(Float64, 1, vecSize+1).([]float64)
		yBackC := Range(Float64, 1, vecSize+1).([]float64)
		for i, v := range yBackC {
			yBackC[i] = v*2 + rand.Float64()
		}
		yBack = yBackC
	}
	return New(WithBacking(xBack), WithShape(vecSize)), New(WithBacking(yBack), WithShape(vecSize))
}

// 产生随机数
func random(dt Dtype) interface{} {
	rand.Seed(time.Now().UnixNano())
	switch dt {
	case Float32:
		return rand.Float32()
	case Float64:
		return rand.Float64()
	default:
		panic("错误的类型")
	}
}

func LinearRegressionSetup(dt Dtype)(m , c *G.Node, machine G.VM)  {
	var xT, yT G.Value
	xT, yT = xy(dt)

	g := G.NewGraph()
	x := G.NewVector(g, dt, G.WithShape(vecSize), G.WithName("x"), G.WithValue(xT))
	y := G.NewVector(g, dt, G.WithShape(vecSize), G.WithName("y"), G.WithValue(yT))

	m = G.NewScalar(g, dt, G.WithName("m"), G.WithValue(random(dt)))
	c = G.NewScalar(g, dt, G.WithName("c"), G.WithValue(random(dt)))

	// y = m * x + c
	pred := G.Must(G.Add(G.Must(G.Mul(x, m)), c))

	// 使得均方差最小
	se := G.Must(G.Square(G.Must(G.Sub(pred, y))))
	cost := G.Must(G.Mean(se))
	if _, err := G.Grad(cost, m, c); err != nil {
		fmt.Println(err)
	}
	machine = G.NewTapeMachine(g, G.BindDualValues(m, c))
	return m, c, machine
}

func LinearRegressionRun(m, c *G.Node, machine G.VM, iter int, autoClean bool)(retM, retC G.Value) {
	if autoClean {
		defer machine.Close()
	}
	model := []G.ValueGrad{m, c}
	solver := G.NewVanillaSolver(G.WithLearnRate(0.001), G.WithClip(5))
	var err error
	for i := 0; i < iter; i++ {
		if err = machine.RunAll(); err != nil {
			fmt.Println(i ,err)
			break
		}
		if err = solver.Step(model); err != nil {
			fmt.Println(err)
		}
		fmt.Printf("%d: m = %3.2f, c = %3.2f\n", i+1, m.Value(), c.Value())
		machine.Reset()
	}
	return m.Value(), c.Value()
}

// 线性回归
func LinearRegression(Float Dtype, iter int)(retM, retC G.Value) {
	m, c, machine := LinearRegressionSetup(Float)
	defer runtime.GC()
	return LinearRegressionRun(m, c, machine, iter, true)
}

结果

1: m = 0.97, c = 0.97
2: m = 0.97, c = 0.97
3: m = 0.98, c = 0.98
4: m = 0.98, c = 0.98
5: m = 0.99, c = 0.99
6: m = 0.99, c = 0.99
7: m = 1.00, c = 1.00
8: m = 1.00, c = 1.00
9: m = 1.01, c = 1.01
10: m = 1.01, c = 1.01
11: m = 1.02, c = 1.02
12: m = 1.02, c = 1.02
13: m = 1.03, c = 1.03
14: m = 1.03, c = 1.03
15: m = 1.04, c = 1.04
16: m = 1.04, c = 1.04
17: m = 1.05, c = 1.05
18: m = 1.05, c = 1.05
19: m = 1.06, c = 1.06
20: m = 1.06, c = 1.06
21: m = 1.07, c = 1.07
22: m = 1.07, c = 1.07
23: m = 1.08, c = 1.08
24: m = 1.08, c = 1.08
25: m = 1.09, c = 1.09
26: m = 1.09, c = 1.09
27: m = 1.10, c = 1.10
28: m = 1.10, c = 1.10
29: m = 1.11, c = 1.11
30: m = 1.11, c = 1.11
31: m = 1.12, c = 1.12
32: m = 1.12, c = 1.12
33: m = 1.13, c = 1.13
34: m = 1.13, c = 1.13
35: m = 1.14, c = 1.14
36: m = 1.14, c = 1.14
37: m = 1.15, c = 1.15
38: m = 1.15, c = 1.15
39: m = 1.16, c = 1.16
40: m = 1.16, c = 1.16
41: m = 1.17, c = 1.17
42: m = 1.17, c = 1.17
43: m = 1.18, c = 1.18
44: m = 1.18, c = 1.18
45: m = 1.19, c = 1.19
46: m = 1.19, c = 1.19
47: m = 1.20, c = 1.20
48: m = 1.20, c = 1.20
49: m = 1.21, c = 1.21
50: m = 1.21, c = 1.21
51: m = 1.22, c = 1.22
52: m = 1.22, c = 1.22
53: m = 1.23, c = 1.23
54: m = 1.23, c = 1.23
55: m = 1.24, c = 1.24
56: m = 1.24, c = 1.24
57: m = 1.25, c = 1.25
58: m = 1.25, c = 1.25
59: m = 1.26, c = 1.26
60: m = 1.26, c = 1.26
61: m = 1.27, c = 1.27
62: m = 1.27, c = 1.27
63: m = 1.28, c = 1.28
64: m = 1.28, c = 1.28
65: m = 1.29, c = 1.29
66: m = 1.29, c = 1.29
67: m = 1.30, c = 1.30
68: m = 1.30, c = 1.30
69: m = 1.31, c = 1.31
70: m = 1.31, c = 1.31
71: m = 1.32, c = 1.32
72: m = 1.32, c = 1.32
73: m = 1.33, c = 1.33
74: m = 1.33, c = 1.33
75: m = 1.34, c = 1.34
76: m = 1.34, c = 1.34
77: m = 1.35, c = 1.35
78: m = 1.35, c = 1.35
79: m = 1.36, c = 1.36
80: m = 1.36, c = 1.36
81: m = 1.37, c = 1.37
82: m = 1.37, c = 1.37
83: m = 1.38, c = 1.38
84: m = 1.38, c = 1.38
85: m = 1.39, c = 1.39
86: m = 1.39, c = 1.39
87: m = 1.40, c = 1.40
88: m = 1.40, c = 1.40
89: m = 1.41, c = 1.41
90: m = 1.41, c = 1.41
91: m = 1.42, c = 1.42
92: m = 1.42, c = 1.42
93: m = 1.43, c = 1.43
94: m = 1.43, c = 1.43
95: m = 1.44, c = 1.44
96: m = 1.44, c = 1.44
97: m = 1.45, c = 1.45
98: m = 1.45, c = 1.45
99: m = 1.46, c = 1.46
100: m = 1.46, c = 1.46
101: m = 1.47, c = 1.47
102: m = 1.47, c = 1.47
103: m = 1.48, c = 1.48
104: m = 1.48, c = 1.48
105: m = 1.49, c = 1.49
106: m = 1.49, c = 1.49
107: m = 1.50, c = 1.50
108: m = 1.50, c = 1.50
109: m = 1.51, c = 1.51
110: m = 1.51, c = 1.51
111: m = 1.52, c = 1.52
112: m = 1.52, c = 1.52
113: m = 1.53, c = 1.53
114: m = 1.53, c = 1.53
115: m = 1.54, c = 1.54
116: m = 1.54, c = 1.54
117: m = 1.55, c = 1.55
118: m = 1.55, c = 1.55
119: m = 1.56, c = 1.56
120: m = 1.56, c = 1.56
121: m = 1.57, c = 1.57
122: m = 1.57, c = 1.57
123: m = 1.58, c = 1.58
124: m = 1.58, c = 1.58
125: m = 1.59, c = 1.59
126: m = 1.59, c = 1.59
127: m = 1.60, c = 1.60
128: m = 1.60, c = 1.60
129: m = 1.61, c = 1.61
130: m = 1.61, c = 1.61
131: m = 1.62, c = 1.62
132: m = 1.62, c = 1.62
133: m = 1.63, c = 1.63
134: m = 1.63, c = 1.63
135: m = 1.64, c = 1.64
136: m = 1.64, c = 1.64
137: m = 1.65, c = 1.65
138: m = 1.65, c = 1.65
139: m = 1.66, c = 1.66
140: m = 1.66, c = 1.66
141: m = 1.67, c = 1.67
142: m = 1.67, c = 1.67
143: m = 1.68, c = 1.68
144: m = 1.68, c = 1.68
145: m = 1.69, c = 1.69
146: m = 1.69, c = 1.69
147: m = 1.70, c = 1.70
148: m = 1.70, c = 1.70
149: m = 1.71, c = 1.71
150: m = 1.71, c = 1.71
151: m = 1.72, c = 1.72
152: m = 1.72, c = 1.72
153: m = 1.73, c = 1.73
154: m = 1.73, c = 1.73
155: m = 1.74, c = 1.74
156: m = 1.74, c = 1.74
157: m = 1.75, c = 1.75
158: m = 1.75, c = 1.75
159: m = 1.76, c = 1.76
160: m = 1.76, c = 1.76
161: m = 1.77, c = 1.77
162: m = 1.77, c = 1.77
163: m = 1.78, c = 1.78
164: m = 1.78, c = 1.78
165: m = 1.79, c = 1.79
166: m = 1.79, c = 1.79
167: m = 1.80, c = 1.80
168: m = 1.80, c = 1.80
169: m = 1.81, c = 1.81
170: m = 1.81, c = 1.81
171: m = 1.82, c = 1.82
172: m = 1.82, c = 1.82
173: m = 1.83, c = 1.83
174: m = 1.83, c = 1.83
175: m = 1.84, c = 1.84
176: m = 1.84, c = 1.84
177: m = 1.85, c = 1.85
178: m = 1.85, c = 1.85
179: m = 1.86, c = 1.86
180: m = 1.86, c = 1.86
181: m = 1.87, c = 1.87
182: m = 1.87, c = 1.87
183: m = 1.88, c = 1.88
184: m = 1.88, c = 1.88
185: m = 1.89, c = 1.89
186: m = 1.89, c = 1.89
187: m = 1.90, c = 1.90
188: m = 1.90, c = 1.90
189: m = 1.91, c = 1.91
190: m = 1.91, c = 1.91
191: m = 1.92, c = 1.92
192: m = 1.92, c = 1.92
193: m = 1.93, c = 1.93
194: m = 1.93, c = 1.93
195: m = 1.94, c = 1.94
196: m = 1.94, c = 1.94
197: m = 1.95, c = 1.95
198: m = 1.95, c = 1.95
199: m = 1.96, c = 1.96
200: m = 1.96, c = 1.96
201: m = 1.97, c = 1.97
202: m = 1.97, c = 1.97
203: m = 1.98, c = 1.98
204: m = 1.98, c = 1.98
205: m = 1.99, c = 1.99
206: m = 1.99, c = 1.99
207: m = 2.00, c = 2.00
208: m = 2.00, c = 2.00
209: m = 2.00, c = 2.00
210: m = 2.00, c = 2.00
211: m = 2.00, c = 2.00
212: m = 2.00, c = 2.00
213: m = 2.00, c = 2.00
214: m = 2.00, c = 2.00
215: m = 2.00, c = 2.00
216: m = 2.00, c = 2.00
217: m = 2.00, c = 2.00
218: m = 2.00, c = 2.00
219: m = 2.00, c = 2.00
220: m = 2.00, c = 2.00
221: m = 2.00, c = 2.00
222: m = 2.00, c = 2.00
223: m = 2.00, c = 2.00
224: m = 2.00, c = 2.00
225: m = 2.00, c = 2.00
226: m = 2.00, c = 2.00
227: m = 2.00, c = 2.00
228: m = 2.00, c = 2.00
229: m = 2.00, c = 2.00
230: m = 2.00, c = 2.00
231: m = 2.00, c = 2.00
232: m = 2.00, c = 2.00
233: m = 2.00, c = 2.00
234: m = 2.00, c = 2.00
235: m = 2.00, c = 2.00
236: m = 2.00, c = 2.00
237: m = 2.00, c = 2.00
238: m = 2.00, c = 2.00
239: m = 2.00, c = 2.00
240: m = 2.00, c = 2.00
241: m = 2.00, c = 2.00
242: m = 2.00, c = 2.00
243: m = 2.00, c = 2.00
244: m = 2.00, c = 2.00
245: m = 2.00, c = 2.00
246: m = 2.00, c = 2.00
247: m = 2.00, c = 2.00
248: m = 2.00, c = 2.00
249: m = 2.00, c = 2.00
250: m = 2.00, c = 2.00
251: m = 2.00, c = 2.00
252: m = 2.00, c = 2.00
253: m = 2.00, c = 2.00
254: m = 2.00, c = 2.00
255: m = 2.00, c = 2.00
256: m = 2.00, c = 2.00
257: m = 2.00, c = 2.00
258: m = 2.00, c = 2.00
259: m = 2.00, c = 2.00
260: m = 2.00, c = 2.00
261: m = 2.00, c = 2.00
262: m = 2.00, c = 2.00
263: m = 2.00, c = 2.00
264: m = 2.00, c = 2.00
265: m = 2.00, c = 2.00
266: m = 2.00, c = 2.00
267: m = 2.00, c = 2.00
268: m = 2.00, c = 2.00
269: m = 2.00, c = 2.00
270: m = 2.00, c = 2.00
271: m = 2.00, c = 2.00
272: m = 2.00, c = 2.00
273: m = 2.00, c = 2.00
274: m = 2.00, c = 2.00
275: m = 2.00, c = 2.00
276: m = 2.00, c = 2.00
277: m = 2.00, c = 2.00
278: m = 2.00, c = 2.00
279: m = 2.00, c = 2.00
280: m = 2.00, c = 2.00
281: m = 2.00, c = 2.00
282: m = 2.00, c = 2.00
283: m = 2.00, c = 2.00
284: m = 2.00, c = 2.00
285: m = 2.00, c = 2.00
286: m = 2.00, c = 2.00
287: m = 2.00, c = 2.00
288: m = 2.00, c = 2.00
289: m = 2.00, c = 2.00
290: m = 2.00, c = 2.00
291: m = 2.00, c = 2.00
292: m = 2.00, c = 2.00
293: m = 2.00, c = 2.00
294: m = 2.00, c = 2.00
295: m = 2.00, c = 2.00
296: m = 2.00, c = 2.00
297: m = 2.00, c = 2.00
298: m = 2.00, c = 2.00
299: m = 2.00, c = 2.00
300: m = 2.00, c = 2.00
301: m = 2.00, c = 2.00
302: m = 2.00, c = 2.00
303: m = 2.00, c = 2.00
304: m = 2.00, c = 2.00
305: m = 2.00, c = 2.00
306: m = 2.00, c = 2.00
307: m = 2.00, c = 2.00
308: m = 2.00, c = 2.00
309: m = 2.00, c = 2.00
310: m = 2.00, c = 2.00
311: m = 2.00, c = 2.00
312: m = 2.00, c = 2.00
313: m = 2.00, c = 2.00
314: m = 2.00, c = 2.00
315: m = 2.00, c = 2.00
316: m = 2.00, c = 2.00
317: m = 2.00, c = 2.00
318: m = 2.00, c = 2.00
319: m = 2.00, c = 2.00
320: m = 2.00, c = 2.00
321: m = 2.00, c = 2.00
322: m = 2.00, c = 2.00
323: m = 2.00, c = 2.00
324: m = 2.00, c = 2.00
325: m = 2.00, c = 2.00
326: m = 2.00, c = 2.00
327: m = 2.00, c = 2.00
328: m = 2.00, c = 2.00
329: m = 2.00, c = 2.00
330: m = 2.00, c = 2.00
331: m = 2.00, c = 2.00
332: m = 2.00, c = 2.00
333: m = 2.00, c = 2.00
334: m = 2.00, c = 2.00
335: m = 2.00, c = 2.00
336: m = 2.00, c = 2.00
337: m = 2.00, c = 2.00
338: m = 2.00, c = 2.00
339: m = 2.00, c = 2.00
340: m = 2.00, c = 2.00
341: m = 2.00, c = 2.00
342: m = 2.00, c = 2.00
343: m = 2.00, c = 2.00
344: m = 2.00, c = 2.00
345: m = 2.00, c = 2.00
346: m = 2.00, c = 2.00
347: m = 2.00, c = 2.00
348: m = 2.00, c = 2.00
349: m = 2.00, c = 2.00
350: m = 2.00, c = 2.00
351: m = 2.00, c = 2.00
352: m = 2.00, c = 2.00
353: m = 2.00, c = 2.00
354: m = 2.00, c = 2.00
355: m = 2.00, c = 2.00
356: m = 2.00, c = 2.00
357: m = 2.00, c = 2.00
358: m = 2.00, c = 2.00
359: m = 2.00, c = 2.00
360: m = 2.00, c = 2.00
361: m = 2.00, c = 2.00
362: m = 2.00, c = 2.00
363: m = 2.00, c = 2.00
364: m = 2.00, c = 2.00
365: m = 2.00, c = 2.00
366: m = 2.00, c = 2.00
367: m = 2.00, c = 2.00
368: m = 2.00, c = 2.00
369: m = 2.00, c = 2.00
370: m = 2.00, c = 2.00
371: m = 2.00, c = 2.00
372: m = 2.00, c = 2.00
373: m = 2.00, c = 2.00
374: m = 2.00, c = 2.00
375: m = 2.00, c = 2.00
376: m = 2.00, c = 2.00
377: m = 2.00, c = 2.00
378: m = 2.00, c = 2.00
379: m = 2.00, c = 2.00
380: m = 2.00, c = 2.00
381: m = 2.00, c = 2.00
382: m = 2.00, c = 2.00
383: m = 2.00, c = 2.00
384: m = 2.00, c = 2.00
385: m = 2.00, c = 2.00
386: m = 2.00, c = 2.00
387: m = 2.00, c = 2.00
388: m = 2.00, c = 2.00
389: m = 2.00, c = 2.00
390: m = 2.00, c = 2.00
391: m = 2.00, c = 2.00
392: m = 2.00, c = 2.00
393: m = 2.00, c = 2.00
394: m = 2.00, c = 2.00
395: m = 2.00, c = 2.00
396: m = 2.00, c = 2.00
397: m = 2.00, c = 2.00
398: m = 2.00, c = 2.00
399: m = 2.00, c = 2.00
400: m = 2.00, c = 2.00
401: m = 2.00, c = 2.00
402: m = 2.00, c = 2.00
403: m = 2.00, c = 2.00
404: m = 2.00, c = 2.00
405: m = 2.00, c = 2.00
406: m = 2.00, c = 2.00
407: m = 2.00, c = 2.00
408: m = 2.00, c = 2.00
409: m = 2.00, c = 2.00
410: m = 2.00, c = 2.00
411: m = 2.00, c = 2.00
412: m = 2.00, c = 2.00
413: m = 2.00, c = 2.00
414: m = 2.00, c = 2.00
415: m = 2.00, c = 2.00
416: m = 2.00, c = 2.00
417: m = 2.00, c = 2.00
418: m = 2.00, c = 2.00
419: m = 2.00, c = 2.00
420: m = 2.00, c = 2.00
421: m = 2.00, c = 2.00
422: m = 2.00, c = 2.00
423: m = 2.00, c = 2.00
424: m = 2.00, c = 2.00
425: m = 2.00, c = 2.00
426: m = 2.00, c = 2.00
427: m = 2.00, c = 2.00
428: m = 2.00, c = 2.00
429: m = 2.00, c = 2.00
430: m = 2.00, c = 2.00
431: m = 2.00, c = 2.00
432: m = 2.00, c = 2.00
433: m = 2.00, c = 2.00
434: m = 2.00, c = 2.00
435: m = 2.00, c = 2.00
436: m = 2.00, c = 2.00
437: m = 2.00, c = 2.00
438: m = 2.00, c = 2.00
439: m = 2.00, c = 2.00
440: m = 2.00, c = 2.00
441: m = 2.00, c = 2.00
442: m = 2.00, c = 2.00
443: m = 2.00, c = 2.00
444: m = 2.00, c = 2.00
445: m = 2.00, c = 2.00
446: m = 2.00, c = 2.00
447: m = 2.00, c = 2.00
448: m = 2.00, c = 2.00
449: m = 2.00, c = 2.00
450: m = 2.00, c = 2.00
451: m = 2.00, c = 2.00
452: m = 2.00, c = 2.00
453: m = 2.00, c = 2.00
454: m = 2.00, c = 2.00
455: m = 2.00, c = 2.00
456: m = 2.00, c = 2.00
457: m = 2.00, c = 2.00
458: m = 2.00, c = 2.00
459: m = 2.00, c = 2.00
460: m = 2.00, c = 2.00
461: m = 2.00, c = 2.00
462: m = 2.00, c = 2.00
463: m = 2.00, c = 2.00
464: m = 2.00, c = 2.00
465: m = 2.00, c = 2.00
466: m = 2.00, c = 2.00
467: m = 2.00, c = 2.00
468: m = 2.00, c = 2.00
469: m = 2.00, c = 2.00
470: m = 2.00, c = 2.00
471: m = 2.00, c = 2.00
472: m = 2.00, c = 2.00
473: m = 2.00, c = 2.00
474: m = 2.00, c = 2.00
475: m = 2.00, c = 2.00
476: m = 2.00, c = 2.00
477: m = 2.00, c = 2.00
478: m = 2.00, c = 2.00
479: m = 2.00, c = 2.00
480: m = 2.00, c = 2.00
481: m = 2.00, c = 2.00
482: m = 2.00, c = 2.00
483: m = 2.00, c = 2.00
484: m = 2.00, c = 2.00
485: m = 2.00, c = 2.00
486: m = 2.00, c = 2.00
487: m = 2.00, c = 2.00
488: m = 2.00, c = 2.00
489: m = 2.00, c = 2.00
490: m = 2.00, c = 2.00
491: m = 2.00, c = 2.00
492: m = 2.00, c = 2.00
493: m = 2.00, c = 2.00
494: m = 2.00, c = 2.00
495: m = 2.00, c = 2.00
496: m = 2.00, c = 2.00
497: m = 2.00, c = 2.00
498: m = 2.00, c = 2.00
499: m = 2.00, c = 2.00
500: m = 2.00, c = 2.00
Float32: y = 2.00x + 2.003
1: m = 0.69, c = 0.69
2: m = 0.69, c = 0.69
3: m = 0.70, c = 0.70
4: m = 0.70, c = 0.70
5: m = 0.71, c = 0.71
6: m = 0.71, c = 0.71
7: m = 0.72, c = 0.72
8: m = 0.72, c = 0.72
9: m = 0.73, c = 0.73
10: m = 0.73, c = 0.73
11: m = 0.74, c = 0.74
12: m = 0.74, c = 0.74
13: m = 0.75, c = 0.75
14: m = 0.75, c = 0.75
15: m = 0.76, c = 0.76
16: m = 0.76, c = 0.76
17: m = 0.77, c = 0.77
18: m = 0.77, c = 0.77
19: m = 0.78, c = 0.78
20: m = 0.78, c = 0.78
21: m = 0.79, c = 0.79
22: m = 0.79, c = 0.79
23: m = 0.80, c = 0.80
24: m = 0.80, c = 0.80
25: m = 0.81, c = 0.81
26: m = 0.81, c = 0.81
27: m = 0.82, c = 0.82
28: m = 0.82, c = 0.82
29: m = 0.83, c = 0.83
30: m = 0.83, c = 0.83
31: m = 0.84, c = 0.84
32: m = 0.84, c = 0.84
33: m = 0.85, c = 0.85
34: m = 0.85, c = 0.85
35: m = 0.86, c = 0.86
36: m = 0.86, c = 0.86
37: m = 0.87, c = 0.87
38: m = 0.87, c = 0.87
39: m = 0.88, c = 0.88
40: m = 0.88, c = 0.88
41: m = 0.89, c = 0.89
42: m = 0.89, c = 0.89
43: m = 0.90, c = 0.90
44: m = 0.90, c = 0.90
45: m = 0.91, c = 0.91
46: m = 0.91, c = 0.91
47: m = 0.92, c = 0.92
48: m = 0.92, c = 0.92
49: m = 0.93, c = 0.93
50: m = 0.93, c = 0.93
51: m = 0.94, c = 0.94
52: m = 0.94, c = 0.94
53: m = 0.95, c = 0.95
54: m = 0.95, c = 0.95
55: m = 0.96, c = 0.96
56: m = 0.96, c = 0.96
57: m = 0.97, c = 0.97
58: m = 0.97, c = 0.97
59: m = 0.98, c = 0.98
60: m = 0.98, c = 0.98
61: m = 0.99, c = 0.99
62: m = 0.99, c = 0.99
63: m = 1.00, c = 1.00
64: m = 1.00, c = 1.00
65: m = 1.01, c = 1.01
66: m = 1.01, c = 1.01
67: m = 1.02, c = 1.02
68: m = 1.02, c = 1.02
69: m = 1.03, c = 1.03
70: m = 1.03, c = 1.03
71: m = 1.04, c = 1.04
72: m = 1.04, c = 1.04
73: m = 1.05, c = 1.05
74: m = 1.05, c = 1.05
75: m = 1.06, c = 1.06
76: m = 1.06, c = 1.06
77: m = 1.07, c = 1.07
78: m = 1.07, c = 1.07
79: m = 1.08, c = 1.08
80: m = 1.08, c = 1.08
81: m = 1.09, c = 1.09
82: m = 1.09, c = 1.09
83: m = 1.10, c = 1.10
84: m = 1.10, c = 1.10
85: m = 1.11, c = 1.11
86: m = 1.11, c = 1.11
87: m = 1.12, c = 1.12
88: m = 1.12, c = 1.12
89: m = 1.13, c = 1.13
90: m = 1.13, c = 1.13
91: m = 1.14, c = 1.14
92: m = 1.14, c = 1.14
93: m = 1.15, c = 1.15
94: m = 1.15, c = 1.15
95: m = 1.16, c = 1.16
96: m = 1.16, c = 1.16
97: m = 1.17, c = 1.17
98: m = 1.17, c = 1.17
99: m = 1.18, c = 1.18
100: m = 1.18, c = 1.18
101: m = 1.19, c = 1.19
102: m = 1.19, c = 1.19
103: m = 1.20, c = 1.20
104: m = 1.20, c = 1.20
105: m = 1.21, c = 1.21
106: m = 1.21, c = 1.21
107: m = 1.22, c = 1.22
108: m = 1.22, c = 1.22
109: m = 1.23, c = 1.23
110: m = 1.23, c = 1.23
111: m = 1.24, c = 1.24
112: m = 1.24, c = 1.24
113: m = 1.25, c = 1.25
114: m = 1.25, c = 1.25
115: m = 1.26, c = 1.26
116: m = 1.26, c = 1.26
117: m = 1.27, c = 1.27
118: m = 1.27, c = 1.27
119: m = 1.28, c = 1.28
120: m = 1.28, c = 1.28
121: m = 1.29, c = 1.29
122: m = 1.29, c = 1.29
123: m = 1.30, c = 1.30
124: m = 1.30, c = 1.30
125: m = 1.31, c = 1.31
126: m = 1.31, c = 1.31
127: m = 1.32, c = 1.32
128: m = 1.32, c = 1.32
129: m = 1.33, c = 1.33
130: m = 1.33, c = 1.33
131: m = 1.34, c = 1.34
132: m = 1.34, c = 1.34
133: m = 1.35, c = 1.35
134: m = 1.35, c = 1.35
135: m = 1.36, c = 1.36
136: m = 1.36, c = 1.36
137: m = 1.37, c = 1.37
138: m = 1.37, c = 1.37
139: m = 1.38, c = 1.38
140: m = 1.38, c = 1.38
141: m = 1.39, c = 1.39
142: m = 1.39, c = 1.39
143: m = 1.40, c = 1.40
144: m = 1.40, c = 1.40
145: m = 1.41, c = 1.41
146: m = 1.41, c = 1.41
147: m = 1.42, c = 1.42
148: m = 1.42, c = 1.42
149: m = 1.43, c = 1.43
150: m = 1.43, c = 1.43
151: m = 1.44, c = 1.44
152: m = 1.44, c = 1.44
153: m = 1.45, c = 1.45
154: m = 1.45, c = 1.45
155: m = 1.46, c = 1.46
156: m = 1.46, c = 1.46
157: m = 1.47, c = 1.47
158: m = 1.47, c = 1.47
159: m = 1.48, c = 1.48
160: m = 1.48, c = 1.48
161: m = 1.49, c = 1.49
162: m = 1.49, c = 1.49
163: m = 1.50, c = 1.50
164: m = 1.50, c = 1.50
165: m = 1.51, c = 1.51
166: m = 1.51, c = 1.51
167: m = 1.52, c = 1.52
168: m = 1.52, c = 1.52
169: m = 1.53, c = 1.53
170: m = 1.53, c = 1.53
171: m = 1.54, c = 1.54
172: m = 1.54, c = 1.54
173: m = 1.55, c = 1.55
174: m = 1.55, c = 1.55
175: m = 1.56, c = 1.56
176: m = 1.56, c = 1.56
177: m = 1.57, c = 1.57
178: m = 1.57, c = 1.57
179: m = 1.58, c = 1.58
180: m = 1.58, c = 1.58
181: m = 1.59, c = 1.59
182: m = 1.59, c = 1.59
183: m = 1.60, c = 1.60
184: m = 1.60, c = 1.60
185: m = 1.61, c = 1.61
186: m = 1.61, c = 1.61
187: m = 1.62, c = 1.62
188: m = 1.62, c = 1.62
189: m = 1.63, c = 1.63
190: m = 1.63, c = 1.63
191: m = 1.64, c = 1.64
192: m = 1.64, c = 1.64
193: m = 1.65, c = 1.65
194: m = 1.65, c = 1.65
195: m = 1.66, c = 1.66
196: m = 1.66, c = 1.66
197: m = 1.67, c = 1.67
198: m = 1.67, c = 1.67
199: m = 1.68, c = 1.68
200: m = 1.68, c = 1.68
201: m = 1.69, c = 1.69
202: m = 1.69, c = 1.69
203: m = 1.70, c = 1.70
204: m = 1.70, c = 1.70
205: m = 1.71, c = 1.71
206: m = 1.71, c = 1.71
207: m = 1.72, c = 1.72
208: m = 1.72, c = 1.72
209: m = 1.73, c = 1.73
210: m = 1.73, c = 1.73
211: m = 1.74, c = 1.74
212: m = 1.74, c = 1.74
213: m = 1.75, c = 1.75
214: m = 1.75, c = 1.75
215: m = 1.76, c = 1.76
216: m = 1.76, c = 1.76
217: m = 1.77, c = 1.77
218: m = 1.77, c = 1.77
219: m = 1.78, c = 1.78
220: m = 1.78, c = 1.78
221: m = 1.79, c = 1.79
222: m = 1.79, c = 1.79
223: m = 1.80, c = 1.80
224: m = 1.80, c = 1.80
225: m = 1.81, c = 1.81
226: m = 1.81, c = 1.81
227: m = 1.82, c = 1.82
228: m = 1.82, c = 1.82
229: m = 1.83, c = 1.83
230: m = 1.83, c = 1.83
231: m = 1.84, c = 1.84
232: m = 1.84, c = 1.84
233: m = 1.85, c = 1.85
234: m = 1.85, c = 1.85
235: m = 1.86, c = 1.86
236: m = 1.86, c = 1.86
237: m = 1.87, c = 1.87
238: m = 1.87, c = 1.87
239: m = 1.88, c = 1.88
240: m = 1.88, c = 1.88
241: m = 1.89, c = 1.89
242: m = 1.89, c = 1.89
243: m = 1.90, c = 1.90
244: m = 1.90, c = 1.90
245: m = 1.91, c = 1.91
246: m = 1.91, c = 1.91
247: m = 1.92, c = 1.92
248: m = 1.92, c = 1.92
249: m = 1.93, c = 1.93
250: m = 1.93, c = 1.93
251: m = 1.94, c = 1.94
252: m = 1.94, c = 1.94
253: m = 1.95, c = 1.95
254: m = 1.95, c = 1.95
255: m = 1.96, c = 1.96
256: m = 1.96, c = 1.96
257: m = 1.97, c = 1.97
258: m = 1.97, c = 1.97
259: m = 1.98, c = 1.98
260: m = 1.98, c = 1.98
261: m = 1.99, c = 1.99
262: m = 1.99, c = 1.99
263: m = 2.00, c = 2.00
264: m = 2.00, c = 2.00
265: m = 2.00, c = 2.00
266: m = 2.00, c = 2.00
267: m = 2.00, c = 2.00
268: m = 2.00, c = 2.00
269: m = 2.00, c = 2.00
270: m = 2.00, c = 2.00
271: m = 2.00, c = 2.00
272: m = 2.00, c = 2.00
273: m = 2.00, c = 2.00
274: m = 2.00, c = 2.00
275: m = 2.00, c = 2.00
276: m = 2.00, c = 2.00
277: m = 2.00, c = 2.00
278: m = 2.00, c = 2.00
279: m = 2.00, c = 2.00
280: m = 2.00, c = 2.00
281: m = 2.00, c = 2.00
282: m = 2.00, c = 2.00
283: m = 2.00, c = 2.00
284: m = 2.00, c = 2.00
285: m = 2.00, c = 2.00
286: m = 2.00, c = 2.00
287: m = 2.00, c = 2.00
288: m = 2.00, c = 2.00
289: m = 2.00, c = 2.00
290: m = 2.00, c = 2.00
291: m = 2.00, c = 2.00
292: m = 2.00, c = 2.00
293: m = 2.00, c = 2.00
294: m = 2.00, c = 2.00
295: m = 2.00, c = 2.00
296: m = 2.00, c = 2.00
297: m = 2.00, c = 2.00
298: m = 2.00, c = 2.00
299: m = 2.00, c = 2.00
300: m = 2.00, c = 2.00
301: m = 2.00, c = 2.00
302: m = 2.00, c = 2.00
303: m = 2.00, c = 2.00
304: m = 2.00, c = 2.00
305: m = 2.00, c = 2.00
306: m = 2.00, c = 2.00
307: m = 2.00, c = 2.00
308: m = 2.00, c = 2.00
309: m = 2.00, c = 2.00
310: m = 2.00, c = 2.00
311: m = 2.00, c = 2.00
312: m = 2.00, c = 2.00
313: m = 2.00, c = 2.00
314: m = 2.00, c = 2.00
315: m = 2.00, c = 2.00
316: m = 2.00, c = 2.00
317: m = 2.00, c = 2.00
318: m = 2.00, c = 2.00
319: m = 2.00, c = 2.00
320: m = 2.00, c = 2.00
321: m = 2.00, c = 2.00
322: m = 2.00, c = 2.00
323: m = 2.00, c = 2.00
324: m = 2.00, c = 2.00
325: m = 2.00, c = 2.00
326: m = 2.00, c = 2.00
327: m = 2.00, c = 2.00
328: m = 2.00, c = 2.00
329: m = 2.00, c = 2.00
330: m = 2.00, c = 2.00
331: m = 2.00, c = 2.00
332: m = 2.00, c = 2.00
333: m = 2.00, c = 2.00
334: m = 2.00, c = 2.00
335: m = 2.00, c = 2.00
336: m = 2.00, c = 2.00
337: m = 2.00, c = 2.00
338: m = 2.00, c = 2.00
339: m = 2.00, c = 2.00
340: m = 2.00, c = 2.00
341: m = 2.00, c = 2.00
342: m = 2.00, c = 2.00
343: m = 2.00, c = 2.00
344: m = 2.00, c = 2.00
345: m = 2.00, c = 2.00
346: m = 2.00, c = 2.00
347: m = 2.00, c = 2.00
348: m = 2.00, c = 2.00
349: m = 2.00, c = 2.00
350: m = 2.00, c = 2.00
351: m = 2.00, c = 2.00
352: m = 2.00, c = 2.00
353: m = 2.00, c = 2.00
354: m = 2.00, c = 2.00
355: m = 2.00, c = 2.00
356: m = 2.00, c = 2.00
357: m = 2.00, c = 2.00
358: m = 2.00, c = 2.00
359: m = 2.00, c = 2.00
360: m = 2.00, c = 2.00
361: m = 2.00, c = 2.00
362: m = 2.00, c = 2.00
363: m = 2.00, c = 2.00
364: m = 2.00, c = 2.00
365: m = 2.00, c = 2.00
366: m = 2.00, c = 2.00
367: m = 2.00, c = 2.00
368: m = 2.00, c = 2.00
369: m = 2.00, c = 2.00
370: m = 2.00, c = 2.00
371: m = 2.00, c = 2.00
372: m = 2.00, c = 2.00
373: m = 2.00, c = 2.00
374: m = 2.00, c = 2.00
375: m = 2.00, c = 2.00
376: m = 2.00, c = 2.00
377: m = 2.00, c = 2.00
378: m = 2.00, c = 2.00
379: m = 2.00, c = 2.00
380: m = 2.00, c = 2.00
381: m = 2.00, c = 2.00
382: m = 2.00, c = 2.00
383: m = 2.00, c = 2.00
384: m = 2.00, c = 2.00
385: m = 2.00, c = 2.00
386: m = 2.00, c = 2.00
387: m = 2.00, c = 2.00
388: m = 2.00, c = 2.00
389: m = 2.00, c = 2.00
390: m = 2.00, c = 2.00
391: m = 2.00, c = 2.00
392: m = 2.00, c = 2.00
393: m = 2.00, c = 2.00
394: m = 2.00, c = 2.00
395: m = 2.00, c = 2.00
396: m = 2.00, c = 2.00
397: m = 2.00, c = 2.00
398: m = 2.00, c = 2.00
399: m = 2.00, c = 2.00
400: m = 2.00, c = 2.00
401: m = 2.00, c = 2.00
402: m = 2.00, c = 2.00
403: m = 2.00, c = 2.00
404: m = 2.00, c = 2.00
405: m = 2.00, c = 2.00
406: m = 2.00, c = 2.00
407: m = 2.00, c = 2.00
408: m = 2.00, c = 2.00
409: m = 2.00, c = 2.00
410: m = 2.00, c = 2.00
411: m = 2.00, c = 2.00
412: m = 2.00, c = 2.00
413: m = 2.00, c = 2.00
414: m = 2.00, c = 2.00
415: m = 2.00, c = 2.00
416: m = 2.00, c = 2.00
417: m = 2.00, c = 2.00
418: m = 2.00, c = 2.00
419: m = 2.00, c = 2.00
420: m = 2.00, c = 2.00
421: m = 2.00, c = 2.00
422: m = 2.00, c = 2.00
423: m = 2.00, c = 2.00
424: m = 2.00, c = 2.00
425: m = 2.00, c = 2.00
426: m = 2.00, c = 2.00
427: m = 2.00, c = 2.00
428: m = 2.00, c = 2.00
429: m = 2.00, c = 2.00
430: m = 2.00, c = 2.00
431: m = 2.00, c = 2.00
432: m = 2.00, c = 2.00
433: m = 2.00, c = 2.00
434: m = 2.00, c = 2.00
435: m = 2.00, c = 2.00
436: m = 2.00, c = 2.00
437: m = 2.00, c = 2.00
438: m = 2.00, c = 2.00
439: m = 2.00, c = 2.00
440: m = 2.00, c = 2.00
441: m = 2.00, c = 2.00
442: m = 2.00, c = 2.00
443: m = 2.00, c = 2.00
444: m = 2.00, c = 2.00
445: m = 2.00, c = 2.00
446: m = 2.00, c = 2.00
447: m = 2.00, c = 2.00
448: m = 2.00, c = 2.00
449: m = 2.00, c = 2.00
450: m = 2.00, c = 2.00
451: m = 2.00, c = 2.00
452: m = 2.00, c = 2.00
453: m = 2.00, c = 2.00
454: m = 2.00, c = 2.00
455: m = 2.00, c = 2.00
456: m = 2.00, c = 2.00
457: m = 2.00, c = 2.00
458: m = 2.00, c = 2.00
459: m = 2.00, c = 2.00
460: m = 2.00, c = 2.00
461: m = 2.00, c = 2.00
462: m = 2.00, c = 2.00
463: m = 2.00, c = 2.00
464: m = 2.00, c = 2.00
465: m = 2.00, c = 2.00
466: m = 2.00, c = 2.00
467: m = 2.00, c = 2.00
468: m = 2.00, c = 2.00
469: m = 2.00, c = 2.00
470: m = 2.00, c = 2.00
471: m = 2.00, c = 2.00
472: m = 2.00, c = 2.00
473: m = 2.00, c = 2.00
474: m = 2.00, c = 2.00
475: m = 2.00, c = 2.00
476: m = 2.00, c = 2.00
477: m = 2.00, c = 2.00
478: m = 2.00, c = 2.00
479: m = 2.00, c = 2.00
480: m = 2.00, c = 2.00
481: m = 2.00, c = 2.00
482: m = 2.00, c = 2.00
483: m = 2.00, c = 2.00
484: m = 2.00, c = 2.00
485: m = 2.00, c = 2.00
486: m = 2.00, c = 2.00
487: m = 2.00, c = 2.00
488: m = 2.00, c = 2.00
489: m = 2.00, c = 2.00
490: m = 2.00, c = 2.00
491: m = 2.00, c = 2.00
492: m = 2.00, c = 2.00
493: m = 2.00, c = 2.00
494: m = 2.00, c = 2.00
495: m = 2.00, c = 2.00
496: m = 2.00, c = 2.00
497: m = 2.00, c = 2.00
498: m = 2.00, c = 2.00
499: m = 2.00, c = 2.00
500: m = 2.00, c = 2.00
Float64: y = 2.00x + 2.004
Process finished with exit code 0

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值