当前位置:文档之家› 数值分析实验误差分析

数值分析实验误差分析

比起方案一,方案二更为精确。

六、思考题
思考题:为了防止误差危害现象的产生,以保证计算结果的可靠性,数值运算中应注意哪些原则?试举例说明。

答:数值运算的时候,要注意运算负号的优先级,模糊的时候要加上括号以避免错误。

调用函数的时候,要注意类型的对应。

例如调用pow ( double , double ) 的时候,里面的参数是double 型的。

七、心得体会及实验改进建议
通过这次的实验,更加清楚调用函数的时候该注意一些小问题,例如数据的类型和调用函数。

同时让我更了解分析误差以及如何去缩小误差。

八、实验代码
#include<stdio.h>
#include<math.h>
void main()
{
float a=1,b=-(500000000+1),c=500000000,q;
float x1,x2,x3,x4;
q=b*b-4*a*c;
x1=(-b+sqrt(q))/2;
∑=--=++⋅⋅⋅++=n
i i i n n n n n x l y a x a x a x a x L 00
111)
()(
)
())(()()
())(()()(110110n i i i i i i n i i i x x x x x x x x x x x x x x x x x l -⋅⋅⋅--⋅⋅⋅--⋅⋅⋅--⋅⋅⋅-=
+-+-
3.牛顿(Newton )插值公式
)
())(](,,,[))(](,,[)](,[)()(11010102100100--⋅⋅⋅--⋅⋅⋅+⋅
⋅⋅+--+-+=n n n x x x x x x x x x f x x x x x x x f x x x x f x f x N
四、实验内容步骤
1.给定224951.013sin ,207912.012sin ,190809.011sin =︒=︒=︒,构造Lagrange 插值函数计算'3011sin ︒。

2.已知4个点的函数值如下表,用Newton 插值法求x=0.596时的函数值。

i 0 1 2 3 x i 0.40 0.55 0.65 0.80 y i
0.41075
0.57815
0.69675
0.88811
五、实验结果及分析
1.拉格朗日插值
2.牛顿插值
六、思考题 (无)
七、心得体会及实验改进建议
通过这次实验我对拉格朗日插值和牛顿插值的原理的认识变得更加的深刻,明白了跟多编写此程序时要注意的问题。

]A b ,将其中的.列主元高斯消去法计算步骤将方程组用增广矩阵]()
ij
n B A b a =:消元过程,对1,2,,1n -
选主元,找}1,
,i k n +使得,则矩阵A 奇异,程序结束;否则执行(,则交换第k 行与第k i 行对应元素位置,,1n +。

,n ,计算ik ik l a =,1n +,计算.
则矩阵奇异,程序结束;否则执行(。

;nn 对,2,1i n =-,计算11n ij j i a x =+-∑利用列选主元高斯消去法求解线性方程组
1.183
2.137
3.035
第一组数据为: x0=0.333333 x1=7.33333 x2=2.33333
第二组数据为: x0=0.398234 x1=0.0137951 x2=0.335144
六、思考题
七、心得体会及实验改进建议
本次实验因为对高斯消去法基本思路的认识不够深刻,使我在实验中遇到了非常多的小错误,所以修改程序占用了很多的时间。

经过和同学的讨论,知道实验步骤一的消元过程存在着错误。

八、实验代码
#include<stdio.h>
#include<iostream>
#include <cmath>
using namespace std;
//高斯消去法
void Gauss(float a[3][4]);
void showarray(float a[3][4]);
const int n=3;
void main()
{
int i,j;
int n;//行数
// printf("请输入行数 \n");
// printf("n= ");
// scanf("%d",&n);
float a[3][4]={{2,1,-3,1},{4,1,-2,4},{3,1,-1,6}};
float
b[3][4]={{0.101,2.304,3.555,1.183},{-1.347,3.712,4.623,2.137},{-2.835,1.072,5.643,3 .035}};
Gauss(a);
Gauss(b);
}
void Gauss(float a[n][n+1])
{
int max=0;
int i,j,k;
float b[n+1];//临时
float c[n+1];//。

相关主题