文档介绍:数值分析实验报告
数值分析实验报告
数值分析实验报告
学生学号
实验课成绩
学 生 实 验 报 告 书
实验课程名称
数值分析
开 课 学 院
计算机科学与技术学院
指导教师姓名
熊盛)/(s(x1)-s(x0));
x0=x1;
x1=x2;
x=(x1+x2)/2;
输出近似根x迭代次数i
结束
fabs(x1-x0)>e
否
是
是
否
二分法程序源代码:
#include<iostream>
数值分析实验报告
数值分析实验报告
数值分析实验报告
#include<cmath〉
#define f(x) (x*x*x—x-1)
using namespace std;
int main()
{
int i;
float x,t,a,b,e;
ﻩcout<<"请输入求根区间a,b"<<"控制变量e"<〈endl;
cin>>a〉>b>>e; i=0;
ﻩwhile ((b—a)>e)
{
ﻩﻩi++;
x=(a+b)/2;
ﻩﻩ if (f(a)*f(x)<0) b=x;
ﻩ if (f(a)*f(x)>0) a=x;
}
ﻩ t=(a+b)/2;
ﻩﻩcout〈<"在求根区间a,b间近似根t="〈〈t<<endl;
ﻩﻩcout<<"所需二分法次数i="<<i〈<endl;
ﻩ return 0;
}
调试过程,实验结果及分析:
计算 x*x*x—x—1=0 在[1,2]内的近似根。
,程序运行如下图:
当精度达到0.001时,程序运行如下图:
调试过程中如果把while ((b—a)>e)改为while ((b—a)<e),算然会出现程序运行之后的界面,但是输出的近似根是1.5,迭代次数i=0,也就是说程序的循环体没有执行,这是因为求根呢区间远远大于精度。从而跳过循环体直接输出前面输入的数据.
数值分析实验报告
数值分析实验报告
数值分析实验报告
由运行结果看出:
,二分法次数为10.
精度达到0。000001时,二分法次数为20。
精度要求越高,二分法次数越多。
二分法缺点:逼近速度较慢.
二分法对有根区间逐步逼近得到更精确的近似根,二分法不采用等步长扫描,而是在有根区间[a,b]中,取中点,然后计算中点值,判断中点对应函数值和端点函数值乘积的正负来确定新的端点,当有根区间长度小于精确度时得到近似根.
如果没有区间长度和精度大小的判断,程序是一个死程序,得不到近似根。
简单迭代法程序源代码:
#include〈iostream〉
#include〈cmath〉
double s(double t)
{
return (t+1);
}
using namespace std;
int main()
{
ﻩint i;
ﻩdouble x,x0,x1,e;
cout<<”请输入迭代初始值x0"〈〈",和控制精度e”〈<endl;
cin>〉x0〉〉e;
i=0;
while (fabs(x1-x0)>e)
{
i++;
x1=pow(s(x0),1。0/3。0);
x0=x1;
x1=pow(s(x0),1。0/3。0);
}
数值分析实验报告
数值分析实验报告
数值分析实验报告
x=(x1+x0)/2;
cout〈<”近似根x=”〈<x<<endl;
ﻩﻩcout〈<"所需迭代次数i=”〈〈i〈〈endl;
return 0;
}
调试过程,实验结果及分析:
计算 x*x*x—x-1=0 在[1,2]内的近似根。
精度达到0。00001时,程序运行如下图:
当精度达到0。000001时,程序运行如下图:
当循环体程序代码如下:
x1=pow(s(x0),1/3);
x0=x1;
x1=pow(s(x0),1/3);
时会出现程序运行结果的界面,但是输出的近似根是1,迭代次数是1,这是因为x1=pow(s(x0),1/3)与三次求根函数式的数据类型不符。导致 x1=pow(s(x0),1/3)不再是三次求根的函数式
由运行结果看出:
精度达到0.00001时,简单迭代法迭代次数为6
精度达到0。000001时,简单迭代法迭代次数为8。
精度要求越高,简单迭代法迭代次数越多。
数值分析实验报告
数值分析实验报告
数值分析实验报告
简单迭代法归结于找直线和曲线的交点的横坐标,其中迭代法的效果并不是总能令人满意的。例如:该程序中简单迭代法