Skip to content

Commit b46dcd7

Browse files
authored
Merge pull request #2 from Crequency/dev=main
[Pull Request] Added a set of functions, Removed some files.
2 parents e302c33 + 7f33d68 commit b46dcd7

8 files changed

Lines changed: 257 additions & 144 deletions

File tree

Common.BasicHelper/LiteLogger/LoggerManager.cs

Lines changed: 0 additions & 138 deletions
This file was deleted.
Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
namespace Common.BasicHelper.Math;
2+
3+
public class Equation
4+
{
5+
/// <summary>
6+
/// 解方程 - 二元一次
7+
/// </summary>
8+
/// <param name="a1">方程一的系数 a</param>
9+
/// <param name="b1">方程一的系数 b</param>
10+
/// <param name="c1">方程一的结果 c</param>
11+
/// <param name="a2">方程二的系数 a</param>
12+
/// <param name="b2">方程二的系数 b</param>
13+
/// <param name="c2">方程二的系数 c</param>
14+
/// <returns>结果 - x,y - 组成的数组</returns>
15+
public static double[] SolveEquation(
16+
double a1, double b1, double c1,
17+
double a2, double b2, double c2)
18+
{
19+
var rst = new double[2];
20+
rst[1] = (c2 - (a2 * c1 / a1)) / (b2 - (a2 * b1 / a1));
21+
rst[0] = (c1 - (b1 * rst[1])) / a1;
22+
return rst;
23+
}
24+
25+
/// <summary>
26+
/// 解方程 - 三元一次
27+
/// </summary>
28+
/// <param name="a1">方程一的系数 a</param>
29+
/// <param name="b1">方程一的系数 b</param>
30+
/// <param name="c1">方程一的系数 c</param>
31+
/// <param name="d1">方程一的结果 d</param>
32+
/// <param name="a2">方程二的系数 a</param>
33+
/// <param name="b2">方程二的系数 b</param>
34+
/// <param name="c2">方程二的系数 c</param>
35+
/// <param name="d2">方程二的结果 d</param>
36+
/// <returns>结果 - x,y - 组成的数组</returns>
37+
public static double[] SolveEquation(
38+
double a1, double b1, double c1, double d1,
39+
double a2, double b2, double c2, double d2,
40+
double a3, double b3, double c3, double d3
41+
)
42+
{
43+
var rst = new double[3];
44+
double na1, nb1, nc1, na2, nb2, nc2, x, y, z;
45+
46+
na1 = a1 * b2 - a2 * b1; nb1 = a1 * c2 - a2 * c1; nc1 = a1 * d2 - a2 * d1;
47+
48+
na2 = a1 * b3 - a3 * b1; nb2 = a1 * c3 - a3 * c1; nc2 = a1 * d3 - a3 * d1;
49+
50+
var y_z = SolveEquation(na1, nb1, nc1, na2, nb2, nc2);
51+
y = y_z[0]; z = y_z[1];
52+
x = (d1 - b1 * y - c1 * z) / a1;
53+
rst[0] = x; rst[1] = y; rst[2] = z;
54+
return rst;
55+
}
56+
57+
/* a1x+b1y+c1z+d1m=e1
58+
* a2x+b2y+c2z+d2m=e2
59+
* a3x+b3y+c3z+d3m=e3
60+
* a4x+b4y+c4z+d4m=e4
61+
*
62+
* a1x=e1-b1y-c1z-d1m
63+
* x=(e1-b1y-c1z-d1m)/a1
64+
*
65+
* a2(e1-b1y-c1z-d1m)/a1+b2y+c2z+d2m=e2
66+
* a3(e1-b1y-c1z-d1m)/a1+b3y+c3z+d3m=e3
67+
* a4(e1-b1y-c1z-d1m)/a1+b4y+c4z+d4m=e4
68+
*
69+
* (a1*b2-a2*b1)y+(a1*c2-a2*c1)z+(a1*d2-a2*d1)m=a1*e2-a2*e1
70+
* (a1*b3-a3*b1)y+(a1*c3-a3*c1)z+(a1*d3-a3*d1)m=a1*e3-a3*e1
71+
* (a1*b4-a4*b1)y+(a1*c4-a4*c1)z+(a1*d4-a4*d1)m=a1*e4-a4*e1
72+
*/
73+
74+
/// <summary>
75+
/// 解方程组 - 四元一次
76+
/// </summary>
77+
/// <param name="a1">方程一的系数 a</param>
78+
/// <param name="b1">方程一的系数 b</param>
79+
/// <param name="c1">方程一的系数 c</param>
80+
/// <param name="d1">方程一的系数 d</param>
81+
/// <param name="e1">方程一的结果 e</param>
82+
/// <param name="a2">方程二的系数 a</param>
83+
/// <param name="b2">方程二的系数 b</param>
84+
/// <param name="c2">方程二的系数 c</param>
85+
/// <param name="d2">方程二的系数 d</param>
86+
/// <param name="e2">方程二的结果 e</param>
87+
/// <param name="a3">方程三的系数 a</param>
88+
/// <param name="b3">方程三的系数 b</param>
89+
/// <param name="c3">方程三的系数 c</param>
90+
/// <param name="d3">方程三的系数 d</param>
91+
/// <param name="e3">方程三的结果 e</param>
92+
/// <param name="a4">方程四的系数 a</param>
93+
/// <param name="b4">方程四的系数 b</param>
94+
/// <param name="c4">方程四的系数 c</param>
95+
/// <param name="d4">方程四的系数 d</param>
96+
/// <param name="e4">方程四的结果 e</param>
97+
/// <returns>x_y_z_t 的数组,对应角标分别为 0,1,2,3</returns>
98+
public static double[] SolveEquation(
99+
double a1, double b1, double c1, double d1, double e1,
100+
double a2, double b2, double c2, double d2, double e2,
101+
double a3, double b3, double c3, double d3, double e3,
102+
double a4, double b4, double c4, double d4, double e4
103+
)
104+
{
105+
var rst = new double[4];
106+
double na1, nb1, nc1, nd1, na2, nb2, nc2, nd2, na3, nb3, nc3, nd3, x, y, z, m;
107+
na1 = a1 * b2 - a2 * b1; nb1 = a1 * c2 - a2 * c1;
108+
nc1 = a1 * d2 - a2 * d1; nd1 = a1 * e2 - a2 * e1;
109+
na2 = a1 * b3 - a3 * b1; nb2 = a1 * c3 - a3 * c1;
110+
nc2 = a1 * d3 - a3 * d1; nd2 = a1 * e3 - a3 * e1;
111+
na3 = a1 * b4 - a4 * b1; nb3 = a1 * c4 - a4 * c1;
112+
nc3 = a1 * d4 - a4 * d1; nd3 = a1 * e4 - a4 * e1;
113+
var y_z_m = SolveEquation(
114+
na1, nb1, nc1, nd1,
115+
na2, nb2, nc2, nd2,
116+
na3, nb3, nc3, nd3);
117+
y = y_z_m[0]; z = y_z_m[1]; m = y_z_m[2];
118+
x = (e1 - b1 * y - c1 * z - d1 * m) / a1;
119+
rst[0] = x; rst[1] = y; rst[2] = z; rst[3] = m;
120+
return rst;
121+
}
122+
}

Common.BasicHelper/Math/Standard.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,19 @@ public static T Max<T>(params T[] input) where T : IComparable<T>
5353

5454
return max;
5555
}
56+
57+
/// <summary>
58+
/// 获取指定位数的数字
59+
/// 例如:456 取 2 位数返回 5,6892 取 4 位数返回 6
60+
/// </summary>
61+
/// <param name="number">指示要被获取指定位数字的数字</param>
62+
/// <param name="bit">指示要获取的位数</param>
63+
/// <returns>返回指定位上数字</returns>
64+
public static int GetBit(int number, int bit)
65+
{
66+
var pow = 10;
67+
for (var i = 0; i < bit - 1; ++i)
68+
pow *= pow;
69+
return (number % pow) / (pow / 10);
70+
}
5671
}

Common.BasicHelper/Math/Tricks.cs

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
using System.Runtime.CompilerServices;
5+
using System.Runtime.InteropServices;
6+
using System.Text;
7+
using System.Threading.Tasks;
8+
9+
namespace Common.BasicHelper.Math;
10+
11+
public class Tricks
12+
{
13+
/// <summary>
14+
/// 获取一个乘法表
15+
/// </summary>
16+
/// <param name="from">乘法表从哪开始</param>
17+
/// <param name="to">乘法表从哪结束</param>
18+
/// <param name="direction">方向, true 为正三角, false 为反三角, 默认为正</param>
19+
/// <returns>一个分行的乘法表</returns>
20+
public static string GetMultiplicationTable(int from, int to, bool direction = true)
21+
{
22+
var sb = new StringBuilder();
23+
24+
if (direction)
25+
{
26+
for (var x = from; x <= to; ++x)
27+
{
28+
for (var y = from; y <= x; ++y)
29+
sb.Append($"{y}*{x}={x * y}\t");
30+
sb.AppendLine();
31+
}
32+
}
33+
else
34+
{
35+
for (var x = from; x >= from; --x)
36+
{
37+
for (var y = from; y <= x; ++y)
38+
sb.Append($"{y}*{x}={x * y}\t");
39+
sb.AppendLine();
40+
}
41+
}
42+
43+
return sb.ToString();
44+
}
45+
}
46+
47+
public static class TricksExtensions
48+
{
49+
/// <summary>
50+
/// 获取一个乘法表
51+
/// </summary>
52+
/// <param name="from">乘法表从哪开始</param>
53+
/// <param name="to">乘法表从哪结束</param>
54+
/// <param name="direction">方向, true 为正三角, false 为反三角, 默认为正</param>
55+
/// <returns>一个分行的乘法表</returns>
56+
public static string GetMultiplicationTableTo(this int from, int to, bool direction = true)
57+
=> Tricks.GetMultiplicationTable(from, to, direction);
58+
}

Common.BasicHelper/Util/Extension/CleanHelper.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ namespace Common.BasicHelper.Util.Extension;
66

77
public static class CleanHelper
88
{
9-
109
/// <summary>
1110
/// 关闭并释放对象
1211
/// </summary>

0 commit comments

Comments
 (0)