快捷搜索:  汽车  科技

求最优解的数学方法:这是一道数学题

求最优解的数学方法:这是一道数学题<?php function solveEq($eq){ $sum_D = $sum_Dx = $sum_Dy = $sum_Dz = 0; for($i=0;$i<3;$i ){ $line1 = $line2 = $x1 = $x2 = $y1 = $y2 =$z1 = $z2 =1; for($j=0;$j<3;$j ){ $line1 *= $eq[($i $j)%3][$j]; $line2 *= $eq[($i $j)%3][2-$j]; $x1 *= $j==0?$eq[($i $j)%3][3]:$eq[($i $j)%3][$j]; $x2 *= 2-$j==0?$eq[($i $j)%3][3]:$eq[($i $j)%3][2-$j]; $y1 *= $j==1?$eq[($i $j)%3][3]:$eq

前言

在做过的许多codewars做过的许多题目都是熟悉的数学计算题,也是公式都懂得;但用程序语言表达出来也许是另一番味道。

求最优解的数学方法:这是一道数学题(1)

题目

废话没有;开始题目:

已知3个方程,有3个未知数x、y和z,我们要求解这些未知数。

方程4x-3y z=-10、2x y 3z=0和-x 2y-5z=17将作为

[[4、-3、1、-10]、[2、1、3、0]、[-1、2、-5、17]的数组传入,

结果应为[1、4、-2](即[x、y、z])的数组。

分析
  • 解三元一次方程组,在数学计算中并不难,最先想到的已经就是代入法求解;但是如果用程序实现,似乎不是很方便;
  • 这时候我就需要寻求第二种方法,行列式解法;至于公式自行补充;此处举个例子

求最优解的数学方法:这是一道数学题(2)

例如

代码

代码逻辑并非最佳,仅供参考

<?php function solveEq($eq){ $sum_D = $sum_Dx = $sum_Dy = $sum_Dz = 0; for($i=0;$i<3;$i ){ $line1 = $line2 = $x1 = $x2 = $y1 = $y2 =$z1 = $z2 =1; for($j=0;$j<3;$j ){ $line1 *= $eq[($i $j)%3][$j]; $line2 *= $eq[($i $j)%3][2-$j]; $x1 *= $j==0?$eq[($i $j)%3][3]:$eq[($i $j)%3][$j]; $x2 *= 2-$j==0?$eq[($i $j)%3][3]:$eq[($i $j)%3][2-$j]; $y1 *= $j==1?$eq[($i $j)%3][3]:$eq[($i $j)%3][$j]; $y2 *= 2-$j==1?$eq[($i $j)%3][3]:$eq[($i $j)%3][2-$j]; $z1 *= $j==2?$eq[($i $j)%3][3]:$eq[($i $j)%3][$j]; $z2 *= 2-$j==2?$eq[($i $j)%3][3]:$eq[($i $j)%3][2-$j]; } $sum_D = ($line1-$line2); $sum_Dx =($x1-$x2); $sum_Dy =($y1-$y2); $sum_Dz =($z1-$z2); } return [$sum_Dx/$sum_D $sum_Dy/$sum_D $sum_Dz/$sum_D]; }

有点IT,感谢支持!

猜您喜欢: