本文实例讲述了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的系数,1:y的系数,2:z的系数
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:这里再为大家推荐几款计算工具供大家进一步参考借鉴:
在线一元函数(方程)求解计算工具:
http://tools./jisuanqi/equ_jisuanqi
科学计算器在线使用_高级计算器在线计算:
http://tools./jisuanqi/jsqkexue
在线计算器_标准计算器:
http://tools./jisuanqi/jsq
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript数组操作技巧总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结》
希望本文所述对大家JavaScript程序设计有所帮助。
# JS
# 求解
# 三元一次
# 方程组
# 值
# JS三目运算(三元运算)方法详解
# javascript三元运算符用法实例
# JavaScript三元运算符的多种使用技巧
# 详解如何在 JavaScript 中使用三元运算符
# 全面了解javascript三元运算符
# 总结javascript三元运算符知识点
# JavaScript三元表达式示例详解
# 第一个
# 第二个
# 第三个
# 相关内容
# 遍历
# 感兴趣
# 数据结构
# 给大家
# 更多关于
# 所述
# 几款
# 程序设计
# 再为
# 操作技巧
# 讲述了
# equations
# digit
# function
# formatFloat
# pow
相关文章:
香港服务器WordPress建站指南:SEO优化与高效部署策略
网站制作新手教程,新手建设一个网站需要注意些什么?
,有什么在线背英语单词效率比较高的网站?
韩国服务器如何优化跨境访问实现高效连接?
海南网站制作公司有哪些,海口网是哪家的?
网站制作哪家好,cc、.co、.cm哪个域名更适合做网站?
已有域名和空间如何快速搭建网站?
免费网站制作appp,免费制作app哪个平台好?
公众号网站制作网页,微信公众号怎么制作?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
如何在Golang中引入测试模块_Golang测试包导入与使用实践
建站之星如何取消后台验证码生成?
,如何利用word制作宣传手册?
如何自定义建站之星模板颜色并下载新样式?
建站之星安装后如何自定义网站颜色与字体?
单页制作网站有哪些,朋友给我发了一个单页网站,我应该怎么修改才能把他变成自己的呢,请求高手指点迷津?
武汉网站如何制作,黄黄高铁武穴北站途经哪些村庄?
建站主机服务器选型指南与性能优化方案解析
如何零成本快速生成个人自助网站?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
教育培训网站制作流程,请问edu教育网站的域名怎么申请?
linux top下的 minerd 木马清除方法
网站制作说明怎么写,简述网页设计的流程并说明原因?
简历在线制作网站免费版,如何创建个人简历?
如何通过宝塔面板实现本地网站访问?
如何确保FTP站点访问权限与数据传输安全?
建站之星安装失败:服务器环境不兼容?
义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?
如何快速查询网站的真实建站时间?
一键制作网站软件下载安装,一键自动采集网页文档制作步骤?
如何在万网ECS上快速搭建专属网站?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
在线制作视频的网站有哪些,电脑如何制作视频短片?
Swift中swift中的switch 语句
如何选择可靠的免备案建站服务器?
建站之星展会模板:智能建站与自助搭建高效解决方案
开封网站制作公司,网络用语开封是什么意思?
股票网站制作软件,网上股票怎么开户?
php条件判断怎么写_ifelse和switchcase的使用区别【对比】
免费制作海报的网站,哪位做平面的朋友告诉我用什么软件做海报比较好?ps还是cd还是ai这几个软件我都会些我是做网页的?
网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?
网站制作的方法有哪些,如何将自己制作的网站发布到网上?
建站主机与虚拟主机有何区别?如何选择最优方案?
电商网站制作多少钱一个,电子商务公司的网站制作费用计入什么科目?
如何快速上传建站程序避免常见错误?
建站之星后台密码遗忘或太弱?如何重置与强化?
如何构建满足综合性能需求的优质建站方案?
如何在沈阳梯子盘古建站优化SEO排名与功能模块?
韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐
*请认真填写需求信息,我们会在24小时内与您取得联系。