JS求解三元一次方程组值的方法
网络编程 2021-07-04 19:20www.168986.cn编程入门
这篇文章主要介绍了JS求解三元一次方程组值的方法,涉及JS数学运算的相关操作技巧,需要的朋友可以参考下
本文实例讲述了JS求解三元一次方程组值的方法。分享给大家供大家参考,具体如下
// 求用js 码一段代码求 三元一次方程组的值! // a1 = y b1 + z c1 - d1 x; (1) // a2 = y b2 + z c2 - d2 x; (2) // a3 = y b3 + z c3 - d3 x; (3) // (1) - (2) // a1 - a2 = y (c1 - c2) + z (d1 - d2) (4) // (1) - (3) // a1 - a3 = y (c1 - c3) + z (d1 - d3) (5) // (4) (c1 - c3)/(c1 - c2) // (a1 - a2) ((c1 - c3)/(c1 - c2)) = y (c1 - c3) + z (d1 - d2) ((c1 - c3)/(c1 - c2)); (6) // (6) - (5) // (a1 - a2) ((c1 - c3)/(c1 - c2)) - (a1 - a3) = z ((d1 - d2) ((c1 - c3)/(c1 - c2)) - (d1 - d3)); (7) // //================================================================================================== // (1) (d2/d1) // ( a1 (d2/d1) ) = y b1 (d2/d1) + z c1 (d2/d1) - d1 x (d2/d1) (4) // ( a1 (d2/d1) ) = y b1 (d2/d1) + z c1 (d2/d1) - d2 x (4.1) // (4.1) - (2) // ( ( a1 (d2/d1) ) - a2 ) = y ( (b1 (d2/d1)) - b2 ) + z ( (c1 (d2/d1)) - c2 ); (5) // (1) (d3/d1) // ( a1 (d3/d1) ) = y ( b1 (d3/d1) ) + z ( c1 (d3/d1) ) - d1 x (d3/d1) (6) // ( a1 (d3/d1) ) = y ( b1 (d3/d1) ) + z ( c1 (d3/d1) ) - d3 x (6.1) // (6.1) - (3) // ( ( a1 (d3/d1) ) - a3 ) = y ( ( b1 (d3/d1) ) - b3 ) + z ( ( c1 (d3/d1) ) - c3 ) (7) // (5) ( ( (b1 (d3/d1)) - b3 ) / ( ( b1 (d2/d1) ) - b2 ) ) // ( ( ( a1 (d2/d1) ) - a2 ) ( ( (b1 (d3/d1)) - b3 ) / ( ( b1 (d2/d1) ) - b2 ) ) ) = y ( (b1 (d3/d1)) - b3 ) + z ( ( (c1 (d2/d1)) - c2 ) ( ( (b1 (d3/d1)) - b3 ) / ( ( b1 (d2/d1) ) - b2 ) ) ) (8) // (8) - (7) // ( ( ( ( a1 (d2/d1) ) - a2 ) ( ( (b1 (d3/d1)) - b3 ) / ( ( b1 (d2/d1) ) - b2 ) ) ) - ( ( a1 (d3/d1) ) - a3 ) ) // = // z ( ( ( (c1 (d2/d1)) - c2 ) ( ( (b1 (d3/d1)) - b3 ) / ( ( b1 (d2/d1) ) - b2 ) ) ) - ( ( c1 (d3/d1) ) - c3 ) ) //var a1 = 41778.58102, a2 = 60925.87223, a3 = 88229.03849, //b1 = 72931.77839, b2 = 61296.01212, b3 = 67138.30916, //c1 = 120.1318412, c2 = 120.1308286, c3 = 120.1573771, //d1 = 30.27345376, d2 = 30.30174637, d3 = 30.32151101; //var a1 = 1, a2 = -9, a3 = -3, //b1 = -1, b2 = 3, b3 = -3, //c1 = 1, c2 = -2, c3 = -5, //d1 = -2, d2 = -1, d3 = -4; var a1 = 11, a2 = 0, a3 = -2, b1 = 3, b2 = 1, b3 = -1, c1 = 1, c2 = 1, c3 = -1, d1 = -2, d2 = -1, d3 = -3; var equations = [ "a1 = y b1 + z c1 - d1 x", "a2 = y b2 + z c2 - d2 x", "a3 = y b3 + z c3 - d3 x" ]; for (var i = 0; i < equations.length; i++) { equations[i] = equations[i].replace("a1", "(" + a1 + ")").replace("b1", "(" + b1 + ")").replace("c1", "(" + c1 + ")").replace("d1", "(" + d1 + ")") .replace("a2", "(" + a2 + ")").replace("b2", "(" + b2 + ")").replace("c2", "(" + c2 + ")").replace("d2", "(" + d2 + ")") .replace("a3", "(" + a3 + ")").replace("b3", "(" + b3 + ")").replace("c3", "(" + c3 + ")").replace("d3", "(" + d3 + ")"); } console.log(equations); // 计算三元一次方程 // 确保常量和未知数分开在2边,逻辑安装这样处理的 var LEquat = { formatFloat: function(f, digit) { var m = Math.pow(10, digit); return parseInt(f m, 10) / m; }, // 是否常量一边, 返回0常量的一边索引,1变量一边的索引,返回一个数组 separateSide: function(equations) { var arr = [], equa = equations.split("="); if (equa[0].search(/x|y|z/) == -1) { arr = equa.slice(0); } else { arr[0] = equa[1]; arr[1] = equa[0]; } return arr; }, // 分隔变量的一边,把x,y,z分隔 // x 是索引0,y是索引1,z是索引2 separateVariableSide: function(variableSide) { var variables = variableSide.split(/\s+(\+|\-)\s+/); var arr = []; for (var i = 0; i < variables.length; i++) { if (variables[i].search(/x/) != -1) { arr[0] = variables[i]; } else if (variables[i].search(/y/) != -1) { arr[1] = variables[i]; } else if (variables[i].search(/z/) != -1) { arr[2] = variables[i]; } } return arr; }, // 取出方程里面变量一边对应x,y,z的常量系数 // 0: x的系数,1y的系数,2z的系数 getCoefficient: function(variableSideArray) { var me = LEquat; var arr = []; for (var i = 0; i < variableSideArray.length; i++) { var coeffs = variableSideArray[i].split(""); if (coeffs[0].search(/x|y|z/) == -1) { arr[i] = coeffs[0]; } else { arr[i] = coeffs[1]; } } return arr; }, step: function() { var me = LEquat; // 分隔第一个方程 var equation1 = me.separateSide(equations[0]); // 分隔第二个方程 var equation2 = me.separateSide(equations[1]); // 分隔第三个方程 var equation3 = me.separateSide(equations[2]); // 第一个方程的常量一边 var a1 = equation1[0]; // 第一个方程x系数 var equa1 = me.getCoefficient(me.separateVariableSide(equation1[1])); // y的系数 z的系数 x的系数 var b1 = equa1[1], c1 = equa1[2], d1 = equa1[0]; // 第二个方程的常量一边 var a2 = equation2[0]; // 第二个方程变量一边系数 var equa2 = me.getCoefficient(me.separateVariableSide(equation2[1])); var b2 = equa2[1], c2 = equa2[2], d2 = equa2[0]; // 第三个方程的常量一边 var a3 = equation3[0]; // 第三个方程变量一边系数 var equa3 = me.getCoefficient(me.separateVariableSide(equation3[1])); var b3 = equa3[1], c3 = equa3[2], d3 = equa3[0]; // ( a1 (d2/d1) ) var left4_1 = " ( " + a1 + " ( " + d2 + " / " + d1 + " ) ) "; // (4.1) 右边 var right4_1 = " y " + " " + b1 + " ( " + d2 + " / " + d1 + " ) + z " + c1 + " ( " + d2 + " / " + d1 + " ) - " + d2 + " x "; // 消x (4.1) - (2) // ( ( a1 (d2/d1) ) - a2 ) = y ( (b1 (d2/d1)) - b2 ) + z ( (c1 (d2/d1)) - c2 ); (5) // (5) 中常量的一边 var left5_1 = " ( " + left4_1 + " - " + a2 + " ) "; // (5) 中变量一边 var right5_1 = " y ( ( " + b1 + " ( " + d2 + " / " + d1 + " ) ) - " + b2 + " ) + z ( ( " + c1 + " ( " + d2 + " / " + d1 + " ) ) - " + c2 + " ) "; // (1) (d3/d1) // ( a1 (d3/d1) ) = y ( b1 (d3/d1) ) + z ( c1 (d3/d1) ) - d1 x (d3/d1) (6) // ( a1 (d3/d1) ) = y ( b1 (d3/d1) ) + z ( c1 (d3/d1) ) - d3 x (6.1) var left6_1 = " ( " + a1 + " ( " + d3 + " / " + d1 + " ) ) "; var right6_1 = " y ( " + b1 + " ( " + d3 + " / " + d1 + " ) ) + z ( " + c1 + " ( " + d3 + " / " + d1 + " ) ) - " + d3 + " x "; // (6.1) - (3) // ( ( a1 (d3/d1) ) - a3 ) = y ( ( b1 (d3/d1) ) - b3 ) + z ( ( c1 (d3/d1) ) - c3 ) (7) var left7_1 = " ( " + left6_1 + " - " + a3 + " ) "; var right7_1 = " y ( ( " + b1 + " ( " + d3 + " / " + d1 + " ) ) - " + b3 + " ) + z ( ( " + c1 + " ( " + d3 + " / " + d1 + " ) ) - " + c3 + " ) "; // (5) ( ( (b1 (d3/d1)) - b3 ) / ( ( b1 (d2/d1) ) - b2 ) ) // ( ( ( a1 (d2/d1) ) - a2 ) ( ( (b1 (d3/d1)) - b3 ) / ( ( b1 (d2/d1) ) - b2 ) ) ) // = y ( (b1 (d3/d1)) - b3 ) + z ( ( (c1 (d2/d1)) - c2 ) ( ( (b1 (d3/d1)) - b3 ) / ( ( b1 (d2/d1) ) - b2 ) ) ) (8) var left8_1 = " ( " + left5_1 + " ( ( ( " + b1 + " ( " + d3 + " / " + d1 + " ) ) - " + b3 + " ) / ( ( " + b1 + " ( " + d2 + " / " + d1 + " ) ) - " + b2 + " ) ) ) "; var right8_1 = " y ( ( " + b1 + " ( " + d3 + " / " + d1 + " ) ) - " + b3 + " ) + z ( ( ( " + c1 + " ( " + d2 + " / " + d1 + " ) ) - " + c2 + " ) ( ( ( " + b1 + " ( " + d3 + " / " + d1 + " ) ) - " + b3 + " ) / ( ( " + b1 + " ( " + d2 + " / " + d1 + " ) ) - " + b2 + " ) ) ) "; // (8) - (7) // ( ( ( ( a1 (d2/d1) ) - a2 ) ( ( (b1 (d3/d1)) - b3 ) / ( ( b1 (d2/d1) ) - b2 ) ) ) - ( ( a1 (d3/d1) ) - a3 ) ) // = // z ( ( ( (c1 (d2/d1)) - c2 ) ( ( (b1 (d3/d1)) - b3 ) / ( ( b1 (d2/d1) ) - b2 ) ) ) - ( ( c1 (d3/d1) ) - c3 ) ) (9) var left9_1 = " ( " + left8_1 + " - " + left7_1 + " ) "; var right9_1 = " z ( ( ( ( " + c1 + " ( " + d2 + " / " + d1 + " ) ) - " + c2 + " ) ( ( ( " + b1 + " ( " + d3 + " / " + d1 + " ) ) - " + b3 + " ) / ( ( " + b1 + " ( " + d2 + " / " + d1 + " ) ) - " + b2 + " ) ) ) - ( ( " + c1 + " ( " + d3 + " / " + d1 + " ) ) - " + c3 + " ) ) "; var z = left9_1 + " / " + " ( ( ( ( " + c1 + " ( " + d2 + " / " + d1 + " ) ) - " + c2 + " ) ( ( ( " + b1 + " ( " + d3 + " / " + d1 + " ) ) - " + b3 + " ) / ( ( " + b1 + " ( " + d2 + " / " + d1 + " ) ) - " + b2 + " ) ) ) - ( ( " + c1 + " ( " + d3 + " / " + d1 + " ) ) - " + c3 + " ) ) "; // ( ( a1 (d2/d1) ) - a2 ) = y ( (b1 (d2/d1)) - b2 ) + z ( (c1 (d2/d1)) - c2 ); var y = " ( " + left5_1 + " - " + " z ( ( " + c1 + " ( " + d2 + " / " + d1 + " ) ) - " + c2 + " ) ) " + " / " + " ( ( " + b1 + " ( " + d2 + " / " + d1 + " ) ) - " + b2 + " ) "; // 把z代入到(5)中 y = y.replace("z", z); // 把y,z代入方程1 // a1 = y b1 + z c1 - d1 x var x = " ( y " + b1 + " + z " + c1 + " - " + a1 + " ) / " + d1; x = x.replace("z", z).replace("y", y); x = me.formatFloat(eval(x), 2); y = me.formatFloat(eval(y), 2); z = me.formatFloat(eval(z), 2); return {x: x,y: y,z: z}; } }; console.log("-----------计算结果--------------"); console.log(LEquat.step());
PS这里再为大家推荐几款计算工具供大家进一步参考借鉴
在线一元函数(方程)求解计算工具
科学计算器在线使用_高级计算器在线计算
在线计算器_标准计算器
更多关于JavaScript相关内容感兴趣的读者可查看本站专题《》、《》、《》、《》、《》、《》及《》
希望本文所述对大家JavaScript程序设计有所帮助。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程