最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS求解三元一次方程組值的方法

 更新時間:2017年01月03日 09:26:50   作者:lilili123  
這篇文章主要介紹了JS求解三元一次方程組值的方法,涉及JS數(shù)學運算的相關操作技巧,需要的朋友可以參考下

本文實例講述了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);
// 計算三元一次方程
// 確保常量和未知數(shù)分開在2邊,邏輯安裝這樣處理的
var LEquat = {
  formatFloat: function(f, digit) {
    var m = Math.pow(10, digit);
    return parseInt(f * m, 10) / m;
  },
  // 是否常量一邊, 返回0常量的一邊索引,1變量一邊的索引,返回一個數(shù)組
  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的常量系數(shù)
  // 0: x的系數(shù),1:y的系數(shù),2:z的系數(shù)
  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系數(shù)
    var equa1 = me.getCoefficient(me.separateVariableSide(equation1[1]));
    // y的系數(shù)     z的系數(shù)     x的系數(shù)
    var b1 = equa1[1], c1 = equa1[2], d1 = equa1[0];
    // 第二個方程的常量一邊
    var a2 = equation2[0];
    // 第二個方程變量一邊系數(shù)
    var equa2 = me.getCoefficient(me.separateVariableSide(equation2[1]));
    var b2 = equa2[1], c2 = equa2[2], d2 = equa2[0];
    // 第三個方程的常量一邊
    var a3 = equation3[0];
    // 第三個方程變量一邊系數(shù)
    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:這里再為大家推薦幾款計算工具供大家進一步參考借鑒:

在線一元函數(shù)(方程)求解計算工具:
http://tools.jb51.net/jisuanqi/equ_jisuanqi

科學計算器在線使用_高級計算器在線計算:
http://tools.jb51.net/jisuanqi/jsqkexue

在線計算器_標準計算器:
http://tools.jb51.net/jisuanqi/jsq

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《JavaScript數(shù)學運算用法總結》、《JavaScript數(shù)據(jù)結構與算法技巧總結》、《JavaScript數(shù)組操作技巧總結》、《JavaScript排序算法總結》、《JavaScript遍歷算法與技巧總結》、《JavaScript查找算法技巧總結》及《JavaScript錯誤與調試技巧總結

希望本文所述對大家JavaScript程序設計有所幫助。

相關文章

  • Form表單上傳文件(type=

    Form表單上傳文件(type="file")的使用

    這篇文章主要介紹了Form表單上傳文件(type="file")的使用,以及過濾器解決中文亂碼問題,需要的朋友可以參考下
    2017-08-08
  • js中符號轉意問題示例探討

    js中符號轉意問題示例探討

    符號轉意,大家或許有所了解,知識在使用中或許不是那么的在意,其實這個問題很重要,下面為大家講解下js符號轉意問題相關知識,感興趣的朋友可以參考下
    2013-08-08
  • javascript 簡練的幾個函數(shù)

    javascript 簡練的幾個函數(shù)

    看CSDN上別人的代碼,感覺比較精煉,拿來主義,需要的朋友可以看下。
    2009-08-08
  • JavaScript的設計模式經(jīng)典之代理模式

    JavaScript的設計模式經(jīng)典之代理模式

    代理模式的定義是把對一個對象的訪問, 交給另一個代理對象來操作。接下來通過本文給大家介紹JavaScript的設計模式之代理模式,感興趣的朋友一起學習吧
    2016-02-02
  • 調整小數(shù)的格式保留小數(shù)點后兩位

    調整小數(shù)的格式保留小數(shù)點后兩位

    調整小數(shù)的格式,如保留小數(shù)點后兩位等等在開發(fā)過程中經(jīng)常會遇到,下面本文搜集了一些不錯的實現(xiàn)方法與分享
    2014-05-05
  • js中常見的4種創(chuàng)建對象方式與優(yōu)缺點

    js中常見的4種創(chuàng)建對象方式與優(yōu)缺點

    不管是哪門語言,千變萬化不離其宗,深入理解其本質,方能應用自如,下面這篇文章主要給大家介紹了關于js中常見的4種創(chuàng)建對象方式與優(yōu)缺點,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-01-01
  • js與jquery分別實現(xiàn)tab標簽頁功能的方法

    js與jquery分別實現(xiàn)tab標簽頁功能的方法

    這篇文章主要介紹了js與jquery分別實現(xiàn)tab標簽頁功能的方法,結合實例形式對比分析了javascript與jQuery分別實現(xiàn)tab標簽功能的操作技巧,需要的朋友可以參考下
    2016-11-11
  • 一款JavaScript壓縮工具:X2JSCompactor

    一款JavaScript壓縮工具:X2JSCompactor

    一款JavaScript壓縮工具:X2JSCompactor...
    2007-06-06
  • 一文詳解CORS與預檢請求

    一文詳解CORS與預檢請求

    這篇文章主要介紹了CORS與預檢請求,CORS是一套規(guī)范,指導瀏覽器和服務器之間如何進行跨域資源共享,當發(fā)送跨域請求時,瀏覽器會先發(fā)送一個OPTIONS方法的預檢請求。文中介紹的非常詳細,需要的同學可以參考一下
    2023-04-04
  • js 創(chuàng)建書簽小工具之理論

    js 創(chuàng)建書簽小工具之理論

    書簽小工具(Bookmarklets)是一個非常棒的javascript代碼小片斷偽裝成的小應用,它駐留在你的瀏覽器里并為網(wǎng)頁提供額外的功能。這里我們將研究如何從頭開始創(chuàng)建一個書簽小工具及一些最佳實踐的建議。
    2011-02-02

最新評論

乐业县| 临西县| 柳河县| 盱眙县| 六安市| 扎囊县| 兴安盟| 商城县| 江安县| 青田县| 临夏市| 西林县| 昭平县| 龙泉市| 山丹县| 灵石县| 隆子县| 全南县| 莱阳市| 东丽区| 化隆| 枣强县| 云龙县| 新野县| 汝城县| 道孚县| 巴林右旗| 乡宁县| 九龙坡区| 叙永县| 兴国县| 怀柔区| 阿坝县| 女性| 乐安县| 安平县| 胶南市| 峨眉山市| 顺平县| 如东县| 将乐县|