import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.awt.geom.*;
public class Interpolation extends Canvas{
/**
* @插值
*/
static int n=7;
static double x[]={-3.0,-2.0,-1.0,0,1.0,2.0,3.0};
static double y[]=new double[n];
Interpolation(){
for(int i=0;i<n;i++)
{
y[i]=Math.sin(x[i]);
}
}
@Override
public void paint(Graphics g) {
Graphics2D g_2d=(Graphics2D)g;
zuobiao(g_2d);
Interpolation.sinx(g_2d,0);
Interpolation.sinx(g_2d,1);
}
public void zuobiao(Graphics2D g_2d){
//画出x轴
Line2D line=new Line2D.Double(50,150,450,150);
g_2d.draw(line);
Line2D line1=new Line2D.Double(250,30,250,280);
g_2d.draw(line1);
//画出箭头
Line2D line2=new Line2D.Double(445,155,455,150);
g_2d.draw(line2);
Line2D line3=new Line2D.Double(445,145,455,150);
g_2d.draw(line3);
Line2D line4=new Line2D.Double(255,35,250,25);
g_2d.draw(line4);
Line2D line5=new Line2D.Double(245,35,250,25);
g_2d.draw(line5);
g_2d.drawString("X", 460, 170);
g_2d.drawString("Y", 230, 30);
g_2d.setColor(Color.blue);
g_2d.drawString("绿线--->sin(x)", 400, 30);
g_2d.setColor(Color.red);
g_2d.drawString("红线--->L(x)", 400, 50);
}
public static void sinx(Graphics2D g_2d,int i){
double y1=150;
if(i==0) g_2d.setColor(Color.blue);
else g_2d.setColor(Color.red);
for(int x=80;x<=420;x++)
{
double y;
if(i==0) y= Math.sin((x-250)/50.0);
else y = L((x-250)/50.0);
y=y1-y*50;
g_2d.drawString(".",x,(int)y);
}
}
public static double L(double x1){
double x2=0.0;
for(int k=0;k<n;k++)
{
x2=x2+l(x1,k)*y[k];
}
return x2;
}
public static double l(double x1,int k){
double x2=1.0,x3=1.0;
for(int j=0;j<n;j++)
{
if(j!=k)
{
x2=x2*(x1-x[j]);
x3=x3*(x[k]-x[j]);
}
}
return x2/x3;
}
public static void main(String[] args) {
JFrame f=new JFrame("三角函数图及近似图");
f.setBounds(100,100,500,350);
f.setVisible(true);
f.addWindowListener(new WindowAdapter(){
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
f.add(new Interpolation(),BorderLayout.CENTER);
f.validate();
}
}
数值计算方法--插值函数(java实现)
5星 · 超过95%的资源 需积分: 50 194 浏览量
2009-12-06
18:13:17
上传
评论 2
收藏 1KB RAR 举报
shilinbin
- 粉丝: 2
- 资源: 32
最新资源
- 安卓11.0以上版本支持 手指单个手指双手指操作
- 电子密码锁使用说明(1).doc
- 上位机开发罗克韦尔abcip通信协议详解
- 基于去中心化联邦学习的货运速度预测时空模型-A decentralized federated learning-based s
- 适合新手的 OpenAI Sora 详细使用教程
- 驱动总裁离线安装包01
- NT98336 SDK 114版本
- torch-1.8.1+cu111-cp38-cp38-linux-x86-64.whl +torchvision
- 智能提取字幕-intel
- 计算机设计 - VB+ACCESS网络计时管理系统设计(源代码+系统),保证可靠运行,毕业生可参考,免费资源下载
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
前往页