本科实验报告
课程名称: 计算机数值方法
实验项目: 方程求根、线性方程组的直接解
法、 线性方程组的迭代解法、代数插值与最
小二乘拟合多项式
实验地点: 行 勉 楼
专业班级: ******** 学号: *********
学生姓名: ********
指导教师: 李 誌 , 崔 冬 华
2016年 4 月 8 日
学生姓名
实验成绩
实验名称
实验一 方程求根
实验内容与要求
熟悉使用二分法、迭代法、牛顿法、割线法等方法对给定的方程进行根的求解。选择上述方法中的两种方法求方程:f(x)=x3+4x2-10=0在[1,2]内的一个实根,且要求满足精度|x*-xn|<0、5×10-5
(1)了解非线性方程求根的常见方法,如二分法、牛顿法、割线法。
(2)加深对方程求根方法的认识,掌握算法。
(3)会进行误差分析,并能对不同方法进行比较。
实验原理
二分法:如果要求已知函数 f(x) = 0 的根 (x 的解),那先要找出一个区间 [a, b],使得f(a)与f(b)异号。根据介值定理,这个区间内一定包含着方程式的根。求该区间的中点m=(a+b)/2,并找出 f(m) 的值。若 f(m) 与 f(a) 正负号相同,则取 [m, b] 为新的区间, 否则取 [a, m]。重复第3步与第4步,直到得到理想的精确度为止。
割线法就是利用牛顿迭代法的思想,在根的某个领域内,函数有直至二阶的连续导数,并且不等于0,则在领域内选取初值x0,x1,迭代均收敛。
(1) 在区间[m ,n]内输入初值x0,x1、
(2) 计算x2。x2=x1-f(x1)*(x1-x0)/(f(x1)-f(x0))
(3) x0=x1,x1=x2(4) 判断就是否达到精度,若就是输出x1,若否 执行(2)
主要仪器设备
HP计算机
实验记录
1、二分法
// 方程求根(二分法)、cpp : 定义控制台应用程序的入口点。
//
#include "stdafx、h"
#include"iostream"
using namespace std;
class Text
{
public:
float x, y, a, b, c, n = 0;
void Getab()
{
cout << "请输入计算区间:(以空格隔开)" << endl;
cin >> a >> b;
}
float GetY(float x)
{
y = x*x*x + 4 * x*x - 10;
return y;
}
float Calculate(float a,float b)
{
c = (a + b) / 2;
n++;
if (GetY(c) == 0 || ((b - a) / 2) < 0、000005)
{
cout << c <<"为方程的解"<< endl;
return 0;
}
if (GetY(a)*GetY(c) < 0)
{
return Calculate(a,c);
}
if (GetY(c)*GetY(b)< 0)
{
return Calculate(c,b);
}
}
};
int main()
{
cout << "方程组为:f(x)=x^3+4x^2-10=0" << endl;
float a, b;
Text text;
text、Getab();
a = text、a;
b = text、b;
text、Calculate(a, b);
return 0;
}
2、割线法:
// 方程求根(割线法)、cpp : 定义控制台应用程序的入口点。
//
#include "stdafx、h"
#include"iostream"
using namespace std;
class A
{
public:
float x0,x1,y;
float GetY(float x)
{
y= x*x*x+4*x*x-10;
return y;
}
void GetNumber()
{
cout<<"请输入两个初始近似值:(以空格隔开)" <
太原理工大学数值计算方法实验报告 来自淘豆网m.daumloan.com转载请标明出处.