本文记录了关于求直线斜率及纵截距值的简单方法,只是简单的记录下求解思路,最终还需根据具体项目进行优化。 设直线方程式为:y=kx+b 编程思想: 1、代入y1与x1的值,得到:y1=kx1+b 2、代入y2与x2的值,得到:y2=kx2+b 3、首先算出一个系数m=kx1 / kx2 或
本文记录了关于求直线斜率及纵截距值的简单方法,只是简单的记录下求解思路,最终还需根据具体项目进行优化。
设直线方程式为:y=kx+b
编程思想:
1、代入y1与x1的值,得到:y1=kx1+b
2、代入y2与x2的值,得到:y2=kx2+b
3、首先算出一个系数m=kx1 / kx2 或 m=kx2 / kx1
4、根据第三步,将 y1=kx1+b 或 y2=kx2+b 乘以系数m,使 kx1==kx2 ,注意 kx1与kx2不能为0
4、将2个函数相减,例如:my2-my1=mb-b 即 m(y2-y1)=(m-1)b
5、算出纵截距b=(m(y2-y1))/(m-1) 注意:m不能为1 同时注意浮点数四舍五入问题
6、将b值y1=kx1+b中,求出斜率k值
示例代码:
using system;namespace demo{ class program { private static readonly int _decimaldigits = 2;//小数位数保留2位 /// /// 计算斜率k及纵截距b值 /// /// 坐标点x1 /// 坐标点x2 /// 坐标点y1 /// 坐标点y2 /// 斜率k值 /// 纵截距b值 private static void calculate(float x1, float x2, float y1, float y2, ref float kvalue, ref float bvalue)//求方程y=kx+b 系数 k ,b { float coefficient = 1;//系数值 try { if ((x1 == 0) || (x2 == 0) || (x1 == x2)) return; //排除为零的情况以及x1,x2相等时无法运算的情况 //if (y1 == y2) return; //根据具体情况而定,如何这两个值相等,得到的就是一条直线 float temp = 0; if (x1 >= x2) { coefficient = (float)math.round((x1 / x2), _decimaldigits); temp = y2 * coefficient; //将对应的函数乘以系数 bvalue = (float)math.round(((temp - y1) / (coefficient - 1)), _decimaldigits); kvalue = (float)math.round(((y1 - bvalue) / x1), _decimaldigits); //求出k值 } else { coefficient = x2 / x1; temp = y1 * coefficient; bvalue = (float)math.round(((temp - y2) / (coefficient - 1)), _decimaldigits);//求出b值 kvalue = (float)math.round(((y2 - bvalue) / x2), _decimaldigits); //求出k值 } } catch { console.writeline(x系数不能为0或相等); } } static void main(string[] args) { float x1 = 0; float y1 = 0; float x2 = 0; float y2 = 0; float kvalue = 0; float bvalue = 0; console.writeline(计算直线斜率k及纵截距b); console.writeline(请输入x1值); x1 = convert.tosingle(console.readline()); console.writeline(请输入y1值); y1 = convert.tosingle(console.readline()); console.writeline(请输入x2值); x2 = convert.tosingle(console.readline()); console.writeline(请输入y2值); y2 = convert.tosingle(console.readline()); calculate(x1, x2, y1, y2, ref kvalue, ref bvalue); console.writeline(直线方程为:y={0}x+{1}, kvalue, bvalue); console.readkey(); } }}
运行结果: