数值分析上机作业

发布 2022-09-05 10:00:28 阅读 5856

《数值分析》上机作业。

第一二三章)

学院:电气工程学院

班级: 电气13级硕士2班

教师: 石佩虎老师

姓名: 高蕾。

学号: 132046

第一章。实验1 舍入误差与有效数。

设,其精确值为。

1) 编制按从大到小的顺序,计算的通用程序;

2) 编制按从小到大的顺序,计算的通用程序;

3) 按两种顺序分别计算、、,并指出有效位数(编制程序时用单精度);

4) 通过本上机题你明白了什么?

解答如下:1). 按从大到小的顺序计算的通用程序如下所示:

n=input('please input an n (n>1):'

y=0accurate=1/2*(3/2-1/n-1/(n+1));精确值

for i=2:1:n从大到小的顺序。

x=1/(i^2-1);

x=single(x

y=y+xend

error= accurate-y;

format long;

dispdisp('the value of sn from large to small is:')

disp(y);

disp('the value of error is:')

disp(error);

2) 编制按从小到大的顺序计算的通用程序如下所示:

n=input('please input an n (n>1):'

y=0accurate=1/2*(3/2-1/n-1/(n+1));

for i=n:-1:2

x=1/(i^2-1);

x=single(x

y=y+xend

error= accurate-y;

format long;

dispdisp('the value of sn from large to small is:')

disp(y);

disp('the value of error is:')

disp(error);

3) 计算结果:

按从大到小的顺序计算得:

按从小到大的顺序计算得:

总结:当我们采用不同的计算顺序,对于同一个计算式,会得出不同的结果。本例中,分别采用从大到小和从小到大两种顺序,结果有较大差异,有效位数最少的情况只有3位。

当按从大到小的顺序进行时,当越大,就越小,与已计算出的和值相比数量及特别小,很可能被舍去为0,使得计算结果变小,有效位数减少,结果不精确。这种现象随着越大,结果的差异就越大,误差就越大。而从小加到大时,越往后小数之间数量级相差不大,前面的和值与大数的数量级相差不大,之前的情况不会出现,误差都是符合要求的,有效数字也有7位。

所以在进行数值计算时,若忽略运算次序,可能会造成大数吃小数的问题,影响到结果的准确性。所以我们要根据计算式的性质,设计合理有效的算法,进行计算。

第二章。实验2 newton迭代法。

1)给定初值及容许误差,编制newton法解方程根的通用程序。

2)给定方程,易知其有三个根。

由newton方法的局部收敛性可知存在,当时newton迭代序列收敛于根,试确定尽可能大的;

试取若干初始值,观察当时newton序列是否收敛以及收敛于哪一个根。

3)通过本上机题,你明白了什么。

解答如下:1). newton法的程序如下:

function x=newton(x0,explise);%newton法,输入值为迭代初值和误差极限。

y1=f(x0);

y2=df(x0);

for i=1:1e6

if y2==0

x=0;break;

endx=x0-y1/y2; %newton迭代公式。

error=abs(x-x0);

x0=x;disp(i); 显示具体的迭代过程,若不需要则可以定义掉。

disp(x0);

y=f(x0);

y1=f(x0);

y2=df(x0);

if error break;

endend

if error>explise

disp('迭代次数超限,可能不收敛');

endk0=i;

y0=y;error0=error;end

编程函数的程序:

function y=f(x0) %输入函数f(x)

y=(x0^3)/3-x0;

end函数的导函数程序:

function y=df(x0) %f(x)导数f'(x)

y=x0^2-1;

end求最大收敛数的函数程序:

function delta = newton1(e)

找出最大的delta

for delta=0:e:1 %e为搜索步长。

x1 = newton(delta,e);

if abs(x1)>e

breakend

end运行求最大delta的函数,取,得到最后的结果为。

当时。结果显示收敛为根。

当时,且:结果显示收敛为根或是。

当时,且:结果显示收敛为根。

当时,且:结果显示收敛为根或是。

当时。结果显示收敛为根。

3). 区间收敛于,区间局部收敛于,局部收敛于,区间收敛于0,区间类似于区间,收敛于。

总结:通过该实验我明白了对于newton法解方程而言,其初始值非常重要,不同的初始值会带来不同的收敛结果。另外,从实验结果的k值可以看出其对于单根的迭代速度比较快。

newton法解方程时,每一步都要进行函数值以及函数导数的计算,本程序采用的是,输入导数的方式,若采用机器自动算导数时,可能带来时间上的延时,不利于快速性(可用newton法变形代替)。在编写程序时,判定其误差的方法可以采取两种形式,一种是比较的绝对值与误差限的大小,另一种可以直接比较f(x)与误差限的大小,本程序采用了前一种,这种方式比较直观的反映了根的误差问题。本次实验帮助我提高了对newton法的认识,同时提高了运用matlab编程的能力。

第三章。实验3-1 列主元gauss消去法。

对于某电路的分析,归结为求解线性方程组ri=v,其中。

1)编制解n阶线性方程组ax=b的列主元gauss消去法的通用程序;

2)用所编程序解线性方程组ri=v,并打印出解向量,保留5位有效数字;

3)本题编程之中,你提高了哪些编程能力?

解答如下:1). 解n阶线性方程组ax=b的列主元gauss消去法的通用程序如下:

function x=gausslzy(a,b) %列主元gauss消去法。

n=length(b);

a=[a,b增广矩阵。

for k=1:(n-1)

[ap,p]=max(abs(a(k:n,k)))

p=p+k-1;

if p>k,t=a(k,:)a(k,:)a(p,:)a(p,:)t;

enda((k+1):n,(k+1):(n+1))=a((k+1):n,(k+1):(n+1)).

-a((k+1):n,k)/a(k,k)*a(k,(k+1):(n+1));

a((k+1):n,k)=zeros(n-k,1);

endx=zeros(n,1);

x(n)=a(n,n+1)/a(n,n);

for k=n-1:-1:1

x(k,:)a(k,n+1)-a(k,(k+1):n)*x((k+1):n))/a(k,k); 回代。

end2). 解线性方程组ri=v,在主程序中输入。

r=[31 -13 0 0 0 -10 0 0 0;

数值分析上机作业

一。上机作业任务一 用五点差分格式求解poisson方程边值问题,p 任选一题 二。上机作业任务二 用simpson求积法计算定积分。下面两种方法任选一。1 变步长复化simpson求积法2 自适应simpson求积法。三。上机作业任务三 用matlab语言编写连续函数最佳平方逼近的算法程序 函数式...

数值分析上机作业

今天的上机作业。1.lagrange 插值。给出的数值表。用lagrange 插值计算的近似值。2 newton插值。用newton插值计算x 0.41的近似值。3.插值法的全部内容。把chap 2试验。doc的全部内容作一边,粘在这个文件里 包括图形 答 插值。function f lagrang...

数值分析上机作业

第二次上机作业。一。任务 用matlab语言编写连续函数最佳平方逼近的算法程序 函数式m文件 并用此程序进行数值试验,写出计算实习报告。二。程序功能要求 在后面的附一的基础上进行修改,使其更加完善。要求算法程序可以适应不同的具体函数,具有一定的通用性。所编程序具有以下功能 1.用lengendre多...