📄 三次自然样条.txt
字号:
import java.util.*;
import java.awt.*;
import javax.swing.*;
public class chazhi
{
public static void main(String args[])
{
new CH().init();
}
}
class CH extends JFrame
{
public void init()
{
Container con=getContentPane();
con.add(new MyPanel());
setSize(1000,400);
setVisible(true);
validate();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class MyPanel extends JPanel implements Runnable
{
double x[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
double y[]={0,1,4,9,16,25,36,49,64,81,100,121,144,169,196,225,256,289,324,361,400};
double a[]=new double[20];
double x1,y1;
int n=20;
double t,m;
double nx=0,ny=0;
double cx=0,cy=0;
public MyPanel()
{
new Thread(this).start();
}
public void run()
{
double h[] = new double[20];
double ai[] = new double[20];
double c[] = new double[20];
double d[] = new double[20];
double b[] = new double[20];
double sd = 0;
double sdd[] = new double[20];
for(int k = 0; k < 19; k++)
{
h[k] = x[k + 1] - x[k];
}
ai[1] = 2 * (h[0] + h[1]);
for(int k = 2; k < 19; k++)
{
a[k] = 2 * (h[k - 1] + h[k]) - h[k] * h[k] /a[k - 1];
}
for(int k = 1; k < 20; k++)
{
c[k] = (y[k] - y[k - 1])/h[k - 1];
}
for(int k = 1; k < 19; k++)
{
d[k] = 6 * (c[k + 1] - c[k]);
}
b[1] = d[1];
for(int k = 2; k < 19; k++)
{
b[k] = d[k] - b[k - 1] * h[k - 1] / a[k - 1];
}
sdd[0] = 0;
sdd[19] = 0;
for(int k = 0; k < 19; k++)
{
for(cx = x[k]; cx <= x[k + 1]; cx += 0.01)
{
sd = c[k + 1] - sdd[k + 1] * h[k] / 6 - sdd[k] * h[k] / 3;
cy = y[k] + sd * (cx - x[k]) + sdd[k] * (cx - x[k]) * (cx - x[k]) / 2 + (sdd[k + 1] - sdd[k]) * (cx - x[k]) * (cx - x[k]) * (cx - x[k]) / (6 * h[k]);
m=cy;
repaint();
try
{
Thread.sleep(1);
}
catch(InterruptedException Ie3){}
}
}
}
public void paintComponent(Graphics g)
{
g.setColor(Color.red);
g.drawLine(100,0,100,400);
g.drawLine(0,200,200,200);
g.setColor(Color.green);
for (int i=0;i<n;i++)
{
g.fillOval((int)(x[i]*5+100),(int)((-y[i]+200)),3,3);
}
g.setColor(Color.black);
g.fillOval((int)(cx*5+100),(int)(-m+200),2,2);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -