欢迎来到天天文库
浏览记录
ID:50716857
大小:218.50 KB
页数:18页
时间:2020-03-07
《《计算机数值方法C》实验指导书新.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、《计算机数值方法》实验指导书(2017版)太原理工大学计算机科学与技术学院二〇一七年三月目录实验一方程求根2实验二线性方程组的直接解法4实验三线性方程组的迭代解法9实验四代数插值10实验五最小二乘法拟合多项式11实验一方程求根【目的与要求】1.了解方程求根的基本方法、基本原理、误差估计;2.能够按照工程实际要求,选择适当的算法;3.通过编写程序,进行算法设计和数值求解。【实验内容】1.熟悉使用二分法、迭代法、牛顿法、割线法等方程求根的基本方法、基本原理、误差估计的相关理论。2.选择方程求解方法中的两种方法求方程:f(
2、x)=x3+4x2-10=0在[1,2]内的一个实根,且要求满足精度
3、x*-xn
4、<0.5×10-5。【示例程序】增值寻根法又叫做逐步搜索法,是求解方程根的一种方法,也是初步确定方程隔根区间的一种方法。增值寻根法的基本思想是:从初值x0开始,按规定的一个初始步长h来增值:xn+1=xn+hn=0,1,2,3……同时计算f(xn+1)可能遇到三种情形:(1)f(xn+1)=0,此时,xn+1即为方程的根x*;(2)f(xn+1)*f(xn)>0,说明[xn+1,xn]内无根;(3)f(xn+1)*f(xn)<0,说明[
5、xn+1,xn]内有根;搜索过程,可从a开始,也可从b开始,这时应取更小的步长h,直到有根区间的长度
6、xn+1-xn
7、doublefun(doublex){doubley=x*x;returny*x+4*y-10;}voidmain(void){doublex0=-4,x;doubleh=1;doublestep=0;x=x0;wh
8、ile(h>0.000001){cout<<"-------h="<0){x+=h;continue;}elseif(fun(x)*fun(x+h)<0){cout<<"x1="<9、step<10、数据为要求解的线性方程组数据,如下:322334771-245-7其中的3表示三阶线性方程组,下面是三行四列的系数矩阵。编写函数displayA()以显示系数矩阵及其的运算中的变化如下:voiddisplayA(){printf("");for(intj=1;j<=n;j++){for(inti=1;i<=n+1;i++)printf("%lf",a[j][i]);printf("");}}定义全局变量如下:doublea[15][16],a0[15][16];//a和a0用以记录方程组系数,//其中:a为本11、次运算的结果,a0为上次运算的结果doublel[15],tmp;//l用做消元过程使用系数l的计算和存储,tmp为零时变量intn;//n为线性方程组阶数完整的程序如下:#include"stdafx.h"#include"stdio.h"doublea[15][16],a0[15][16];doublel[15],tmp;intn;voiddisplayA(){printf("");for(intj=1;j<=n;j++){for(inti=1;i<=n+1;i++)printf("%lf",a[j][i])12、;printf("");}}voidmain(){FILE*f;inti,j,k;f=fopen("Gaussdata.txt","r");fscanf(f,"%d",&n);for(i=1;i<=n;i++){for(j=1;j<=n+1;j++){fscanf(f,"%lf",&a[i][j]);a0[i][j]=a[i][j];}}d
9、step<10、数据为要求解的线性方程组数据,如下:322334771-245-7其中的3表示三阶线性方程组,下面是三行四列的系数矩阵。编写函数displayA()以显示系数矩阵及其的运算中的变化如下:voiddisplayA(){printf("");for(intj=1;j<=n;j++){for(inti=1;i<=n+1;i++)printf("%lf",a[j][i]);printf("");}}定义全局变量如下:doublea[15][16],a0[15][16];//a和a0用以记录方程组系数,//其中:a为本11、次运算的结果,a0为上次运算的结果doublel[15],tmp;//l用做消元过程使用系数l的计算和存储,tmp为零时变量intn;//n为线性方程组阶数完整的程序如下:#include"stdafx.h"#include"stdio.h"doublea[15][16],a0[15][16];doublel[15],tmp;intn;voiddisplayA(){printf("");for(intj=1;j<=n;j++){for(inti=1;i<=n+1;i++)printf("%lf",a[j][i])12、;printf("");}}voidmain(){FILE*f;inti,j,k;f=fopen("Gaussdata.txt","r");fscanf(f,"%d",&n);for(i=1;i<=n;i++){for(j=1;j<=n+1;j++){fscanf(f,"%lf",&a[i][j]);a0[i][j]=a[i][j];}}d
10、数据为要求解的线性方程组数据,如下:322334771-245-7其中的3表示三阶线性方程组,下面是三行四列的系数矩阵。编写函数displayA()以显示系数矩阵及其的运算中的变化如下:voiddisplayA(){printf("");for(intj=1;j<=n;j++){for(inti=1;i<=n+1;i++)printf("%lf",a[j][i]);printf("");}}定义全局变量如下:doublea[15][16],a0[15][16];//a和a0用以记录方程组系数,//其中:a为本
11、次运算的结果,a0为上次运算的结果doublel[15],tmp;//l用做消元过程使用系数l的计算和存储,tmp为零时变量intn;//n为线性方程组阶数完整的程序如下:#include"stdafx.h"#include"stdio.h"doublea[15][16],a0[15][16];doublel[15],tmp;intn;voiddisplayA(){printf("");for(intj=1;j<=n;j++){for(inti=1;i<=n+1;i++)printf("%lf",a[j][i])
12、;printf("");}}voidmain(){FILE*f;inti,j,k;f=fopen("Gaussdata.txt","r");fscanf(f,"%d",&n);for(i=1;i<=n;i++){for(j=1;j<=n+1;j++){fscanf(f,"%lf",&a[i][j]);a0[i][j]=a[i][j];}}d
此文档下载收益归作者所有