[从头学数学] 第207节 风险与决策

剧情提要:
[机器小伟]在[工程师阿伟]的陪同下进入了[九转金丹]之第七转的修炼。
这次要研究的是[风险与决策]。

正剧开始:

星历2016年05月09日 10:58:13, 银河系厄尔斯星球中华帝国江南行省。
[工程师阿伟]正在和[机器小伟]一起研究[风险与决策]。


[从头学数学] 第207节 风险与决策_第1张图片


[从头学数学] 第207节 风险与决策_第2张图片




[从头学数学] 第207节 风险与决策_第3张图片


[从头学数学] 第207节 风险与决策_第4张图片

[从头学数学] 第207节 风险与决策_第5张图片


[从头学数学] 第207节 风险与决策_第6张图片


[从头学数学] 第207节 风险与决策_第7张图片


[从头学数学] 第207节 风险与决策_第8张图片


[从头学数学] 第207节 风险与决策_第9张图片


[从头学数学] 第207节 风险与决策_第10张图片


[从头学数学] 第207节 风险与决策_第11张图片


<span style="font-size:18px;">0.30 , 0.50 , 0.20 , 
*
12.00 , 8.00 , 3.00 , 
5.00 , 6.00 , 3.00 , 
-4.00 , -1.00 , 2.00 , 
=
5.30 , 5.20 , 2.80 , 

	if (1) {
		var analyze = new DataAnalyze();
		
		var matrix = new Matrix();
		
		var m1 = [[12,5,-4],[8,6,-1],[3,3,2]];
		var m2 = [[0.3, 0.5, 0.2]];
		m1 = matrix.transposition(m1);
		var m3 = matrix.multiple(m2, m1);
		matrix.print(m2);
		hint('*');
		matrix.print(m1);
		hint('=');		
		matrix.print(m3);
	
	}</span>

[从头学数学] 第207节 风险与决策_第12张图片


[从头学数学] 第207节 风险与决策_第13张图片


[从头学数学] 第207节 风险与决策_第14张图片


[从头学数学] 第207节 风险与决策_第15张图片


[从头学数学] 第207节 风险与决策_第16张图片


<span style="font-size:18px;">0.01 , 0.25 , 0.74 , 
*
3800.00 , 62000.00 , 60000.00 , 
3800.00 , 2000.00 , 10000.00 , 
3800.00 , 2000.00 , 0.00 , 
=
3800.00 , 2600.00 , 3100.00 , 

	if (1) {
		var analyze = new DataAnalyze();
		
		var matrix = new Matrix();
		
		var m1 = [[3800, 62000, 60000], [3800, 2000, 10000],[3800, 2000, 0]];
		var m2 = [[0.01, 0.25, 0.74]];

		var m3 = matrix.multiple(m2, m1);
		matrix.print(m2);
		hint('*');
		matrix.print(m1);
		hint('=');		
		matrix.print(m3);
	
	}</span>



[从头学数学] 第207节 风险与决策_第17张图片


[从头学数学] 第207节 风险与决策_第18张图片


[从头学数学] 第207节 风险与决策_第19张图片


[从头学数学] 第207节 风险与决策_第20张图片


[从头学数学] 第207节 风险与决策_第21张图片


[从头学数学] 第207节 风险与决策_第22张图片


[从头学数学] 第207节 风险与决策_第23张图片


[从头学数学] 第207节 风险与决策_第24张图片


<span style="font-size:18px;">0.60 , 0.40 , 
*
-8.00 , -2.00 , 0.00 , 
0.00 , -3.00 , -4.00 , 
=
-4.80 , -2.40 , -1.60 , 

	if (1) {
		var analyze = new DataAnalyze();
		
		var matrix = new Matrix();
		
		//损失函数,单位:万元
		var m1 = [[-8, -2, 0], [0, -3, -4]];
		var m2 = [[0.6, 0.4]];

		var m3 = matrix.multiple(m2, m1);
		matrix.print(m2);
		hint('*');
		matrix.print(m1);
		hint('=');		
		matrix.print(m3);
	
	}</span>

[从头学数学] 第207节 风险与决策_第25张图片


<span style="font-size:18px;">//进货17台收益最大

0.05 , 0.10 , 0.20 , 0.40 , 0.20 , 0.05 , 
*
3000.00 , 2200.00 , 1400.00 , 600.00 , -200.00 , -1000.00 , 
3000.00 , 3200.00 , 2400.00 , 1600.00 , 800.00 , 0.00 , 
3000.00 , 3200.00 , 3400.00 , 2600.00 , 1800.00 , 1000.00 , 
3000.00 , 3200.00 , 3400.00 , 3600.00 , 2800.00 , 2000.00 , 
3000.00 , 3200.00 , 3400.00 , 3600.00 , 3800.00 , 3000.00 , 
3000.00 , 3200.00 , 3400.00 , 3600.00 , 3800.00 , 4000.00 , 
=
3000.00 , 3150.00 , 3200.00 , 3050.00 , 2500.00 , 1750.00 , 

	if (1) {
		var analyze = new DataAnalyze();
		
		var matrix = new Matrix();
		
		//收益函数,单位:元
		var m1 = [], vector1 = [];
		//6种销售量
		for (var i = 15; i <= 20; i++) { //销售量
			vector1 = [];
			for (var j = 15; j <= 20; j++) { //进货量
				
				vector1.push(1000*Math.min(i, j)-800*j);
			}
			
			m1.push(vector1);
		}
				
		
		var m2 = [[0.05, 0.10, 0.20, 0.40, 0.20, 0.05]];

		var m3 = matrix.multiple(m2, m1);
		matrix.print(m2);
		hint('*');
		matrix.print(m1);
		hint('=');		
		matrix.print(m3);
	
	}
</span>


[从头学数学] 第207节 风险与决策_第26张图片


<span style="font-size:18px;">//进货100本书收益最大

0.20 , 0.40 , 0.30 , 0.10 , 
*
100.00 , 0.00 , -100.00 , -200.00 , 
100.00 , 200.00 , 100.00 , 0.00 , 
100.00 , 200.00 , 300.00 , 200.00 , 
100.00 , 200.00 , 300.00 , 400.00 , 
=
100.00 , 160.00 , 140.00 , 60.00 ,

	if (1) {
		var analyze = new DataAnalyze();
		
		var matrix = new Matrix();
		
		//收益函数,单位:元
		var m1 = [], vector1 = [];
		//4种销售量
		for (var i = 50; i <= 200; i+=50) { //一个月内销售量
			vector1 = [];
			for (var j = 50; j <= 200; j+=50) { //进货量
				
				vector1.push(6*Math.min(i, j)-4*j + 2*(j-Math.min(i,j)));
			}
			
			m1.push(vector1);
		}
				
		
		var m2 = [[0.2, 0.4, 0.3, 0.1]];

		var m3 = matrix.multiple(m2, m1);
		matrix.print(m2);
		hint('*');
		matrix.print(m1);
		hint('=');		
		matrix.print(m3);
	
	}</span>


[从头学数学] 第207节 风险与决策_第27张图片

[从头学数学] 第207节 风险与决策_第28张图片[从头学数学] 第207节 风险与决策_第29张图片[从头学数学] 第207节 风险与决策_第30张图片[从头学数学] 第207节 风险与决策_第31张图片[从头学数学] 第207节 风险与决策_第32张图片[从头学数学] 第207节 风险与决策_第33张图片[从头学数学] 第207节 风险与决策_第34张图片[从头学数学] 第207节 风险与决策_第35张图片

<span style="font-size:18px;">0.90 , 0.10 , 
*
1300.00 , 1500.00 , 
1300.00 , 100.00 , 
=
1300.00 , 1360.00 , 

	if (1) {
		var analyze = new DataAnalyze();
		
		var matrix = new Matrix();
		
		//收益函数,单位:元
		var m1 = [[1300, 1300],[1500, 100]];
		
		var m2 = [[0.9,0.1]];
		m1 = matrix.transposition(m1);
		var m3 = matrix.multiple(m2, m1);
		matrix.print(m2);
		hint('*');
		matrix.print(m1);
		hint('=');		
		matrix.print(m3);
	
	}</span>


[从头学数学] 第207节 风险与决策_第36张图片[从头学数学] 第207节 风险与决策_第37张图片[从头学数学] 第207节 风险与决策_第38张图片[从头学数学] 第207节 风险与决策_第39张图片[从头学数学] 第207节 风险与决策_第40张图片[从头学数学] 第207节 风险与决策_第41张图片


[从头学数学] 第207节 风险与决策_第42张图片[从头学数学] 第207节 风险与决策_第43张图片[从头学数学] 第207节 风险与决策_第44张图片[从头学数学] 第207节 风险与决策_第45张图片[从头学数学] 第207节 风险与决策_第46张图片


[从头学数学] 第207节 风险与决策_第47张图片[从头学数学] 第207节 风险与决策_第48张图片[从头学数学] 第207节 风险与决策_第49张图片[从头学数学] 第207节 风险与决策_第50张图片[从头学数学] 第207节 风险与决策_第51张图片[从头学数学] 第207节 风险与决策_第52张图片

[从头学数学] 第207节 风险与决策_第53张图片[从头学数学] 第207节 风险与决策_第54张图片[从头学数学] 第207节 风险与决策_第55张图片


[从头学数学] 第207节 风险与决策_第56张图片[从头学数学] 第207节 风险与决策_第57张图片[从头学数学] 第207节 风险与决策_第58张图片[从头学数学] 第207节 风险与决策_第59张图片[从头学数学] 第207节 风险与决策_第60张图片


<span style="font-size:18px;">9.050,9.002,9.000,9.000,9.000,9.000,9.000,9.000,9.000,9.000,9.000
9.200,8.920,8.822,8.788,8.776,8.771,8.770,8.770,8.769,8.769,8.769

	if (1) {
		var analyze = new DataAnalyze();
		
		var matrix = new Matrix();
		
		//马尔可夫转移概率矩阵
		
		//第一种选择
		var m1 = [[0.95, 0.05],[0.9, 0.1]];
		
		var m2 = [[1, 0]];
		
		var m3 = matrix.multiple(m2, m1);
		var profitA = [];		
		var tmp = 0;
		tmp = matrix.multiple(m3, [[10], [-9]]);
		profitA.push(tmp[0][0].toFixed(3));
			
		for (var i = 0; i < 10; i++) {
			m3 = matrix.multiple(m3, m1);
			tmp = matrix.multiple(m3, [[10], [-9]]);
			profitA.push(tmp[0][0].toFixed(3));
			
		}
		
		hint(profitA);
		
		//第二种选择
		m1 = [[0.95, 0.05], [0.6, 0.4]];
		m2 = [[1, 0]];
		m3 = matrix.multiple(m2, m1);
		var profitB = [];		
		tmp = 0;
		tmp = matrix.multiple(m3, [[10], [-6]]);
		profitB.push(tmp[0][0].toFixed(3));
		
		for (var i = 0; i < 10; i++) {
			m3 = matrix.multiple(m3, m1);
			tmp = matrix.multiple(m3, [[10], [-6]]);
			profitB.push(tmp[0][0].toFixed(3));
			
		}
		
		hint(profitB);
		
	
	}</span>


[从头学数学] 第207节 风险与决策_第61张图片

[从头学数学] 第207节 风险与决策_第62张图片


<span style="font-size:18px;">1.000 , 0.000 , 
*
0.950 , 0.050 , 
0.600 , 0.400 , 
=
0.950 , 0.050 , 
*
0.950 , 0.050 , 
0.600 , 0.400 , 
=
0.932 , 0.068 , 
*
0.950 , 0.050 , 
0.600 , 0.400 , 
=
0.926 , 0.074 , 
*
0.950 , 0.050 , 
0.600 , 0.400 , 
=
0.924 , 0.076 , 
*
0.950 , 0.050 , 
0.600 , 0.400 , 
=
0.923 , 0.077 , 

	if (1) {
		var analyze = new DataAnalyze();
		
		var matrix = new Matrix();
		
		//马尔可夫转移概率矩阵
		var m1 = [[0.95, 0.05],[0.6, 0.4]];
		
		var m2 = [[1, 0]];
		
		var m3 = matrix.multiple(m2, m1);
		matrix.print(m2);
		hint('*');
		matrix.print(m1);
		hint('=');		
		matrix.print(m3);
		
		
		for (var i = 0; i < 4; i++) {
			m2 = m3;
			hint('*');
			matrix.print(m1);
			hint('=');	
			m3 = matrix.multiple(m2, m1);
			matrix.print(m3);
		}
		
	
	}</span>

[从头学数学] 第207节 风险与决策_第63张图片[从头学数学] 第207节 风险与决策_第64张图片[从头学数学] 第207节 风险与决策_第65张图片[从头学数学] 第207节 风险与决策_第66张图片[从头学数学] 第207节 风险与决策_第67张图片[从头学数学] 第207节 风险与决策_第68张图片[从头学数学] 第207节 风险与决策_第69张图片

<span style="font-size:18px;">/**
* @usage   矩阵类
* @author  mw
* @date    2016年03月24日  星期四  14:51:45 
* @param
* @return
*
*/
function Matrix() {
	this.delta = function(matrix) {
		var size = matrix.length;
		
		if (!matrix[0].length) {
			return 0;
		}
		else {
			if (matrix[0].length != size) {
				return 0;
			}
			
			if (size < 1) {
				return 0;
			}
			else if (size == 1) {
				return matrix[0][0];
			}
			else {
				var d = 0;
				var subMatrix = [];
				
				for (var i = 0; i < size; i++) {
					subMatrix = this.subSet(matrix, i, 0);
					d += Math.pow(-1, i)*matrix[i][0]*this.delta(subMatrix);
				}
				return d;
			}
		}
	}
	
	this.subSet = function(matrix, row, col) {	
		var size = matrix.length;
		
		if (!matrix[0].length) {
			return [];
		}
		else {
			if (matrix[0].length != size) {
				return [];
			}
			
			var newMatrix = new Array();
			var rowArray= new Array();
			
			for (var i = 0; i < size; i++) {
				if (i == row) {
					continue;
				}
				else {
					rowArray = [];
				
					for (var j = 0; j < size; j++) {
						if (j == col) {
							continue;
						}
						else {
							rowArray.push(matrix[i][j]);
						}
					}
					
					newMatrix.push(rowArray)
				}
			}
			
			return newMatrix;
		}
	}
	
	this.identityMatrix = function(rank) {
		var newMatrix = new Array();
		var rowArray= new Array();
		
		for (var i = 0; i < rank; i++) {
			rowArray = [];
			
			for (var j = 0; j < rank; j++) {
				if (j == i) {
					rowArray.push(1);
				}
				else {
					rowArray.push(0);
				}
			}
			
			newMatrix.push(rowArray);
		}
		
		return newMatrix;
	}
	
	//建立row*col空矩阵
	this.zeroMatrix = function(row, col) {

		var newMatrix = new Array();
		var rowArray= new Array();
		
		for (var i = 0; i < row; i++) {
			rowArray = [];
			
			for (var j = 0; j < col; j++) {
				rowArray.push(0);
			}
			
			newMatrix.push(rowArray);
		}
		
		return newMatrix;
	}
	
	//把从1-n的n个数按顺序放到矩阵中
	this.sequenceMatrix = function(rank) {
		var newMatrix = new Array();
		var rowArray= new Array();
		
		var count = 0;
		for (var i = 0; i < rank; i++) {
			rowArray = [];
			
			for (var j = 0; j < rank; j++) {
				count++;
				rowArray.push(count);
				
			}
			
			newMatrix.push(rowArray);
		}
		
		return newMatrix;
	}
	
	
	this.print = function(matrix) {
		var size = matrix.length;
		
		if (!matrix[0].length) {
			return [];
		}
		else {
			var rSize = matrix[0].length;
			
			var s = '';
			
			for (var i = 0; i < size; i++) {
				s = '';
				
				for (var j = 0; j < rSize; j++) {
					s += matrix[i][j].toFixed(3) + ' , ';
				}
				
				document.write(s+'<br/>');
			}
		}
	}
					
	this.deepCopy = function(matrix) {
		var size = matrix.length;
		
		if (!matrix[0].length) {
			return this.zeroMatrix(1, 1);
		}
		else {
			var rSize = matrix[0].length;
			
			var newMatrix = new Array();
			var rowArray= new Array();
			
			for (var i = 0; i < size; i++) {
				rowArray = [];
				
				for (var j = 0; j < rSize; j++) {
					rowArray.push(matrix[i][j]);
				}
				newMatrix.push(rowArray);
			}
			return newMatrix;
		}
	}
	
/**
* @usage   矩阵的转置
* @author  mw
* @date    2016年05月09日  星期一  08:21:34 
* @param
* @return
*
*/
	this.transposition = function(matrix) {
		var row = matrix.length;
		var col = matrix[0].length;	
		
		if (row > 0 && col > 0) {
			var transMatrix = this.zeroMatrix(col, row);
			
			for (var i = 0; i < row; i++) {
				for (var j = 0; j < col; j++) {
					transMatrix[j][i] = matrix[i][j];
				}
			}
			
			return transMatrix;
		
		}	
	
		return this.zeroMatrix(1, 1);
	}

/**
* @usage   矩阵的乘法
* @author  mw
* @date    2016年05月02日  星期一  10:44:46 
* @param
* @return
*
*/
	
	this.multiple = function(matrix1, matrix2) {
		var row1 = matrix1.length;
		var col1 = matrix1[0].length;		
		
		
		var row2 = matrix2.length;
		var col2 = matrix2[0].length;

		var A = [row1, col1, row2, col2];
		
		
		if (col1 != row2) {
			return this.zeroMatrix(1, 1);
		}
		
		var mulResult = this.zeroMatrix(row1, col2);

		

			for (var i = 0; i < row1; i++) {
				for (var j = 0; j < col2; j++) {
					for (var k = 0; k < row2; k++) {
						mulResult[i][j] += matrix1[i][k]*matrix2[k][j];
					}
				}
			}

		
		return mulResult;
		
	}
	
	this.add = function(matrix1, matrix2) {
		var row1 = matrix1.length;
		var col1 = matrix1[0].length;		
		
		var row2 = matrix2.length;
		var col2 = matrix2[0].length;
		
		if (row1 != row2 || col1 != col2) {
			return this.zeroMatrix(1, 1);
		}
		
		var addResult = this.zeroMatrix(row1, col1);	

		for (var i = 0; i < row1; i++) {
			for (var j = 0; j < col1; j++) {
				addResult[i][j] = matrix1[i][j]+matrix2[i][j];
				
			}
		}
	
		return addResult;
	}
	
	//二阶矩阵的逆
	this.invOfRank2 = function(matrix) {
		var d = this.delta(matrix);
		
		
		if (d != 0) {
			return [[matrix[1][1]/d, -matrix[0][1]/d], [-matrix[1][0]/d, matrix[0][0]/d]];
		}
		
		else {
			return this.zeroMatrix(1, 1);
		}
		
	}
	
	//二阶矩阵的特征值
	this.eigenvalue = function(matrix) {
		var a = matrix[0][0];
		var b = matrix[0][1];
		var c = matrix[1][0];
		var d = matrix[1][1];
		
		var judge = (a+d)*(a+d)-4*(a*d-b*c);
		if ( judge >= 0) {
			var lambda_1 = 0.5*((a+d)-Math.sqrt(judge));
			var lambda_2 = 0.5*((a+d)+Math.sqrt(judge));
		}
		
		
		//特征向量有很多组,这里随便取一组
		//特征值放在第一行,然后是每个特征值对应的一个特征向量
		if (b != 0) {
			return [[lambda_1, lambda_2], [1, (lambda_1-a)/b], [b/(lambda_2-a), 1]];
		}
		else if (c != 0) {
			return [[lambda_1, lambda_2], [1, c/(lambda_1-d)], [(lambda_2-d)/c, 1]];
		}
		
		return this.zeroMatrix(1, 1);
	}
	
}
</span>

本节到此结束,欲知后事如何,请看下回分解。


你可能感兴趣的:([从头学数学] 第207节 风险与决策)