数值分析实习报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数值分析实习报告

题目:MATLAB算法实习

学生姓名:

指导教师:***

学院:

学号:

2016年12月

目录

一、拉格朗日插值法 (1)

二、最小二乘拟合法 (3)

三、复化辛普森法计算积分 (5)

四、LU分解法 (6)

五、Jacobi迭代法 (8)

六、牛顿迭代法 (9)

七、幂法 (11)

八、欧拉法 (13)

一、拉格朗日插值法

x 0 1 4 9 16

y 0 1 2 3 4

1、建立M文件

function f=language(x,y,x0)

syms t l;

if (length(x)==length(y))

n=length(x);

else

disp('x和y的维数不相等!')

return;

end

h=sym(0);

for i=1:n

l=sym(y(i));

for j=1:i-1

l=l*(t-x(j))/(x(i)-x(j));

end;

for j=i+1:n

l=l*(t-x(j))/(x(i)-x(j));

end;

h=h+l;

end

simplify(h);

if(nargin==3)

f=subs(h,t,x0);

else

f=collect(h);

f=vpa(f,6);

end

2、在命令窗口输入指令并运行:

二、最小二乘拟合法

例题:编制以函数 为基的多项式最小二乘拟合程序,并用于对下列数据作三次多项式最小二乘拟合(取权函数wi≡1)

x 1.0 2.0 3.0 4.0 5.0 6.0 7.0 y

-4.447

-0.452

0.551

0.048

-0.447

0.549

4.552

1、建立主程序文件

x=1.0:1.0:7.0;

y=[-4.447,-0.452,0.551,0.048,-0.447,0.549,4.552]; plot(x,y,'*') xlabel 'x 轴' ylabel 'y 轴' title '散点图' hold on m=6;n=3; A=zeros(n+1); for j=1:n+1 for i=1:n+1 for k=1:m+1

A(j,i)=A(j,i)+x(k)^(j+i-2) end end end;

B=[0 0 0 0]; for j=1:n+1 for i=1:m+1

{}

n

k k

x 0=

B(j)=B(j)+y(i)*x(i)^(j-1)

end

end

B=B';

a=inv(A)*B;

x=[1.0:0.0001:7.0];

z=a(1)+a(2)*x+a(3)*x.^2+a(4)*x.^3;

plot(x,z)

legend('离散点','y=a(1)+a(2)*x+a(3)*x.^2+a(4)*x.^3') title '拟合图'

2、在命令窗口输入指令并运行:

三、复化辛普森法计算积分

例题:利用复化辛普森公式计算积分:xdx

x ln 1

1、建立M 文件

function y=f(x)

y=sqrt(x)*log(x);

2、建立M 文件

function Tn=simp(a,b,n)

h=(b-a)/n;

for k=0:n

x(k+1)=a+k*h; if x(k+1)==0 x(k+1)=10^(-10); end end

T1=h/2*(f(x(1))+f(x(n+1))); for i=2:n

F(i)=h*f(x(i)); end

T2=sum(F); Tn=T1+T2;

3、在命令窗口输入指令并运行:

四、LU 分解法

例题:用LU 分解法解方程组,Ax b =其中

⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=311-2421-17A ,⎥⎥

⎥⎦⎤

⎢⎢⎢⎣⎡=213b

1、建立M 文件

function LU(A,b) %A 为系数矩阵,b 为右端项矩阵 [m,n]=size(A); %初始化矩阵A ,b ,L 和U n=length(b); L=eye(n,n); U=zeros(n,n);

U(1,1:n)=A(1,1:n); %开始进行LU 分解 L(2:n,1)=A(2:n,1)/U(1,1); for k=2:n

U(k,k:n)=A(k,k:n)-L(k,1:k-1)*U(1:k-1,k:n);

L(k+1:n,k)=(A(k+1:n,k)-L(k+1:n,1:k-1)*U(1:k-1,k))/U(k,k); end

L %输出L 矩阵 U %输出U 矩阵

y=zeros(n,1); %开始解方程组Ux=y y(1)=b(1); for k=2:n

y(k)=b(k)-L(k,1:k-1)*y(1:k-1); end x=zeros(n,1); x(n)=y(n)/U(n,n); for k=n-1:-1:1

x(k)=(y(k)-U(k,k+1:n)*x(k+1:n))/U(k,k);

相关文档
最新文档