国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

C#二元一次方程參數(shù)求解

2019-11-14 13:29:17
字體:
供稿:網(wǎng)友

本文記錄了關(guān)于求直線斜率及縱截距值的簡單方法,只是簡單的記錄下求解思路,最終還需根據(jù)具體項(xiàng)目進(jìn)行優(yōu)化。

設(shè)直線方程式為:y=kx+b

編程思想:

1、代入y1與x1的值,得到:y1=kx1+b

2、代入y2與x2的值,得到:y2=kx2+b       

3、首先算出一個(gè)系數(shù)m=kx1 / kx2 或 m=kx2 / kx1

4、根據(jù)第三步,將 y1=kx1+b 或 y2=kx2+b 乘以系數(shù)m,使 kx1==kx2 ,注意 kx1與kx2不能為0       

4、將2個(gè)函數(shù)相減,例如:my2-my1=mb-b 即 m(y2-y1)=(m-1)b      

5、算出縱截距b=(m(y2-y1))/(m-1) 注意:m不能為1 同時(shí)注意浮點(diǎn)數(shù)四舍五入問題       

6、將b值y1=kx1+b中,求出斜率k值

 

示例代碼:

using System;namespace Demo{       class PRogram    {        private static readonly int _decimaldigits = 2;//小數(shù)位數(shù)保留2位        /// <summary>        /// 計(jì)算斜率k及縱截距b值        /// </summary>        /// <param name="x1">坐標(biāo)點(diǎn)x1</param>        /// <param name="x2">坐標(biāo)點(diǎn)x2</param>        /// <param name="y1">坐標(biāo)點(diǎn)y1</param>        /// <param name="y2">坐標(biāo)點(diǎn)y2</param>        /// <param name="kvalue">斜率k值</param>        /// <param name="bvalue">縱截距b值</param>        private static void Calculate(float x1, float x2, float y1, float y2, ref float kvalue, ref float bvalue)//求方程y=kx+b 系數(shù) k ,b        {            float coefficient = 1;//系數(shù)值            try            {                if ((x1 == 0) || (x2 == 0) || (x1 == x2)) return; //排除為零的情況以及x1,x2相等時(shí)無法運(yùn)算的情況                //if (y1 == y2) return; //根據(jù)具體情況而定,如何這兩個(gè)值相等,得到的就是一條直線                float temp = 0;                if (x1 >= x2)                {                    coefficient = (float)Math.Round((x1 / x2), _decimaldigits);                    temp = y2 * coefficient; //將對(duì)應(yīng)的函數(shù)乘以系數(shù)                    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系數(shù)不能為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("計(jì)算直線斜率k及縱截距b");            Console.WriteLine("請(qǐng)輸入x1值");            x1 = Convert.ToSingle(Console.ReadLine());            Console.WriteLine("請(qǐng)輸入y1值");            y1 = Convert.ToSingle(Console.ReadLine());            Console.WriteLine("請(qǐng)輸入x2值");            x2 = Convert.ToSingle(Console.ReadLine());            Console.WriteLine("請(qǐng)輸入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();          }    }}

運(yùn)行結(jié)果:

截圖20160202102625275


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 安达市| 宁明县| 桂东县| 博湖县| 洛扎县| 辽中县| 比如县| 辛集市| 宜黄县| 红安县| 平塘县| 太原市| 临夏市| 榆中县| 丁青县| 红原县| 英德市| 连城县| 绥阳县| 桂阳县| 碌曲县| 阜南县| 马关县| 贡山| 克东县| 长泰县| 巴林右旗| 进贤县| 万盛区| 安丘市| 永州市| 句容市| 德化县| 怀宁县| 郎溪县| 红桥区| 三亚市| 伊宁市| 肇源县| 普陀区| 通海县|