问题本身就不在阐述了, 是非常基本的问题,可供参考的资料有许多
下面是主要的代码实现和窗体视图
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;
}
}
}