《矩阵与数值分析》课程数值实验报告。
矩阵05班 20906284 马强土木水利学院道路与铁道工程专业任课教师:董波。
一、解线性方程组。
1.问题。1)分别jacobi迭代法和gauss-seidel迭代法求解教材85页例题。迭代法计算停止的条件为:;
2). 用gauss列主元消去法、qr方法求解如下方程组:
2.程序及计算结果。
a. 源**:
clear all
a=[3.4336 -0.52380 0.67105 -0.15270;
a-方程组系数矩阵
b=[-1.0;1.5;2.5;-2.0];
b-方程组的矩阵表达形式ax=b的右端列向量表。
c=0.000001; %终止条件。
n=length(b);
x0j=zeros(n,1);%jacobi迭代法初始值。
x0g=zeros(n,1);%gauss-seidel迭代法初始值。
kj=0;kg=0;%迭代次数计数。
d=zeros(n,n);l=zeros(n,n);u=zeros(n,n);
将a分解为d-l-u的形式。
for i=1:n
d(i,i)=a(i,i);
endfor i=2:n
for j=1:i-1;
l(i,j)=-a(i,j);
endend
for i=1:n-1
for j=i+1:n;
u(i,j)=-a(i,j);
endend
jacobi迭代法矩阵形式。
bj=inv(d)*(l+u);
fj=inv(d)*b;
gauss-seidel迭代法矩阵形式。
bg=inv(d-l)*u;
fg=inv(d-l)*b;
jacobi迭代。
for i=1:100
xj=bj*x0j+fj;
kj=kj+1;
if max(xj-x0j)<=cxjkj
break;
endx0j=xj;
endgauss-seidel迭代。
for i=1:100
xg=bg*x0g+fg;
kg=kg+1;
if max(xg-x0g)<=cxgkg
break;
endx0g=xg;
endb.计算结果:
xj =迭代步数k j= 11
xg= 迭代步数k g=6
分析:g—s法应用了上一步计算出来的较精确的值,所以可以用较少的迭代步数满足误差要求。
a.源**:
a=[2 4 3 1;8 2 0 0;5 0 4 0;9 0 0 5];
b=[12 6 23 16];
n,n]=size(a);
x=zeros(n,1);
y=zeros(n,1);
z=zeros(n,1);
r=1:n;
for p=1:n-1
[max1,j]=max(abs(a(p:n,p)))
c=a(p,:)
a(p,:)a(j+p-1,:)
a(j+p-1,:)c;
d=b(p);
b(p)=b(j+p-1);
b(j+p-1)=d;
if a(p,p)==0
break;
end; for k=p+1:n
mult=a(k,p)/a(p,p);
b(k)=b(k)-mult*b(p);
a(k,p:n)=a(k,p:n)-mult*a(p,p:n);
end;end;
for k=n:-1:1
x(k)=(b(k)-a(k,k+1:n)*x(k+1:n))/a(k,k)
endb.计算结果:
x=二、非线性方程的迭代解法。
1、问题:1).用newton迭代法、割线法求方程。
在附近的正.计算停止的条件为:;
2).利用迭代法求多项式。
的所有零点。
2、 程序及计算结果:
a.源**:
newton迭代法。
clear all
x0=0.5;
k=0;c=0.000001;
for i=1:10000
f=x0*exp(x0)-1;
df=(x0+1)*exp(x0);
x=x0-f/df;
k=k+1;
if abs(x-x0)<=c
break;
endx0=x;endx
k割线法。
clear all
x0=0.5;
k=0;c=0.000001;
for i=1:10000
f=x0*exp(x0)-1;
df=(x0+1)*exp(x0);
x=x0-f/df;
k=k+1;
if abs(x-x0)<=c
break;
endx0=x;endx
k割线法。
clear all
x0=0.5;
x1=0.7;
k=0;c=0.000001;
for i=1:10000
x=x1-(x1*exp(x1)-1)*(x1-x0)/(x1*exp(x1)-1)-(x0*exp(x0)-1));
k=k+1;
if abs(x-x1)<=c
break;
endx0=x1;
x1=x;endxk
b.计算结果:
newton迭代法。x=k=4
割线法。x=
k=5分析:割线法的收敛阶小于newton迭代法,所以用了较多的迭代步数以满足误差要求。
a.源**:
clear all
x=-5:0.5:11
for i=1:33
f(i)=x(i)^5-13.7*x(i)^4+14.66*x(i)^3+213.092*x(i)^2-154.2072*x(i)-631.9296
endplot(x,f)
grid on
function x1=newton(b)
x=b;c=0.000001;
for i=1:10000
f=x^5-13.7*x^4+14.66*x^3+213.092*x^2-154.2072*x-631.9296;
df=5*x^4-54.8*x^3+43.98*x^2+426.184*x-15402072;
x1=x-f/df;
if abs(x1-x)<=c
break;
endx=x1;endx1
b.计算结果:
由上图选取初始值:-3.5、 -2、 2 、 5、 10.6
由newton迭代法得到方程的五个解:x=
三、数值积分。
1、问题:用romberg方法求的近似值,要求误差不超过。
2、程序及计算结果:
a.源**:
clear all
a=0;b=1;
h=(b-a);
t(1,1)=(h/2)*1/sqrt(pi)*(exp(-(a^2)/2)+exp(-(b^2)/2));
k=2;while (k>=2)
sum=0;
for p=1:2^(k-2)
sum=sum+1/sqrt(pi)*exp(-(a+(2*p-1)*h/2^(k-1))^2/2);
endt(1,k)=0.5*t(1,k-1)+sum*h/2^(k-1);
for m=2:k
t(m,k-m+1)=(4^(m-1)*t(m-1,k-m+2)-t(m-1,k-m+1))/4^(m-1)-1);
if (abs(t(m,1)-t(m-1,1))<1.0e-5)
k=0;end
endif k~=0
k=k+1;
endend
t(m,1)
m-1abs(t(m,1)-t(m-1,1))
b.计算结果:
i= ,加速次数m=3,绝对误差c=
分析:应用加速法可以使之前不收敛的式子收敛,有效的加快了收敛速度。
四、插值与逼近。
1、问题:(1).给定上的函数,请做如下的插值逼近:
构造等距节点分别取,,的lagrange插值多项式;
构造分段线性取的lagrange插值多项式;
取chebyshev多项式的零点:
作插值节点构造的插值多项式。
和上述的插值多项式均要求画出曲线图形(用不同的线型或颜色表示不同的曲线)。
2).已知函数值。
和边界条件:. 求三次样条插值函数并画出其图形.
3).分别用和拟合下列数据,并比较两种方法得到的误差。
2、程序及计算结果:
a.源**:
clear all
a=-1;b=1;
n1=5;n2=8;
n3=10;
x00=a:(b-a)/(n1-1):b;
x01=a:(b-a)/(n2-1):b;
x02=a:(b-a)/(n3-1):b;
x=a:(b-a)/99:b;
for i=1:100
f(i)=1/(1+25*x(i)*x(i));
endfor i=1:n1
y00(i)=1/(1+25*(x00(i))^2);
endfor i=1:n2
y01(i)=1/(1+25*(x01(i))^2);
endfor i=1:n3
y02(i)=1/(1+25*(x02(i))^2);
数值分析上机作业
一。上机作业任务一 用五点差分格式求解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多...