手机版

数值分析实验报告

时间:2025-04-22   来源:未知    
字号:

武汉理工大学数值分析实验报告

武汉理工大学数值分析实验报告

————软件工程试点班, 桂江亨

实验一:用牛顿法求解函数的根

1. 实验分析与设计

用计算机编程实现牛顿迭代法求解函数的根。

2. 实验基本原理与设计

牛顿迭代法公式:

{ 0=C(C为固定的 值) +1= – ( ) '( )牛顿迭代法是收敛的,而且收敛比较快。

由上面的公式可知,只要给出的精度e,就可以作为递归终止的条件。

3. 主要仪器及耗材

Visual Studio 2010,电脑一台。

4. 调试过程(包括调试方法描述、实验数据记录,实验现象记录,实验过程发现的问题等) 由于采用递归方法,程序显得清晰简洁。起初我输入X的值为1.0,结果输出一个无效的值,后来才发现原来函数在1.0处的导数刚好等于零。之后分别输入了几组不同的初始值X和控制精度e,结果分别如下:

X = 1.1, e = 0.0001, result = 1.53209

X = 1.2, e = 0.0001, result = 1.53209

X = 1.3, e = 0.0001, result = 1.53209

X = 1.532, e = 0.0001, result = 1.53209

X = 1.1 e = 0.000001, result = 1.53209

X = 1.2 e = 0.000001, result = 1.53209

X = 1.2 e = 0.000001, result = 1.53209

下面是源代码: #include<iostream>

using namespace std;

double fn( double x )

{ return x * x * x - 3 * x + 1; }

double derivedFn( double x )

{ return 3 * x * x - 3; }

double recursionFn( double x )

{ return x - fn( x ) / derivedFn( x ); }

int main()

{

double x, x1, e;

武汉理工大学数值分析实验报告

} cout<<"请输入初始值:x,控制精度:e"<<endl; cin>>x>>e; x1 = recursionFn( x ); while( fabs( x - x1 ) > e ) { x = x1; x1 = recursionFn( x ); } cout<<"方程的近似解为"<<x1<<endl; getchar(); getchar(); return 0;

5. 实验结果及分析

本次试验比较简单,编码的时候并没有产生错误。牛顿法求解函数的根确实具有很好的收敛性,在几组不同的初值和控制精度下都得到了比较精确的计算结果。

6. 实验小结、建议及体会

本次试验用计算机编程实现了牛顿法求解函数的根,得到了比较好的结果。

实验二:二分法求函数的近似根

1. 实验内容描述(问题描述)

通过计算机编程实现二分法求解函数的根,加深对二分法的理解。

2. 实验基本原理与设计

给定一个区间[a, b],在该区间内函数存在唯一一个根,通过取[a, b]的中点,来不断缩小根的求解范围,直到到达合理的精度。

要通过二分将连续的区间分成很小的片段需要多次分割,因此二分法求解收敛较慢,一般用于求根的粗略解(范围)。

3. 主要仪器及耗材

Visual Studio 2010,电脑一台。

4. 调试过程

二分法的思维比较简单,编程过程中还是犯了一个比较小的错误。终止条件没有选好,忘记取绝对值,导致程序一直运行没有终止。

下面是源代码:

#include<iostream>

using namespace std;

double fn( double x )

{ return x * x * x - 3 * x + 1; }

int main()

{

double a, b, e, x, t;

武汉理工大学数值分析实验报告

cout<<"请输入求根区间[a, b],控制精度e"<<endl;

cin>>a>>b>>e;

x = ( a + b ) / 2;

t = fn( x );

while( fabs( t ) > e )

{

if( t > 0 )

b = x;

else

a = x;

x = ( a + b ) / 2;

t = fn( x );

}

cout<<"牛顿迭代法求得的近似解为:"<<x<<endl;

getchar(); getchar();

return 0;

}

5. 实验结果及分析

通过输入一组数据来检验该算法的正确性,下面是输入的数据:

1.0 2.0 0.0001 1.5321

二分法能够很好的求得函数的近似解,而且思路简单,便于实现,但收敛速度慢(这一点可以从上一个实验的结果看出,牛顿迭代法比二分法得到的解的精度更高)。

实验三:自适应积分

1. 实验内容描述(问题域描述)

在很多情况下需要对某个函数求积分,但其原函数过于复杂很难甚至根本无法直接求得,则只能通过计算机来分段近似积分了。

这次试验将通过计算机编程来实现自适应积分球函数的积分。

2. 实验原理与设计(包括实验方案设计,实验手段的确定,实验步骤等,用硬件逻辑或算法描述)

自适应积分是通过将一个区间等分成两段,分别用三次的辛普森公式近似求得积分。如果某一段积分误差足够小则停止积分,否则的话,将该段区间等分成两段再次积分,直到误差满足精度为止。

在这个递归的过程中,误差是很重要的量。有时候函数在某一区间很平稳而在另一区间变化幅度很大。变化平稳的区间只要几次分段积分就可以满足精度要求,而变化幅度很大的区间需要逐次分段积分知道满足精度要求。

3. 主要耗材及仪器

Visual Studio 2010, 电脑一台

4. 调试过程

本次试验编码过程中并没有遇到什么困单,调试时也没有发现什么问题,一次性成功。

武汉理工大学数值分析实验报告…… 此处隐藏:3468字,全部文档内容请下载后查看。喜欢就下载吧 ……

数值分析实验报告.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
    ×
    二维码
    × 游客快捷下载通道(下载后可以自由复制和排版)
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    VIP包月下载
    特价:29 元/月 原价:99元
    低至 0.3 元/份 每月下载150
    全站内容免费自由复制
    注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
    × 常见问题(客服时间:周一到周五 9:30-18:00)