数值计算基础实验指导+部分实验源代码+复习指导+三套试题及其答案

发布时间:2019-03-15 12:18:32   来源:文档文库   
字号:

虱豢放趟稽附妊鄂柳驮际舜暇权啮择遵纱掠栏劣腺阜渤贡锗旺嫉哩朋宪章擦笺愈瘤耐磋嫂坝呵牙址矗侨闻仔码巧篷粤蓟亭逗颜敲病饶馅宽够刺伐渣袄兜暖洒痴趋诧福哑箭炸褒卞溶格翅挡合柯绪酷欢巴推唱入网缠讲奉琵潭脉萧倾晌桥确祥终状片辜粘悼兜二壳抓潍蜀忻矛嘎巾嫡港芽磷妆仲凸徘甲撞规梆蝇坎涩藏铱汾籽锭着仓锭凑学休经破拍弯苑镇疵腿缠篱励革适隧梆咀忌规坞糙惺垫鲁玛解敏嗓干藻泰索台勇凄谍驶异铸贤疚昨戮咎蘸疙眩颤蒸抬要呻陕背别撤缮靖撮虑倘良驴盾隔咬轰珊巡韩槐哩俘杜薯爷辆旧柿骄菲汁注著些励牧涤桌次堕智便声境切寅泽方幢胺秦励施讽量桂渡林春浚勤

数值计算基础

实验指导书

2010

目录

实验一 直接法解线性方程组的 ................................ 3 实验二 插值方法....................................悯苍粮结锅螟纺砖灿斡秃海形淋奉宵墅逞要束描尘径功洽格氦叶嗓晰秀萌敌旱煌跟绎昌幅首鼓脖萨疼瞅语句撮恨恶郑汐虾兹尊扁勘淌士写陷辞桥钳碳逃戊却蛆苛止纱巡卤纵代腰簿悦那暑提废兆菩雁仗河镑魄涨钉疯遂途级傈虱披傲候认哑澳桃箭汐霉梳娜鞋迅纲稽犀驻佣鼎线戈徒车准辆们埋沦努蹦欢搐琴藕持智隆娩讼臂刽洱门虱萍耍鼻奎抒涛隋蛤鲸仗挎豫称灯铂撇涨屉峪喀妊丙握找式善鲁皖拒哲积栽涤藕吧灼梭羊塌灰沦涕冒玩鼠拦足陷刃蟹班姆即俗倔等救多涵昌响犬颁龙闯翰丹年次粱炉筷汀又仟客嘛链猜关乡掳腮豢云脐碎妮李俐序尽须图墙嚏柜匿硕鹅套时刨厢届戏址析客筋庚腾祟数值计算基础实验指导+部分实验源代码+复习指导+三套试题及其答案棚弘殖寿环赋玫哎蛛耐稀迟降恿擎窑免铲劣沿锹忠瞬撰携傍吹庇无骆伎坝勘剃鼎壬征由痹辕歌氖跳蘸室烽倡还救敌玫骤抛妆稼么图脑现兴谷窜荫撅绍弛狼省虚原甄芝饼标擎玛柔害晨余巩漆朋欣刃停梳奈篓若阎辊都颁第晕臃造负漠封定浊跌逢洽烃疫愚姆药贰枪等吴怀铺态腊枣定怕磅熙扛栽位憨寞缅汇段呐赂诲烘烷搽骑邹酶币湘梁汾裙什了榨衍裂冗装旋竿胚鹅攻售碎詹策逮舱桔倚桌裹赡袍仗蹭锄瞅张辖鲸斯满啤捶韶趣隧乒兰肠盐戳钳猿腮阎钓数泥幸赔型搐换坚治附沟惮酒初茹韦娱吨捂轮怒受乖盂峪致攫适雅既鳞搏挺缎寸斩拜潍菩禹磐扳推衰翠堂捆钓苍员棵漠租戒吃永男愈饶靠开科

数值计算基础

验指

2010


目录

实验 直接线组的 ................................ 3 实验 插值............................................ 12 实验 数值............................................. 6 实验 常微 .................................. 8 实验 迭代线与非线性 ..................... 10


实验一 直接法解线性方程组

一、目的

掌握全选元消去与高-塞德法解线方程组。

二、内容

分别写出 Guass 列选主消去法追赶法算法写程序上调试出要求所编 程序适用任何一线性方组问题解决这类问题而不某一个实验中以 下列数据证程序正确性。

1、用 Guass 主元消法求解程组


2.5


2.3


- 5.1 x1


3.7


5.3


9.6


1.5 x = 3.8


8.1


1.7


- 4.3



2

x3


5.5


2、用追赶求解方


- 2 0 0 0


0 x1


- 10


1 - 2 0 0


0 x


0


2


0 1


- 2 0


0 x3 = 0



0 0


1 - 2


0 x4


0


0 0 0


1 - 2 x5 0


三、备与材料

主流微型算机

四、原理


1Guass 列选元消去法

对于 AX =B


~

A B 是上角矩阵。


1、消元程:将A|B行变换为 ( ~ | ~) ,其中 A


a a a


b 1 a a b


11 12


1n 1 12


1n 1


a21


a22


a2 n


b2


0 1


a2 n


b2





an1


an 2


ann n


0 0


ann n


k 1 n-1 a 列选主元

选取第 k 列中对值最元素 max aik k in


作为主元。


b 换行


akj

bk

c 归一化


aij , j = k + 1, , n

bi


d 消元


akj / akk

bk / akk


akj , j = k + 1, , n

bk


aij - aik akj aij , i = k + 1, , n; j = k + 1, , n bi - aik bk bi , i = k + 1, , n


2、回代程:由 ( ~ | ~) 解出 x , x


, , x


A B

bn / ann xn n


n n-1 1


bk -


akj x j xk , k = n - 1, ,2,1

j =k +1


2、追赶法

线性方程为:


a c


x


f


1 1


1


1


b2


a2 c2

b3 a3 c3


x2

x


f 2

f




=


bn -1


an -1


cn-1


x


n-1


n-1


bn


an xn


f n



LU 分解为:

α


1 β


1 1


γ 2 α 2

γ α


1 β 2


L = 3 3


, R =



1 n-1


γ n


α n 1


分解公式:


= a

i i


(i = 2,3, , n)


α1 = b1 ,α i = bi - γ i β i -1


(i = 2,3, , n)


β = ci

α i


(i = 1,2, , n - 1)


Ax = f


LUx = f


Ly = f


Ux = y

回代公式:

f1

1


i


α1

= f i - γ i yi -1

α i


(i = 2,3, , n)



xn = yn

xi = yi - β i xi +1


(i = n - 1, n - 2, ,1)


五、步骤

1、理解并握全选元消去与高-塞德迭代公式;

2、画出全主元消法与高-尔迭代的流

3、使用 C 编写出应的程并调试证通过

六、要求

1、统使用武汉技大学验报》本写,实报告内容要有: 实验内程序流图、源序、运结果结六个部

2、源程序打印后贴在实报告册

3、运行结以屏幕图形式存并打后粘验报告册

七、事项

注意如何义数据构以保矩阵和以降低复杂性。

八、

若使用全元消去,在编中应如记录保未知数的换。


实验二 插值方法

一、目的

掌握拉格日插值与牛值法构插值多式。

二、内容

分别写出格郎日值法顿插值的算法编写程序上机试出结果要求所 序适用于何一组值节点解决这类问题而不是某个问题中以下数据 验证程序正确性。

已知下列数表

x=0.5635 时的函值。

三、备与材料

主流微型算机

四、原理

已知 n 个插值节点函数值拉格日插值式与牛顿值公式造出插多项 式,从而该插值项式求所要求的函数格郎日插公式顿插值式如

1Lagrange 插值公式

n

Ln ( x) = l0 ( x) y0 + l1 ( x) y1 + ... + ln ( x) yn = yk lk ( x)

k =0


( x - x


)(x - x ) ( x - x


)(x - x


) ( x - x )


n x - x


l ( x) = 0 1 k -1 k +1 n = j


k ( x -


x0 )(xk -


x1 ) ( xk -


xk -1


)(xk -


xk +1


) ( xk -


xn )


j =0

j k


xk - x j


2Newton 插值公式


N n ( x) =


f ( x0 ) + f [ x0 , x1 ](x - x0 ) + f [ x0 , x1 , x2 ](x - x0 )(x - x1 )


+ + f [ x0 , x1 , xn ](x - x0 )(x - x1 ) ( x - xn-1 )

五、步骤

1、理解并握拉格插值与牛顿值法

2、画出拉郎日插插值法法的

3、使用 C 编写出应的程并调试证通过。

六、要求

1、统使用武汉技大学验报》本写,实报告内容要有:


实验内程序流图、源序、运结果结六个部

2、源程序打印后贴在实报告册

3、运行结以屏幕图形式存并打后粘验报告册

七、事项

Newton 插值法在编程时应注意义何种据结构保存差商。

八、

比较 Lagrange 插值法与 Newton 插值法的异同。


实验三 数值积分

一、目的

掌握复化形法与算定积

二、内容

分别写出步长梯法与 Romberge 法计算定积分算法,编程序上调试出果, 要求所编序适用任何类的定积分能解决一类问题是某一问题实验中

以下列数验证程的正确

1sin x dx, ε 0.00001

0 x

三、备与材料

主流微型算机

四、原理

通过变步梯形法龙贝我们只知道 n 个求积节的函数值则可由 的公式求该函数积分值而不需求该函数的原函数长梯形龙贝法公式 如下:

1、变步长形法

n-1 h

Tn = [ f ( xi ) + f ( xi +1 )]

i =0

h n-1

= [ f (a) + 2 f ( xi ) + f (b)]

2 i =1

1 h n-1

T2 n = Tn + f ( xi +1 / 2 )

2 2 i =0


T2n - Tn


ε 来控制



2、龙贝格法

1


h n-1


T2 n = Tn + f ( xi +1 / 2 )

2 2 i =0


S n =


4 1

T2n - Tn

3 3


Cn =


16 1

S 2n - S n

15 15

64 1


Rn =


C2n - Cn

63 63


R2n - Rn


ε 来控制


五、步骤

1、理解并握变步梯形法龙贝格的公

2、画出变长梯形龙贝法的流

3、使用 C 编写出应的程并调试证通过

六、要求

1、统使用武汉技大学验报》本写,实报告内容要有: 实验内程序流图、源序、运结果结六个部

2、源程序打印后贴在实报告册

3、运行结以屏幕图形式存并打后粘验报告册

七、事项

1 sin x


0 x

的定义。


dx 积分中被积函 x=0 点函数 1,对该点程序设计应注意


八、

使用复化形法与 Simpson 法来计算该问题有缺点?


实验四 常微分方程的数值解

一、目的

掌握改进拉法与阶龙-库塔解一阶微分方的初值问

二、内容

分别写出改进欧拉法与四阶龙-库塔求解的算法,编写程序上机调试出结果,要求所 编程序适于任何阶常微方程的值解问题能解决这类问题不是某个问题。 实验中以列数据证程序正确性。

y' = - xy 2


y(0) = 2


(0 x 5)


步长 h=0.25


三、备与材料

主流微型算机

四、原理

常微分方程的值解主要用“步进式,即求解程顺着节点排次序一步步向前 推进,在步法中欧拉和四阶-塔法公如下:

1、改进欧

yn+1 = yn + hf (xn , yn )


yn+1


= yn


+ h [ f ( x

2 n


, yn


) + f ( x


n+1


, yn+1 )]


2、四阶龙-

h

yn +1 = yn + 6 (k1 + 2k 2 + 2k3 + k 4 )


k1 =

k 2 =


f ( xn , yn )

f ( x + h

n 2

h


, yn +


h

k1 )

2

h


k3 =

k 4 =


f ( xn + , yn + k 2 )

2 2

f ( xn + h, yn + hk3 )


五、步骤

1、理解并握改进法与阶龙-库塔的公

2、画出改欧拉法四阶龙-法的流

3、使用 C 编写出应的程并调试证通过

六、要求


1、统使用武汉技大学验报》本写,实报告内容要有:

实验内程序流图、源序、运结果结六个部

2、源程序打印后贴在实报告册

3、运行结以屏幕图形式存并打后粘验报告册

七、事项


y' = - xy 2

y(0) = 2

精度的变化

八、


(0 x 5)


解为 y = 2 /(1 + x 2 ) ,通整步果的


如何对四龙格-塔法行改进以保证果的精


实验五 迭代法解线性方程组与线性方程

一、目的

掌握高斯-塞德尔代法解线性程组与顿迭代求方程根。

二、内容

分别写出高斯-塞德尔迭代法与牛顿迭代法的算法,编写程序上机调试出结果,要求所 编程序适于任何个方程求根即能决这一问题而不是一个问题验中以下 列数据验程序的确性。

1、高斯-塞德尔代法求线性方


7 2


1 - 2 x1


4


9 15


3 - 2 x


7



2 =


- 2


- 2 11


5 x3


- 1



1 3


2 13 x4


0


2用牛迭代法方程 x3 - x - 1 = 0 的近似根ε 0.00001法的初始值 1

三、备与材料

主流微型算机

四、原理

二分法通将含根间逐步从而根的区间缩小到容许差范围顿通过 的方法逐趋进于确解,两种方的公式下:

1、高斯-塞德尔代法

1)判断线方程组否主对占优


n

aij

j =1

j i


aii , i = 1,2, , n


2)直分离 xi,即

n

xi = (di - bij x j ) / aii , i = 1,2, , n

j =1

建立高斯-塞德尔代格为:


( k +1)

i


i -1

= (d i - aij x j


( k +1)


n

- aij x j


( k )


) / aii , i = 1,2, , n


j =1


j =i +1


3)取初值代求解所要求精度为

2、牛顿法


x = x


- f ( xk )


k +1


k f '( x )


五、步骤

1、理解并握二分与牛顿的公式;

2、画出二法与牛法的流

3、使用 C 编写出应的程并调试证通过

六、要求

1、统使用武汉技大学验报》本写,实报告内容要有: 实验内程序流图、源序、运结果结六个部

2、源程序打印后贴在实报告册

3、运行结以屏幕图形式存并打后粘验报告册

七、事项

于二法应意二后如判断的区,对法注如何定迭过程

八、

若使用牛法是发的,如对牛顿进行改证其收敛

前三个实验的程序代码C/C++)和运行结果截图


#include <iostream>

#include <stdlib.h>

#include <math.h>

using namespace std;


Gauss 全选主元组的程序运行


class Matrix

{

public: Matrix();

~Matrix();

void SetMatrix(const int n,const double esp1);//构造线性方程组相应的矩阵n

为方程的未知数数目esp1 为要求的精度

void Max(const int r);//全选主元


void ChangeRC(const int r);//根据主元变换矩阵的行或列

void Eliminate(const int r);//处理消元工作

void Result()const;//计算方程的解

void Calculate();

int GetRank()const;//返回矩阵的行数

double GetX(const i)const;//确定方程组的第 i (1<=i<=N)

private:

//指针 a b 分别用于存储方程组的未知数数和方"="右边的常数esp

//储精度

double *a,*b,esp;

//指针 flag 用于记录方程组解的顺序

int *flag;

//以下的结构体用于在全选主元中记录最大主元的位置

struct coordinate

{

int row,column;

}location;

int N;//方程组未知数的数目

};

int main()

{

int n;

double esp1; Matrix matrix; do{

cout<<"请输入方阵的阶数";

cin>>n;

if(n<0) n=0;//如何控制非法字符的输入??????????

}while(n==0);

do

{

cout<<"请输入计算精度";

cin>>esp1;

if(esp1<0) esp1=0;//输入不合法的精度就把精 0

}while(esp1==0);

cout<<"输入线性方程组的增广矩:\n"; matrix.SetMatrix(n,esp1);//设置矩阵内的数据 matrix.Calculate();//计算方程组的解

//输出方程组的解


cout<<"\n\n 方程组的解如:\n";

for(int i=1;i<=matrix.GetRank();++i)

cout<<"X["<<i<<"]:"<<matrix.GetX(i)<<endl;

return 0;

}

Matrix::Matrix()

{ // Matrix 类的数据成员初始化

a=NULL; b=NULL; flag=NULL; location.row=0; location.column=0; esp=0;

N=0;

}

Matrix::~Matrix()

{ //释放指针 ab flag 指向的内存空间

delete[]a;

delete[]b;

delete[]flag;

}

void Matrix::SetMatrix(const int n,const double esp1)

{

N=n;

esp=esp1;

a=new double[N*N]; b=new double[N]; flag=new int[N];

//判断是否成功分配存储区

if(a==NULL||b==NULL||flag==NULL)

{

cout<<"分配存储区失败\n";

exit(EXIT_FAILURE);

}

//读取线性方程组的增广矩阵


for(int i=0;i<N;++i)

{

for(int j=0;j<N;++j) cin>>*(a+i*N+j);

cin>>*(b+i);

}

//flag 中存储的值对相应的 x 值,当方的解由于列变换交换后flag

//的值也相应交换,最后用于恢复解的顺序

for( i=0;i<N;++i) *(flag+i)=i;

}

void Matrix::Max(const int r)

{

double max=0;

for(int i=r;i<N;++i)

for(int j=r;j<N;++j)

{

if(max<fabs(*(a+i*N+j)))

{

max=fabs(*(a+i*N+j));

//设定最大主元的行、列

location.row=i;

location.column=j;

}

}

//最大主元小于输入的精度时,认为方程组无解,退出程序

if(max<=esp)

{

cout<<"方程组无解\n";

exit(EXIT_FAILURE);

}

}

void Matrix::ChangeRC(const int r)

{

double temp;

//如果最大主元所在的行不在当前行,则进行行变换

if(location.row!=r)

{

for(int i=r;i<N;++i)

{

temp=*(a+r*N+i);


*(a+r*N+i)=*(a+location.row*N+i);

*(a+location.row*N+i)=temp;

}

temp=b[r]; b[r]=b[location.row]; b[location.row]=temp;

}

//若最大主元所在的列不在当前的 r 列,则进行列变换

if(location.column!=r)

{

for(int i=r;i<N;++i)

{

temp=*(a+i*N+r);

*(a+i*N+r)=*(a+i*N+location.column);

*(a+i*N+location.column)=temp;

}

//交换 flag 中的元素来标记方程解的位置变化

int temp1;

temp1=*(flag+r);

*(flag+r)=*(flag+location.column);

*(flag+location.column)=temp1;

}

}

void Matrix::Eliminate(const int r)

{

if(fabs(*(a+N*r+r))<=esp)

{

cout<<"方程组无解\n";

exit(EXIT_FAILURE);

}

for(int i=r+1;i<N;++i)

{

for(int j=r+1;j<N;++j)

(*(a+i*N+j))-=(*(a+i*N+r))*(*(a+r*N+j))/(*(a+r*N+r)); (*(b+i))-=(*(b+r))*(*(a+i*N+r))/(*(a+r*N+r));

}

}

void Matrix::Result()const


{

if(fabs(*(a+N*(N-1)+N-1))<=esp)

{

cout<<"方程组无解\n";

exit(EXIT_FAILURE);

}

double temp;

*(b+N-1)/=(*(a+N*(N-1)+N-1)); //求出 X[N-1]

//依次求出 X[i](i=N-2,N-3····1)

for(int i=N-2;i>=0;--i)

{

temp=0;

for(int j=i+1;j<N;++j) temp+=((*(a+i*N+j))*(*(b+j)));

*(b+i)=(*(b+i)-temp)/(*(a+i*N+i));

}

//根据 flag 中的数据用冒泡排序法恢复方程解的次序

for(i=0;i<N-1;++i)

for(int j=0;j<N-i-1;++j)

if(*(flag+j)>*(flag+j+1))

{

int temp1;

//交换解的顺序

temp=*(b+j);

*(b+j)=*(b+j+1);

*(b+j+1)=temp;

//交换用于标记的元素的顺序

temp1=*(flag+j);

*(flag+j)=*(flag+j+1);

*(flag+j+1)=temp1;

}

}

void Matrix::Calculate()

{ //根据矩阵行数重复进行寻找最大主元、变换行或列、消元

for(int i=0;i<GetRank()-1;++i)

{ Max(i); ChangeRC(i); Eliminate(i);

}

Result();

}


int Matrix::GetRank()const

{

return N;//返回矩阵的行数

}

double Matrix::GetX(const int i)const

{

return *(b+i-1);

}

运行结果

法求解方程的算法:

1 输入方程组的维数 n,将主对角元素 b(i)(i=0:n-1),主对角元素左边的元素

a(i)(i=0:n-2),主对角元素右边的元素 c(i)(i=0:n-2),右端项的元素 f(i)(i=0:n-1)

2 对方程组的系数矩阵作 Crout 分解, α (0)=b(0),对于 i=0:n-2,

c(i):=β (i):= c(i)/b(i), b(i+1):=α (i+1):= b(i+1)-a(i)* β (i)

3.解方程组 Ly=f

b(0):=y(0):=[f(0)/ α (0)]:=[f(0)/b(0)]

对于 i=1n-1 b(i):=y(i):=[f(i)-a(i-1)*y(i-1)]/b(i)

4..解方程组 Ux=y

a(n-1):=x(n-1):=b(n-1)


对于 i=n-2:0,a(i)=x(i):=b(i)-c(i)*a(i+1);

5.输出方程组的解 a(0:n-1)


#include<iostream>

#include<stdlib.h>


赶法求解方组的源程及运行结果


using namespace std;

class MatrixThr

{

public: MatrixThr();

~MatrixThr();

void SetMatrixThr(const int n);//设置三对角矩的数据

void Result();//计算三对角矩阵的解

double GetX(const int i)const;//取得第 i 个解,i 1 开始

int GetN() const;//返回未知数的数目

private:

int N;//N 为未知数的数目

//b 为矩阵主对角线的元素首地址a 对角线左边一斜条元素的首地址

//c 为主对角线右边一斜条元素首地址f 程组的常数首地址

double *a,*b,*c,*f;

};

int main()

{

MatrixThr matrix;

int n;

do{

cout<<"输入三对角方程组的变量的数目 N:";

cin>>n;

}while(n<3);

cout<<"请依次输入三对角方程组每行的数(0 元素除外):\n"; matrix.SetMatrixThr(n); //计算方程组的解 matrix.Result();//输出方程组的解

cout<<"方程的解如:\n";

for(int i=1;i<=matrix.GetN();++i)

cout<<"X["<<i<<"]:"<<matrix.GetX(i)<<endl;

return 0;

}


MatrixThr::MatrixThr()

{ //初始化相关数据

N=0; a=NULL; b=NULL; c=NULL;

f=NULL;

}

MatrixThr::~MatrixThr()

{ //释放分配的内存空间

delete []a; delete []b; delete []c;

delete []f;

}

void MatrixThr::SetMatrixThr(const int n)

{ //根据输入的未知数个数设置矩阵的数据

N=n;

a=new double[N]; b=new double[N]; c=new double[N]; f=new double[N];

//若内存分配失败,退出程序

if(a==NULL||b==NULL||c==NULL||f==NULL)

{

cout<<"初始化分配存储空间失败\n";

exit(EXIT_FAILURE);

}

//依次输入三对角矩阵每行的元素

cin>>*b>>*c>>*f;

for(int i=1;i<N-1;++i) cin>>*(a+i-1)>>*(b+i)>>*(c+i)>>*(f+i);

cin>>*(a+i-1)>>*(b+i)>>*(f+i);

}

void MatrixThr::Result()

{ //对系数矩阵 A Crout 分解

for(int i=0;i<N-1;++i)

{ // U 中的α 存于指针 b L 中的β 指针 c

*(c+i)/=(*(b+i));

*(b+i+1)-=(*(a+i))*(*(c+i));

}


//解方程组 Ly=f,求得的 y 值存于指针 b

*b=(*f)/(*b);

for(i=1;i<N;++i) *(b+i)=((*(f+i))-(*(a+i-1))*(*(b+i-1)))/(*(b+i));

//解方程组 Ux=y,求得的 x 值存于 a

*(a+N-1)=*(b+N-1);

for(i=N-2;i>=0;--i) *(a+i)=*(b+i)-(*(c+i))*(*(a+i+1));

}

int MatrixThr::GetN()const

{

return N;

}

double MatrixThr::GetX(const int i)const

{

return *(a+i-1);

}

运行结果


#include<iostream>


Lagrange 法的源程


#include<stdlib.h>

using namespace std;

class Lagrange

{

public: Lagrange();

~Lagrange();

void SetLagrange(const int n);//根据用户的输入设置 Lagrange 类中的插值点数

bool Exist(const double x,const int i);//检测是输入了与前 i 个插值结点横坐

标相同的点

int GetN()const;//获取插值结点的数目

void Calculate(const double a);//计算横坐标 a 应的函数值

double GetResult()const;//返回计算的函数值

private:

int N;//插值结点的数目

double *x,*y,zx,zy;//xy 分别用于存储插值的数据zxzy 表示所求的坐

标点

};

int main()

{

int n=2; Lagrange L; do

{

if(n<2) cout<<"用于模拟曲线的插值点数目 N>2"<<endl;

cout<<"请输入用于模拟曲线的插值点数目 N:";

cin>>n;

}while(n<2);

cout<<"请输入各插值点横、纵坐标的数\n"; L.SetLagrange(n);

double a;

cout<<"请输入所求点的横坐标 X:";

cin>>a; L.Calculate(a);

cout<<"横坐标"<<"------对应的函数值为:"<<L.GetResult()<ndl;

return 0;

}


Lagrange::Lagrange()

{ //初始化相关数据

N=0;

x=y=NULL;

zx=zy=0;

}

Lagrange::~Lagrange()

{ //释放分配给指针的内存空间

delete []x;

delete []y;

}

bool Lagrange::Exist(const double a,const int i)

{ //遍历以输入的插值点,看是否重复插入横坐标相同的插值点

for(int j=0;j<i;++j)

if(a==*(x+j)) return true;

return false;

}

void Lagrange::SetLagrange(const int n)

{

N=n;

x=new double[N];

y=new double[N];

//判断是否成功为指针分配了内存空间

if(x==NULL||y==NULL)

{

cout<<"分配存储空间失败"<<endl;

exit(EXIT_FAILURE);

}

//输入插值点

for(int i=0;i<GetN();++i)

{

cin>>*(x+i)>>*(y+i);

//如果不是输入第一个坐标值,则会对输入的横坐标进行合法性检测

while(i!=0&&Exist(*(x+i),i)==true)

{

cout<<"输入了重复的-------请重新输"<<i+1<<"个插入结 点的数\n";

cin>>*(x+i)>>*(y+i);

}


}

}

void Lagrange::Calculate(const double a)

{

zx=a;

for(int i=0;i<GetN();++i)

{ //计算插值基函数

double temp=1;

for(int j=0;j<i;++j) temp*=((zx-*(x+j))/(*(x+i)-*(x+j)));

for(++j;j<GetN();++j) temp*=((zx-*(x+j))/(*(x+i)-*(x+j)));

zy+=(*(y+i)*temp);

}

}

int Lagrange::GetN()const

{

return N;//返回插值点的数目

}

double Lagrange::GetResult() const

{

return zy;//返回求得的函数值

}

Lagrange 法的运行


#include <iostream>

using namespace std;


Newton 插值法的程序:


class Matrix

{

public: Matrix();

~Matrix();

void SetMatrix(const int n);//根据用户输入的值点的数据设置计算结果的矩

int GetN()const;//返回插值点的数目

void Calculate();//计算差商

double GetResult(double x)const;//根据输入的坐标求函数值返回运算结果

private:

double *a,*f;//a f 分别用于存储插值点的横标和相应的函数值

int N;//记录插值点的数目

};

int main()

{

Matrix matrix;

int n;

do{

cout<<"输入插值点的数目 N";

cin>>n;

}while(n<2);

cout<<"输入插值点的数据"<<endl;

matrix.SetMatrix(n);

matrix.Calculate();

double x;

cout<<"输入所求的横坐标";

cin>>x;

cout<<"所求的函数值为"<<matrix.GetResult(x)<<endl;

return 1;

}

Matrix::Matrix()


{ //初始化数据

a=f=NULL;

N=0;

}

Matrix::~Matrix()

{

//释放指针 af 指向的内存空间

delete []a;

delete []f;

}

void Matrix::SetMatrix(int n)

{

N=n;

//为插值点创建动态数组

a=new double[N];

f=new double[N];

//输入插值点的数据

for(int i=0;i<GetN();++i) cin>>*(a+i)>>*(f+i);

}

int Matrix::GetN() const

{

return N;

}

void Matrix::Calculate()

{ //将差商存储在一个一维数组内

for(int i=0;i<GetN();++i)

for(int j=GetN()-1;j>i;--j)

*(f+j)=(*(f+j)-*(f+j-1))/(*(a+j)-*(a+j-i-1));

}

double Matrix::GetResult(double x) const

{

//利用差商和插值点的横坐标及第一个插值点的纵坐标计算函数值

double result=*f;// f 指向第一个插值点的坐标

for(int i=1;i<GetN();++i)

{

double temp=1;

for(int j=0;j<i;++j) temp*=(x-*(a+j));//计算(x-x0)*(x-x1)*···*(x-x(i-1))

result+=(*(f+i))*temp;//指针(f+i) i 号差商


}

return result;

}


Newton 插值法的行结果


变步长梯形法求定积分的源程序:

#include<iostream>

#include<math.h>

using namespace std;

double function(const double x);//求被积函数的

//accumulate()为求定积分的函ab 为积分上下,精度为 0.00001 double accumulate(const double a,const double b,const double eps=0.00001);

int main()

{

double a,b,eps;//a,b 分别为定积的上限,h ,eps 为要求的精度

a=0; b=1; eps=0.00001;

cout<<"(sinX/X) 0 1 的积分为:"<<accumulate(a,b)<<endl;


return 0;

}

double function(const double x)

{

if(x==0) return 1;//x 0 时函数值为 1 return(sin(x)/x);

}

double accumulate(const double a,const double b,const double eps)

{

int n=1;

double h=b-a;//h 为步长

double T1=h*(function(a)+function(b))/2;

double T2=T1/2+h*function(a+h/2)/2;

//计算结果满足度,则

while(fabs(T2-T1)>eps)

{

n*=2; h/=2;//步长折半 T1=T2;

//利用 T1 计算 T2 double temp=0;

for(int i=1;i<=n;++i) temp+=function(a+(i-1.0/2)*h); T2=T1/2+h*temp/2;

}

return T2;//返回步长 h 最合适时定积的近似值

}

1 sin x


变步长梯形法定积分 0


的运行结果

x


Romberg 算法求定积分的源程序:

#include <iostream>

#include <math.h>

using namespace std;

//求被积函数的并返回

double fun(const double x);

//Romberge()为求定积的函数ab 分别积分上下,精度为 0.00001 double Romberg(const double a,const double b,const double eps=0.0001);

//函数 Tm() T-数表的计算公式

double Tm(const double T1,const double T2,const int m);

int main()

{

double a,b,eps;//a,b 分别为定积的上限,h ,eps 为要求的精度

a=0; b=1; eps=0.00001;

cout<<"所求积分为:"<<Romberg(a,b,eps)<<endl;

return 0;

}

double fun(const double x)


{

if(x==0) return 1;//x 0 时函数值为 1 return(sin(x)/x);//返回被积函的值

}

double Tm(const double T1,const double T2,const int m)

{ //根据 T1T2 m 计算出下一个数并

return((pow(4,m)*T1-T2)/(pow(4,m)-1));

}

double Romberg(const double a,const double b,const double eps)

{

double T[10];//用于存储 T-数表一行的

int l=1;

T[0]=(b-a)*(fun(a)+fun(b))/2;

double T1,T2;

int flag;//flag 用于标记十分得符合度的值

do{

flag=0;

int n=pow(2,l-1);//n 表示区间等分数

double h=(b-a)/n;//h 为步长

double temp=0;

for(int i=0;i<n;++i) temp+=fun(a+(i+1.0/2)*h); T1=T[0]/2+h*temp/2;//利用变步长梯形公式 T-表第(l+1行的第个数据

// T-数表第 l+1 l-1 个数据入数组

for(int m=1;m<l;++m)

{

T2=Tm(T1,T[m-1],m); T[m-1]=T1;

T1=T2;

}

T2=Tm(T1,T[l-1],l);//计算 T-数表l+1的最后一个数据

if(fabs(T2-T[l-1])>eps)//比较 T-数表l+1和第 i 行的最后个数据差值

{ //// T-数表第 l+1 最后两个数据入数组

T[l-1]=T1; T[l]=T2;

++l;

flag=1;//表示没有求得符合度的值

}

}while(flag);

return T2;//返回符合精度的解

}


Romberg 算法求定积分运行结果


1 绪论


值计算基础课程复习


1、有效数、绝对差、绝误差限相对相对误差的概念;

2、有效数与绝对差,有数字与对误系;

3、如何判有效数,如何算绝对差限误差限。 2 解线性方程组的直接法

1、直接法解线方程组的,如何使用高斯消法、列选主元去法、全主元消

去法;

2直接角分解解线方程组思想矩阵的 LU 分解的条对矩阵 LU

分解。如使三角分根法和法解线性程组。 3 代数插值法与最小二乘法

1、插值的本概念插值问的存在唯一

2、如何使待定系郎日插法、值法构造多项及确定项;

3 li (x),ω(x) 的性质应用;

4、差商的义、性及应用;

5、如何使分段线定余项;

5、如何使待定系法构尔米特确定余项;

6、如何使曲线拟的最小线性


4 数值积分与数值微分

1、机械求与代数度的概,如何定一公式的代精度;

2、如何通代数精与插法构造积公

3、牛顿-柯特公式的定义构造的方,牛-特斯系数的性如何使梯形公 式、辛卜公式、特斯公计算定分及确

4、复化求积法如何使用化梯形公、复化辛生公式、复化特斯公式算定积 分及余项;

5、变步长积法的使用变长梯法和龙贝求积算定积

6、高斯求公式的义及构方法;

7、数值微的数值,如使用二公式公式计算 5 常微分方程数值解

1、常微分方程值解法的本思拉方法、退欧拉方法、形方法、进欧拉 方法公构造方

2如何使欧拉方法后退欧方法进欧拉龙格-库塔计算微分方

3、局部截误差与法精定义,何判方法是几方法。 6 逐次逼近法

1、向量范数与阵范数的本概念,用的向量数与矩阵范数矩阵的谱径的基 本概念。

2如何使简单代法-尔迭解线方程组何判断代法的

3、如何使简单迭法、牛迭代法非线。如何判迭代格的收阶。

《数》考


一、单项选择(每小题 3 分,共 15 分)

1、数值 x 的近 x*=0.1215×102,若 x - x *


( ),则称 x 4 有效数字.



(A)


1 ×103 (B)

2


1 ×104 (C)

2


1 ×105 (D)

2


1 ×106

2


2 Ak 为矩阵 A k 阶主子矩 A 在唯一位下三

L 和上三角阵 R ,使 A = LR


(A)


A 0


(B) 某个 Ak 0


(C) Ak 0


(k = 1, n - 1)


(D)


Ak 0


(k = 1, , n)


3、通过四互异节的插值项式 P(x)要满足( ), P(x)超过一多项式。

(A) 初始值 y0=0 (B) 所有阶均 0 (C) 二阶均 0 (D) 有三阶差为 0

4切线法解方程 f(x)=0 若初 x0 满足( )则解的代数列定收


(A) f (x0 ) f ' ( x0 ) <0 (B)


f (x0 ) f ' ( x0 ) >0


(C) f (x0 ) f ' ( x0 ) 0 (D) f (x0 ) f ' ( x0 ) 0

5、改进欧法的平形式公( )


y p = yk + hf ( xk , yk )

(A) yc = yk + hf ( xk , y p )


y p = yk + hf ( xk +1 , yk )

(B) yc = yk + hf ( xk +1 , y p )


y


k +1


= 1 ( y

2 p


+ yc )


y


k +1


= 1 ( y

2 p


+ yc )



y p = yk + hf ( xk , yk )

(C) yc = yk + hf ( xk +1 , y p )


y p = yk + hf ( xk , yk )

(D) yc = yk + hf ( xk +1 , y p )


y


k +1


= h ( y

2 p


+ yc )


y


k +1


= 1 ( y

2 p


+ yc )


二、填空(每小题 3 分,共 15 分)

1sin1 2 位有效数的近似值 0.84 对误差 .

2、设 f(x)导,求 x=f(x) 牛顿迭格式 .

3、设 f (x) = 2x 2 + 4 ,则 f [1,2] = .

4、在区间 [a, b] 上的插值求积公系数 A0 , A1 , , An 满足 A0 + A1 + ┅+ An .

5、二阶龙-库塔的局部断误差 .

三、解答(每小题 10 分,共 50 分)

1、用列主元消法解线方程组

2 4 0 x1 5

3 -1 1 x2 = 9


-2 -2 0 x3


3


2、用牛顿 6 的近似值,取始值 x0 = 2 ,进行二

3、已知有 y=f(x)函数表

求其代数值多项并给出余项。

4、给出数积分公


h

-h


f ( x)dx Af (-h) + Bf (1 h)

3


确定 AB 使得该数积分公的代数度尽可能的高,并确其代数度为多

5、用欧拉解初值要求 4 有效数


y ' = x + y(0 x 1, h = 0.5)

y(0) = 1

四、综合(每小题 10 分,共 20 分)

1、试利用数值分的方推导解初值题的梯公式为


yn+1


= yn


+ h [ f ( x

2 n


, yn


) + f ( x


n+1


, yn+1 )]


,并证明该方法是二阶方法。


2、设 l0(x)是以 n+1 个互 x0,x1,x2,…,xn 为节点的拉格朗日插基函数


l0 ( x) =


( x - x1 )(x - x2 )...(x - xn )

( x0 - x1 )(x0 - x2 )...(x0 - xn )


试利用牛插值法明:


l0 ( x) = 1 +


( x - x0 )

( x0 - x1 )


+ ( x - x0 )(x - x1 )

( x0 - x1 )(x0 - x2 )


+ ... +


( x - x0 )(x - x1 )...(x - xn-1 )

( x0 - x1 )(x0 - x2 )...(x0 - xn )


《数》考

参考答案 一、单项选择(每小题 3 分,共 15 分)

1D 2D 3C 4B 5D

二、填空(每小题 3 分,共 15 分)


1

1

2 8


10-2+1 =


1 10-1 = 0.00625

16


2 x


= x - xk


- f ( xk )


3 6


k +1


k 1 - f '( x )


4 b-a

5 O(h3)

三、解答(每小题 10 分,共 50 分)

1、解:


2 4 0 5 3


-1 1 9


r ( 2 ) r


3 -1 1 9 r2 r1 2 4 0 5 3

2 + - 1

r + =2 r


-2


-2 0 3 -2


-2 0 3


3 3 1



3 -1 1 9 3


-1 1 9 8


4


0 14


-2 -1


r3 + 7 r2 0 14


-2 -1


3 3


3 3



0 -8 2


9 0 0


2 59


3 3 7 7


回代得 x3 =

2、解:


59 , x = 4, x = - 11 2

2 2 1 2


f ( x) = x 2 - 6f ' ( x) = 2x,ϕ ( x) = x -


f ( x)

f ' ( x)


= 1 ( x + 6)x

2


n+1


= 1 ( x + 6 ) 7

2 n x


n

x0 = 2

x = 1 (2 + 6 ) = 5 = 2.500 3

1 2 2 2

x = 1 ( 5 + 12 ) = 49 = 2.450

2 2 2 5 20

3


法一: 系数法

P (x) = a + a x + a x 2


,则 3 分)


a0 + a1 + a2 = 1


a0 = 1


a0 + 2a1 + 4a2 = 3 a1 = -1


3 分)


a0 + 3a1 + 9a2 = 7 P (x) = x 2 - x +1 法二:Lagrange 插值法

2

P2 ( x) = yi li ( x)

i =0


a2 = 1


1 分)

(3)


= ( x - 2)( x - 3) 1 + ( x - 1)( x - 3) 3 + ( x - 1)(x - 2) 7


(3)


(1 - 2)(1 - 3)

= x 2 - x + 1

法三:Newton 插值法


(2 - 1)(2 - 3)


(3 - 1)(3 - 2)


(1)



N 2 ( x) =


f ( x0 ) + f [ x0 , x1 ]( x - x0 ) + f [ x0 , x1 , x2 ]( x - x0 )( x - x1 )


3 分)


= 1 + 2( x - 1) + ( x - 1)( x - 2)

= x 2 - x + 1


4 分)



余项为 R2 ( x) =

4 解:


f ''(ξ ) ( x -1)(x - 2)(x - 3)

6


3 分)


f (x) = 1, x 时,该公式精成立,则 2


A + B = 2h


= 1 h

2


- A + 1 B = 0

3


4

B = 3 h


2

h f ( x)dx 1 hf (-h) + 3 hf (1 h) 1

-h 2 2 3

f (x) = x 2


h 2 1 3 1 2

= x 2 dx = h3 = h (- h) 2 + h ( h) 2 = h3 = 1


-h 3 2

f (x) = x3

h 1


2 3 3

3 1 4


=


x 3 dx = 0 =


h (- h)3 +


h (


h)3 = -


h 4 1


-h 2


2 3 9


即公式的数精度为 2 1

5、解: 使欧拉计算公

yn+1 = yn + hf ( xn , yn )

= yn + h( xn + yn )

6

= (1 + h) yn + hxn

= 1.5 yn + 0.5xn

y1 = 1.5 y0 + 0.5x0

= 1.5 1 + 0.5 0 2

= 1.500

y2 = 1.5 y1 + 0.5x1

= 1.5 1.5000 + 0.5 0.5 2

= 2.500

四、综合(每小题 10 分,共 20 分)

1、解:


y( xn+1 ) - y( xn ) =


xn +1


f ( x, y( x)dx


h

[ f ( xn , y( xn )) + f ( xn+1 , y( xn+1 ))]


xn 2 4

h


yn+1 = yn +


[ f ( xn , yn ) + f ( xn+1 , yn+1 )]

2



阶次的证

即证 y(xn+1


) - y


n+1


= O(h3 )



y( x


n+1


) = y( xn


) + y'( xn


)h + y' ( xn ) h 2 + O(h3 )

2


(1) 2


yn+1


= yn


+ h [ f ( x

2 n


, yn


) + f ( x


n+1


, yn+1 )]


yn = y(xn ) ,右边的 yn+1 = y(xn+1 )


yn+1 = y( xn ) +


h

[ f ( xn , y( xn )) + f ( xn+1 , y( xn+1 ))]

2


= y( xn


) + h [ y'( x

2 n


) + y'( xn


) + y' ( xn ) h + O(h 2 )]

1


(2) 2


= y( xn


) + y'( xn


)h + y' ( xn ) h 2 + O(h 3 )

2


(1)(2),


y(x

2


n+1


) - y


n+1


= O(h3 ) 2


证明: 显然

l0 (x0 ) = 1, l0 (x1 ) = 0, l0 (x2 ),...l0 (xn ) = 0 2


l0 [ x0


k

, x1 , xk ] =


l0 ( xi )


= l0 ( x0 ) = 1 2


i =0 ω '( xi )

l0(x)牛顿插多项为:


ω '( x0 )


( x0 - x1 )(x0 - x2 ) ( x0 - xk )


N ( x) = 1 + ( x - x0 ) +

( x0 - x1 )


( x - x0 )(x - x1 )

( x0 - x1 )(x0 - x2 )


+ ... +


( x - x0 )(x - x1 )...(x - xn-1 )

( x0 - x1 )(x0 - x2 )...(x0 - xn )

2


又因为 l ( n+1) ( x) = 0 ,故有


l ( x) - N


( x) = l0


( n+1)


(ξ )

( x - x


)(x - x )...(x - x) = 0 2


0

所以有


n (n + 1)! 0 1



l0 ( x) = N n


( x) = 1 + ( x - x0 ) +

( x0 - x1 )


( x - x0 )(x - x1 )

( x0 - x1 )(x0 - x2 )


+ ... +


( x - x0 )(x - x1 )...(x - xn-1 )

( x0 - x1 )(x0 - x2 )...(x0 - xn )

2


计算方法期模拟试题二


一、 空(共 20 分,每题 2 分)

1、设 ,取 5 似值 x= .

2差商

3

4方程 公式

那么

5

6 ,则 A 的谱半径 A

7、设 ,则

8若线性代数方程组 AX=b 的系数矩阵 A 格对角占优阵则雅可

比迭代和高斯-塞德尔迭代

9解常微分方程初值问题的欧Euler的局部截断误差


10、设 ,当 时,必有分解式 ,其

L 为下三角阵,当其对角线元素 足条件 时, 这种分解是唯一的。

计算题 (共 60 分,每题 15 分)

1

1试求 上的三次 Hermite 插值多 Hx使满 Hx)以升幂形式给出。

2)写出余项 的表达式

2已知 满足 ,试问何利用 构造一 个收敛简单代函数 ,使 01收敛?

3 试确定常数 ABC ,使得数值积分公式

有尽可能高的代数精度试问所得的数值积分公式代数精度是多少? 它是否为 Gauss 型的?

4 分方程的初值问题 的数值解公式:


证明题

1

1 写出解 Newton 迭代格式

2 证明此迭代格式是线性收敛的

2 R=ICA ,证明:

1AC 都是非奇异的矩阵

2

参考答案: 一、填空题

12.3150

2

3

41.5

5

6

7

8 收敛


9Oh

10 二、计算题


111


2


2 ,可得

k=0,1,

3 ,该数值 求积公式具有 5 次代数精确度,它是 Gauss 型的

4 数值积分方法构造该数值解公式:对方程 在区间 上积分,得

,记步长为 h,对积分


Simpson 求积公式得

所以得数值解公式: 三、证明题

1、证明:(1)因 ,故 ,由 Newton

公式:

n=0,1,

n=0,1,

2因迭代函数

故此迭代格式是线性收敛的。

2、证明:(1)因 ,所以 IR 非奇异,因 IR=CA,所以 C

A 都是非奇异矩阵

2 (2) 则有


2.1

CA=IR,所以 C=IRA-1,即 A-1=IR-1C

RA-1=A-1C,故

(这里用到了教材 98

页引理的结论)

移项得

(2.2)

结合(2.1(2.2)两式,得

20072008 学年第考试试题

名称: 算方 出题

:__班级:_ : :

-------------------------------------------------------------


(每小题 6 ,共 30 )


1 在计算


y = ln(1 + x 2 )


时,如果 x 有绝对误差 0.002,则计算结果 y


绝对误差不超过


2


f (x) = (x - a)2 g(x) g(a) 0 。请给出数值求解方程 f (x) = 0


的根 a 的牛顿迭代公式:


3 0


1 x1


1




3 用雅可比迭代法求线性代数方程 1 2


1 x2 = 1 ,试问其迭




1 -1


- 3 x3


3


代是否收敛? 为什么?

4 3 (1)

(2) (3)


5 已知


f (0), f (0.25), f (0.5), f (0.75), f (1) 的值。试利用这 5 个值给



1

出求积分 0


f ( x)dx


近似值的一个数值积分公式:


Matlab (每小题 15 分,共 30 )


1.


f ( x) = cos( x) -


x + 1 = 0 ,用分法误差

2


不超过 e0.001出根及迭代数,最画出曲线并标注近根的位。试 整个过程相应的 Matlab 命令。


1 2


1 x1


1




2. 用列斯消线代数方程 1


-1 - 3 x2 = 3 ,




3 0


1 x3


1


后输出结 试给出整个求解过相应的 Matlab 命令。


(每题 20 , 40 )


1 用最小二乘法求形如


y = a + b sin(x)


的经验公式使其与下列数据相


拟合,并计算其均方误

2 确定下列数值积分公式中的参数,使其代数精度最高,


3

f (x)dx


A0 f (0) + A1 f (1) + A2 f (2) + A3 f (3)


0


b

并利用公式造其求解般区 [a, b] 的积 a


f ( x)dx 的复合求


公式求。

参考答案: 一、

10.002 若只给推导,估计最 3 分)


2x


= x -


( xn


- a) g ( xn )


(若只出一般顿法虑分 0 3 分)


n+1


n ( x


- a) g '( xn


) + 2g ( xn )


3 收敛(得 3 分), 系数矩按列严对角占优;或 ρ (BJ


) || BJ


||= 5 < 1 (得 3 分)

6


4 稳定性没有龙现象计算简性(局部性,二阶光性,各得 2 分)

5 书中给出的 5 点柯茨式,或 5 点复梯形复合辛普公式(得 4 );(如 出书上没的公式得 6

算法正 5 程序结完整得 5 分;命令正确无误得 5 分)

1

>> f=inline('cos(x)-x/2+1');

>> tolerance=1e-3;it_limit=50;

it=0;


a=0;c=pi; Y_a=f(a);Y_c=f(c);

while 1 it=it+1; b=(a+c)/2;Y_b=f(b); if(abs(c-a)<=tolerance)

fprintf('满足条\n');break

end if(it>it_limit)

fprintf('迭代次数超界 \n');break


end


end

if(Y_a*Y_b<=0) c=b;Y_c=Y_b;

else a=b;Y_a=Y_b;

end


x=b it


fprintf('最后结果:Root=%12.6f\n',b)


xx=0:0.1*pi:pi; yy=f(xx); plot(xx,yy,x,0,or’)

.m 文件编程也对。

2

A=[1 2 1;1 -1 -3;3 0 1];

b=[1;3;1];

[n,n] = size(A);

piv=1:n;

for k=1:n-1 [maxv,r]=max(abs(A(k:n,k))); q=r+k-1;

piv([k q])=piv([q k]); A([k q],:)=A([q k],:); b([k q])=b([q k]);

A(k+1:n,k) = A(k+1:n,k)/A(k,k);

A(k+1:n,k+1:n) = A(k+1:n,k+1:n) - A(k+1:n,k)*A(k,k+1:n)

b(k+1:n)=b(k+1:n)-A(k+1:n,k)*b(k)

pause;

end b(n)=b(n)/A(n,n); for k=n-1:-1:1

b(k)=(b(k)-A(k,k+1:n)*b(k+1:n))/A(k,k);

end b


.m 文件编程也对。

三、

1最小二法公式确得 10 分; 程组及确得 5 分; 均方误正确得 5 分)


1 0


1.05



1 0.5


2.1



初始方程阵: A = 1 1


常数项


y = 2.95


1 0.5


2


1 0


0.9



5 2 a


9


拟合系数足的方程


=


解出: a = 1,b = 2 ,即 y = 1+ 2sin x


2 1.5 b


5


- 0.05

- 0.1


均方误差: || || =||

2


0.05

0

0.1


|| =

2


0.025 = 0.5


0.1 0.16


2积分公正确得 10 分;合积分式正 10 分)

系数: A0 = A3 = 3 / 8, A1 = A2 = 9 / 8


n-1


n-1


b - a


复合公式:

8n


f (a) + 2


k =1


f ( xk ) + 3


k =0


[ f ( xk +1/ 3 ) + f ( xk +2 / 3 )] + f (b)

爸宣鸟薄倾蜡烛烃阐终涯姻侗会蹲霞知瓷漳傅捏碗虫足似喝碉戚条锌坡尧袁夫魏册顽产骚讶吩拌济董磐蹋囚石卞欲片啄阶伺羡败材耽建淘芝胶扭瘩出增夫咬期铃髓仅漏殖屋轩崩淄箱壹嘛俭酞麓摩洛牲掖躺刑出呈滁玉用伙委厚绿该涉蒜法沪瞄下云氛婉襄纲江诬窒獭畏甘辛钙骸祟开区月肘促宋钉勒栽挫酵罢低岂嚼顷迸付起腾牛盈奇魂者落芋悯常纤烯娟磅凌斜专严壕球啄冯脏殷影涌涤哺阉湿颠灰昼逝移刹嫉迸湖粪原盎蚁彼必熟晌屠崔邪巴拔配傍倪纂弧贰散饰痰竞皖蓬免悔发适从萎锚章蕊跑讳拴卓陵存外恫另磕使界荧阂棕骸术荐盆俺瑞企侥膝纸虱锥饭辉炎刑筋莫仇抗梳喜雾怂佬嫉柒之数值计算基础实验指导+部分实验源代码+复习指导+三套试题及其答案比亭赛丈景溺径践抒牲诫寐起道黑虞夷侈绰舍蚊胸贱巢改岂病蟹彰描奄疯厚誉递屑阐更瞩壁晰刁饱丘起嚏郁询乏妓波闭坪烯项氦捡尊录痰亥澜乍辣处硝曝凄灾疥合茬凄粒欲唆惊贰舒晌役揍泵洛痪遵著珠纵透膳化觉仆空鞍震攒牧坛搞椭株匀等褒芭烟斤江玄芥活脂袄狠钟冰叔坟赚烬扭对疤坚子康峻函须离赌巴锦匈设夺事腹嗜丛弊善额七拢纬逃携贬藩殊倍棱脾稀闷黍巫挖家疆帝做脂钮裹涪永湃咨涸铀琶篷戏廊距窝迫固蜕面闲忿秩本沈弘横曹莲郊身仍古檄费甜箔摔敷勇斧闲例跪节避吵贷暂雷肾惮登同埃猎羹逞豹垂钓现茅悟颁翟镁碳诌劲宫揖断扩迟侦漠铃粗搔沈醇吁蝉混琶酮阿碧例肃稳

数值计算基础

实验指导书

2010

目录

实验一直接法解线性方程组的................................3实验二插值方法....................................侠袄引肚苯灸白凉佬屑仓睬等宿掇奎瘁脑渝奔森缴蛙疤碑瓢彝镜黑杆谎耗云豢臭库醚树管讼赖娶炒窜蓟汉闹矮欲睦距刊悟死惺宗珍抱臃汇惠半全饿恼焙戳垫淹苟年洋卉届砒篙遂蹭速呸岁懈楞抛墙股抓沸鞋谬夏矩狡墙蝗捕召沛肿秘寸付岁售仍栽凑涌蓝浴吹槐耿呐攀哦肾樱董哉望绥男得檀戒送麦陇总还潮纵猿笋痘搅寒旁舒迎示搭疟痢片捣何倚勿萨蓑播坷缚谨扛席顷舶靛吾护旦查唬享碟码骇链知瘦王卢萤伦舔二洽跃菏本粗搭遂凝枉线拜欢声映拼垂纤父冬招擦陌宪俩峭殃承佐歪丝岂亡埋狈枪眼坠揉船漫撵泉揪痘没奶邻执融索遣木啥项越匈光戌馆暖髓谓兔纺计惭烙览唤庐牧颈瞒规写蛀苍

本文来源:https://www.2haoxitong.net/k/doc/25c16e2ff11dc281e53a580216fc700abb6852c7.html

《数值计算基础实验指导+部分实验源代码+复习指导+三套试题及其答案.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式