数值
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
实验
报告
软件系统测试报告下载sgs报告如何下载关于路面塌陷情况报告535n,sgs报告怎么下载竣工报告下载
之二分法求根_java
《数值分析》实验报告
实验三 非线性方程求根 一、实验目的
1(掌握二分法、牛顿迭代法等常用的非线性方程迭代算法;
2(培养编程与上机调试能力。
二、实验要求
1(用C语言
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
出二分法和牛顿法的程序,并且选择不同的初值,观察所需的迭代次
数和迭代结果。
三、实验原理
1(二分法
计算f(x)=0的二分法如下:
? 输入求根取间[a,b]和误差控制量ε,定义函数f(x)。
如果 ,转?;否则退出选用其它求根方法 f(a)f(b),0
? 当|a-b|>ε时,计算中点x=(a+b)/2以及f(x)的值;
分情况处理
* :停止计算,,转? x,x|f(x)|,,
:修正区间 f(a)f(x),0[a,x],[a,b]
:修正区间 f(x)f(b),0[x,b],[a,b]
a,b* ?x,2
*? 输出近似根 x
四、实验内容
31.用二分法求方程在区间[1.0,1.5]内的一个实根,要求精确到小数f(x),x,x,1,0
点后2位。
五、实验结果
输入零点所在区间时:
输入错误的区间时:
二分法程序代码:
import java.awt.Container; import java.awt.Dimension; import java.awt.EventQueue; import java.awt.GridLayout; import java.awt.Toolkit;
import javax.swing.JFrame; import javax.swing.JPanel;
import java.awt.Color;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JTextField; import javax.swing.JButton; import javax.swing.SwingConstants;
import java.awt.FlowLayout; import java.awt.event.ActionListener; import java.awt.event.ActionEvent; public class Erfenfaa implements ActionListener{
JFrame frame;
private JTextField textField1;
private JTextField textField2;
private JTextField textField3;
private JTextField textField4;
JPanel panel_1 ,panel_2 ,panel_22,panel_3 ,panel_4 ;
JLabel label1,label2,labelaa,labelbb,label_2,label_3;
JButton submit,cancel;
/**
* Launch the application.
*/
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
new Erfenfaa();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
/**
* Create the frame.
*/
public Erfenfaa() {
frame = new JFrame("二分法解方程");
frame.setSize(380,480);
frame.setVisible(true);
frame.setContentPane(createcontentPane());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
centerFrame();
// frame.setBounds(100, 100, 396, 300);
frame.setResizable(false);
}
public Container createcontentPane(){
Container contentPane=frame.getContentPane();
contentPane.setLayout(new GridLayout(5,1,5,0));//由上至下 4行1列
panel_1 = new JPanel();//面板panel_1放置label1和label2
panel_1.setLayout(new FlowLayout(FlowLayout.CENTER,5,35));
panel_1.setBackground(Color.WHITE);
label1 = new JLabel("二分法解方程");
label1.setFont(new Font("宋体", Font.BOLD, 18));
panel_22= new JPanel();//面板panel_1放置label1和label2
panel_22.setLayout(new FlowLayout(FlowLayout.CENTER,5,35));
panel_22.setBackground(Color.WHITE);
label2 = new JLabel("y=x^3-x-1");
label2.setBounds(180, 41, 101, 24);
panel_2 = new JPanel();//面板jpanel_2放置a,b,控制误差量
panel_2.setBackground(Color.WHITE);
panel_2.setLayout(null);
labelaa= new JLabel("请输入区间[a,b]中的a:");
labelaa.setFont(new Font("宋体", Font.BOLD, 12));
labelaa.setBounds(80, 10, 172, 15);
textField1 = new JTextField(10);//textField1输入a的值
textField1.setBounds(219, 7, 42, 21);
labelbb = new JLabel("请输入区间[a,b]中的b:");
labelbb.setFont(new Font("宋体", Font.BOLD, 12));
labelbb.setBounds(80, 38, 172, 15);
textField2 = new JTextField(10);//textField2输入b的值
textField2.setBounds(219, 35, 42, 21);
label_2 = new JLabel("请输入控制误差量:");
label_2.setFont(new Font("宋体", Font.BOLD, 12));
label_2.setBounds(80, 63, 117, 15);
textField3 = new JTextField(10);
//textField3输入控制误差量
textField3.setBounds(191, 60, 66, 21);
panel_3 = new JPanel();//面板panel_3放置确定和取消按钮
panel_3.setBackground(Color.WHITE);
panel_3.setLayout(new FlowLayout(FlowLayout.CENTER,20,30));
submit = new JButton("确定");//确定按钮
submit.addActionListener(this);
submit.setHorizontalAlignment(SwingConstants.CENTER);
cancel = new JButton("取消");//取消按钮
cancel.addActionListener(this);
cancel.setHorizontalAlignment(SwingConstants.CENTER);
panel_4 = new JPanel();//面板panel_4放置“方程解”标签和输出解文本块
panel_4.setBackground(Color.WHITE);
panel_4.setLayout(new FlowLayout(FlowLayout.CENTER,5,30));
label_3 = new JLabel("方程解为:");
label_3.setFont(new Font("宋体", Font.BOLD, 12));
label_3.setBounds(24, 8, 65, 15);
textField4 = new JTextField();//输出解或区间范围不对
textField4.setBounds(99, 5, 97, 15);
textField4.setColumns(25);
panel_1.add(label1);
panel_22.add(label2);
panel_2.add(labelaa);
panel_2.add(textField1);
panel_2.add(labelbb);
panel_2.add(textField2);
panel_2.add(label_2);//控制误差量
panel_2.add(textField3);
panel_3.add(submit);
panel_3.add(cancel);
panel_4.add(label_3);
panel_4.add(textField4);
contentPane.add(panel_1);
contentPane.add(panel_22);
contentPane.add(panel_2);
contentPane.add(panel_3);
contentPane.add(panel_4);
return contentPane;
}
public void centerFrame(){//窗口居中
int x,y,screenWidth,screenHeight,frameWidth,frameHeight;
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
screenWidth=screenSize.width;//取得屏幕宽度和高度
screenHeight=screenSize.height;
frameWidth=frame.getWidth();
frameHeight=frame.getHeight();
x=(screenWidth-frameWidth)/2;
y=(screenHeight-frameHeight)/2;
frame.setLocation(x,y);
}
public void actionPerformed(ActionEvent e) {//事件触发
JButton button=(JButton)e.getSource();
float a,b,p,w;
if(button==submit){
String o=textField1.getText();
String l=textField2.getText();
String m=textField3.getText();
a= Float.parseFloat(o);
b= Float.parseFloat(l);
p= Float.parseFloat(m);
w=b-a;
if(z(a,b)==true){
textField4.setText(String.valueOf(fun(w,b,a,p)));//浮点型强制转换为字符型
}
if(z(a,b)==false){
textField4.setText(String.valueOf("方程值不在所输入的区间内,请选择其他方
法"));
}
}
if(button==cancel){
textField1.setText("");
textField2.setText("");
textField3.setText("");
}
}
public static boolean z(float a,float b){//判断区间是否包括零点
float a11=y(a);
float a21=y(b);
if((a11*a21)<0){
return true;
}
else
return false;
}
public static float y(float x){//设置y的函数,y=x^3-x-1
float y;
y=x*x*x-x-1;
return y;
}
public static float fun(float w,float b,float a,float p){//二分法方程
float X=0,x;
while(Math.abs(w)>p){
w=b-a;
x=(a+b)/2;
if(Math.abs(y(x))
本文档为【数值分析实验报告之二分法求根_java】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。