数值分析实验报告之二分法求根 java_第1页
数值分析实验报告之二分法求根 java_第2页
数值分析实验报告之二分法求根 java_第3页
数值分析实验报告之二分法求根 java_第4页
数值分析实验报告之二分法求根 java_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数值分析实验报告 实验三 非线性方程求根一、实验目的1掌握二分法、牛顿迭代法等常用的非线性方程迭代算法;2培养编程与上机调试能力。二、实验要求1用C语言设计出二分法和牛顿法的程序,并且选择不同的初值,观察所需的迭代次数和迭代结果。三、实验原理1二分法计算f(x)=0的二分法如下: 输入求根取间a,b和误差控制量,定义函数f(x)。 如果 ,转;否则退出选用其它求根方法 当|a-b|>时,计算中点x=(a+b)/2以及f(x)的值; 分情况处理 :停止计算,转:修正区间 :修正区间 输出近似根四、实验内容1.用二分法求方程在区间1.0,1.5内的一个实根,要求精确到小数点后2位。五、实验结

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.J

3、TextField;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 ActionListenerJFrame frame;private JTextField textField1;private JTextField textField2;private JTe

4、xtField 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

5、() 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()

6、;/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.CENTE

7、R,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 JLab

8、el("y=x3-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,

9、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(21

10、9, 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.setBackgro

11、und(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.setHorizontalAlignm

12、ent(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);tex

13、tField4 = 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

14、);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;

15、 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 acti

16、onPerformed(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.setT

17、ext(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=x3-x-1 float y;

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论