Lagrange插值问题

问题本身就不在阐述了, 是非常基本的问题,可供参考的资料有许多

下面是主要的代码实现和窗体视图

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

 

namespace Lagrangespace

{

    public partial class Form1 : Form

    {

        //定义全局变量

        double[] y=new double[100];

        double[] x = new double[100];

        //已知节点个数

        int n;

        //节点计数器

        nit is = 0;

        //输入节点处的变量值

        double xx, yy;

 

        //窗体初始化

        public Form1()

        {

            InitializeComponent();

        }

        private void TMOUSEDOWN(object sender ,MouseEventArgs e)

        {

            if(this.tbNode.Text=="Enter a number here")

            {

                this.tbNode.Text="";

            }

        }

        // 窗体载入事件

        private void Form1_Load(object sender, EventArgs e)

        {

 

            this.tbInput.ForeColor = Color.Blue;

            this.tbHint.BackColor = Color.WhiteSmoke;

            //文本绑定事件

            this.tbInput.TextChanged += new EventHandler(tbInput_TextChanged);

            this.tbInput.Leave+=new EventHandler(tbInput_Leave);

            this.tbInput.Enter+=new EventHandler(tbInput_Enter);

        }

        //关闭事件

        private void btnClose_Click(object sender, EventArgs e)

        {

            DialogResult result = MessageBox.Show(是否退出? ”退出确认¨?",MessageBoxButtons.YesNo,MessageBoxIcon.Question,MessageBoxDefaultButton.Button2);

            this.Close();

        }

 

        private void tbInput_Enter(object sender, EventArgs e)

        {

            //清除事件

            this.tbInput.Clear();

        }

      

       private void tbInput_TextChanged(object sender, EventArgs e)

        {

            //同步显示文本

            this.labCopy.Text = this.tbInput.Text;

        }

 

        private void tbInput_Leave(object sender, EventArgs e)

        {

            //文本追加

            this.tbHint.AppendText(this.tbInput.Text+Environment.NewLine );

        }

        //tbNode_enter事件

        private void tbNode_Enter(object sender, EventArgs e)

        {

            this.tbNode.Clear();

        }

        //tbCzd_Enter事件

        private void tbCzd_Enter(object sender, EventArgs e)

        {

            this.tbCzd.Clear();

        }

         //开始拉格朗日插值事件

        private void btnStart_Click(object sender, EventArgs e)

        {

            n = Int32.Parse(this.tbNode.Text);

            xx = Double.Parse(this.tbCzd.Text);

            x[i] = Double.Parse(this.tbInput.Text);

            y[i] = Double.Parse(this.tbInput.Text);

            yy = lagrange(x, y, xx, n);

 

        }

         //lagrange函数主体实现

        private double lagrange(double[] x, double[] y, double xx, int n)

        {

            double p;

            double yx = 0;

            for (int k = 0; k < n; ++k)

            {

                p = 1;

                for (int j = 0; j < n; ++j)

                {

                    if (j != k)

                    {

                        p = p * (xx - x[j]) / (x[k] - x[j]);

                    }

                }

                yx = yx + p * y[k];

            }

            return yx;

        }

       

    }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值