这是我的代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms;namespace exp1 { public partial class solution1 : Form { public solution1() { InitializeComponent(); } public double[] x1 ={1,2,3,4,5,6,7}; public double[] y1 ={0.368,0.135,0.050,0.018,0.007,0.002,0.001}; public int showpic1=0; public int showpic2 = 0; private void button1_Click(object sender, EventArgs e) { double temp; temp = p(0.596); textBox1.Text = temp.ToString(); } public double p(double xx) { double[] x ={ 0.4, 0.55, 0.65, 0.80, 0.95, 1.05 }; double[] y ={ 0.41075, 0.57815, 0.69675, 0.90, 1.00, 1.25382 }; int i, k; double pp = 0, m1, m2; for (i = 0; i <= 5; i++) { m1 = 1; m2 = 1; for (k = 0; k <= 5; k++) if (k != i) { m1 *= xx - x[k]; m2 *= x[i] - x[k]; } pp += y[i] * m1 / m2; } return pp; } public double jc(int k) {
int i,j; double s=0,m; for(i=0;i<=k;i++) { for(m=1,j=0;j<=k;j++) if(j!=i)m*=x1[i]-x1[j]; s+=y1[i]/m; } return s; } public double newton(double X) { double nt = y1[0], m; int i, j; for (i = 1; i <= 6; i++) { for (m = 1, j = 0; j <= i - 1; j++) m *= X - x1[j]; nt += jc(i) * m; } return nt; } private void button2_Click(object sender, EventArgs e) { double temp; temp = p(0.99); textBox1.Text = temp.ToString(); } private void button4_Click(object sender, EventArgs e) { double temp; temp = newton(6.15); textBox2.Text = temp.ToString(); } private void button3_Click(object sender, EventArgs e) { double temp; temp = newton(1.8); textBox2.Text = temp.ToString(); } private void pictureBox1_Paint(object sender, PaintEventArgs e) { if (showpic1 == 1) { float[] x2 = new float[50]; float[] y2 = new float[50]; for (int i = 0; i < 50; i++) { if (i == 0) { x2[i] = 0; y2[i] = (float)p(x2[i]); } else { x2[i] = x2[i - 1] + 0.04f; y2[i] = (float)p(x2[i]); } } pictureBox1.SizeMode = PictureBoxSizeMode.Zoom; CurvePaint cp = new CurvePaint(); cp.XkeduCount = 10; cp.YkeduCount = 10; cp.XvalueStrMoveleft = 15; pictureBox1.Image = cp.drawCurve(x2, y2, "Lagrange多项式", "Xi", "Yi"); } } private void button5_Click(object sender, EventArgs e) { showpic1 = 1; pictureBox1.Invalidate(); pictureBox1.Update(); } private void pictureBox2_Paint(object sender, PaintEventArgs e) { if (showpic2 == 1) { float[] x3 = new float[10]; float[] y3 = new float[10]; for (int i = 0; i < 10; i++) { if (i == 0) { x3[i] = 0; y3[i] = (float)newton(x3[i]); } else { x3[i] = x3[i - 1] + 1.0f; y3[i] = (float)newton(x3[i]); } } pictureBox2.SizeMode = PictureBoxSizeMode.Zoom; CurvePaint cp = new CurvePaint(); cp.XkeduCount = 10; cp.YkeduCount = 10; cp.XvalueStrMoveleft = 15; pictureBox2.Image = cp.drawCurve(x3, y3, "Newton多项式", "Xi", "Yi"); } } /* private void button6_Click(object sender, EventArgs e) { showpic2 = 1; pictureBox2.Invalidate(); pictureBox2.Update(); }*/ private void solution1_Load(object sender, EventArgs e) { } private void button6_Click(object sender, EventArgs e) { showpic2 = 1; pictureBox2.Invalidate(); pictureBox2.Update(); } } }
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;namespace exp1
{
public partial class solution1 : Form
{
public solution1()
{
InitializeComponent();
}
public double[] x1 ={1,2,3,4,5,6,7};
public double[] y1 ={0.368,0.135,0.050,0.018,0.007,0.002,0.001};
public int showpic1=0;
public int showpic2 = 0;
private void button1_Click(object sender, EventArgs e)
{
double temp;
temp = p(0.596);
textBox1.Text = temp.ToString();
}
public double p(double xx)
{
double[] x ={ 0.4, 0.55, 0.65, 0.80, 0.95, 1.05 };
double[] y ={ 0.41075, 0.57815, 0.69675, 0.90, 1.00, 1.25382 };
int i, k;
double pp = 0, m1, m2;
for (i = 0; i <= 5; i++)
{
m1 = 1;
m2 = 1;
for (k = 0; k <= 5; k++)
if (k != i)
{
m1 *= xx - x[k];
m2 *= x[i] - x[k];
}
pp += y[i] * m1 / m2;
}
return pp;
}
public double jc(int k)
{
int i,j;
double s=0,m;
for(i=0;i<=k;i++)
{
for(m=1,j=0;j<=k;j++)
if(j!=i)m*=x1[i]-x1[j];
s+=y1[i]/m;
}
return s;
}
public double newton(double X)
{
double nt = y1[0], m;
int i, j;
for (i = 1; i <= 6; i++)
{
for (m = 1, j = 0; j <= i - 1; j++)
m *= X - x1[j];
nt += jc(i) * m;
}
return nt;
} private void button2_Click(object sender, EventArgs e)
{
double temp;
temp = p(0.99);
textBox1.Text = temp.ToString();
} private void button4_Click(object sender, EventArgs e)
{
double temp;
temp = newton(6.15);
textBox2.Text = temp.ToString();
} private void button3_Click(object sender, EventArgs e)
{
double temp;
temp = newton(1.8);
textBox2.Text = temp.ToString();
} private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
if (showpic1 == 1)
{
float[] x2 = new float[50];
float[] y2 = new float[50]; for (int i = 0; i < 50; i++)
{
if (i == 0)
{
x2[i] = 0;
y2[i] = (float)p(x2[i]);
}
else
{
x2[i] = x2[i - 1] + 0.04f;
y2[i] = (float)p(x2[i]);
}
} pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;
CurvePaint cp = new CurvePaint();
cp.XkeduCount = 10;
cp.YkeduCount = 10;
cp.XvalueStrMoveleft = 15;
pictureBox1.Image = cp.drawCurve(x2, y2, "Lagrange多项式", "Xi", "Yi");
}
} private void button5_Click(object sender, EventArgs e)
{
showpic1 = 1;
pictureBox1.Invalidate();
pictureBox1.Update();
}
private void pictureBox2_Paint(object sender, PaintEventArgs e)
{
if (showpic2 == 1)
{
float[] x3 = new float[10];
float[] y3 = new float[10]; for (int i = 0; i < 10; i++)
{
if (i == 0)
{
x3[i] = 0;
y3[i] = (float)newton(x3[i]);
}
else
{
x3[i] = x3[i - 1] + 1.0f;
y3[i] = (float)newton(x3[i]);
}
} pictureBox2.SizeMode = PictureBoxSizeMode.Zoom;
CurvePaint cp = new CurvePaint();
cp.XkeduCount = 10;
cp.YkeduCount = 10;
cp.XvalueStrMoveleft = 15;
pictureBox2.Image = cp.drawCurve(x3, y3, "Newton多项式", "Xi", "Yi");
}
} /* private void button6_Click(object sender, EventArgs e)
{
showpic2 = 1;
pictureBox2.Invalidate();
pictureBox2.Update();
}*/ private void solution1_Load(object sender, EventArgs e)
{ } private void button6_Click(object sender, EventArgs e)
{
showpic2 = 1;
pictureBox2.Invalidate();
pictureBox2.Update(); }
}
}