matlab数值分析例题

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

1、 在MATLAB 中用Jacobi 迭代法讨论线性方程组,

1231231234748212515

x x x x x x x x x -+=⎧⎪

-+=-⎨⎪-++=⎩

(1)给出Jacobi 迭代法的迭代方程,并判定Jacobi 迭代法求解此方程组是否收敛。

(2)若收敛,编程求解该线性方程组。 解(1):A=[4 -1 1;4 -8 1;-2 1 5] %线性方程组系数矩阵 A =

4 -1 1 4 -8 1 -2 1 5

>> D=diag(diag(A)) D =

4 0 0 0 -8 0 0 0 5

>> L=-tril(A,-1) % A 的下三角矩阵 L =

0 0 0 -4 0 0 2 -1 0

>> U=-triu(A,1) % A 的上三角矩阵 U =

0 1 -1 0 0 -1 0 0 0

B=inv(D)*(L+U) % B 为雅可比迭代矩阵 B =

0 0.2500 -0.2500 0.5000 0 0.1250

0.4000 -0.2000 0

>> r=eigs(B,1) %B 的谱半径

r =

0.3347 < 1

Jacobi迭代法收敛。

(2) 在matlab上编写程序如下:

A=[4 -1 1;4 -8 1;-2 1 5];

>> b=[7 -21 15]';

>> x0=[0 0 0]';

>> [x,k]=jacobi(A,b,x0,1e-7)

x =

2.0000

4.0000

3.0000

k =

17

附jacobi迭代法的matlab程序如下:

function [x,k]=jacobi(A,b,x0,eps)

% 采用Jacobi迭代法求Ax=b的解

% A为系数矩阵

% b为常数向量

% x0为迭代初始向量

% eps为解的精度控制

max1= 300; %默认最多迭代300,超过300次给出警告D=diag(diag(A)); %求A的对角矩阵

L=-tril(A,-1); %求A的下三角阵

U=-triu(A,1); %求A的上三角阵

B=D\(L+U);

f=D\b;

x=B*x0+f;

k=1; %迭代次数

while norm(x-x0)>=eps

x0=x;

x=B*x0+f;

k=k+1;

if(k>=max1)

disp('迭代超过300次,方程组可能不收敛');

return;

end

end

2、设有某实验数据如下:

(1)在MATLAB中作图观察离散点的结构,用多项式拟合的方法拟合一个合适的多项式函数;

(2)在MATLAB中作出离散点和拟合曲线图.

解(1):首先观察离散点的结构,matlab中的程序如下,

x=[-3 -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5 3 ];

>> y=[-3.99 -3.3011 -2.4161 -1.4293 -0.4597 0.37758 1 1.3776 1.5403 1.5707 1.5839 1.6989 2.01]; >> plot(x,y,'r*')

图形如下:

离散点近似如抛物线,所以用二次多项式拟合,所以matlab程序如下:

x=[-3 -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5 3 ];

>> y=[-3.99 -3.3011 -2.4161 -1.4293 -0.4597 0.37758 1 1.3776 1.5403 1.5707 1.5839 1.6989 2.01]; >> s=polyfit(x,y,2);

>> p=poly2str(s,'t')

p =

-0.22214 t^2 + 1 t + 0.74384

(2)做出离散点与拟合曲线的程序如下:

x=[-3 -2.5 -2 -1.5 -1 -0.5 0 0.5 1 1.5 2 2.5 3 ];

>> f=[-3.99 -3.3011 -2.4161 -1.4293 -0.4597 0.37758 1 1.3776 1.5403 1.5707 1.5839 1.6989 2.01]; >> p=polyfit(x,f,2); >> y=polyval(p,x); >> plot(x,f,'r+',x,y,'k'); >> xlabel('x'); >> ylabel('y'); >> title('拟合');

>> gtext(datestr(today))

得出的离散点与拟合曲线图像如下:

3、在MATLAB 中用复合Simpson 公式编程计算 2

21

()I x x dx -=

--⎰

(要求积分精度为510- )

解:matlab 程序如下:

[I,step] = jfSimpson('-x-x^2',-1,2,2,1.0e-5) I =

-4.5000

step =

4

附复合Simpson 程序如下:

function [I,step] = jfSimpson(f,a,b,type,eps) %type = 1 辛普森公式 %type = 2 复合辛普森公式

if (type==2 && nargin==4)

eps=1.0e-4; %缺省精度为0.0001 end

I=0;

switch type case 1,

I=((b-a)/6)*(subs(sym(f),findsym(sym(f)),a)+... 4*subs(sym(f),findsym(sym(f)),(a+b)/2)+... subs(sym(f),findsym(sym(f)),b)); step=1;

case 2, n=2;

h=(b-a)/2; I1=0;

I2=(subs(sym(f),findsym(sym(f)),a)+subs(sym(f),findsym(sym(f)),b))/h; while abs(I2-I1)>eps n=n+1;

h=(b-a)/n; I1=I2; I2=0;

for i=0:n-1 x=a+h*i; x1=x+h;

I2=I2+(h/6)*(subs(sym(f),findsym(sym(f)),x)+... 4*subs(sym(f),findsym(sym(f)),(x+x1)/2)+... subs(sym(f),findsym(sym(f)),x1)); end end I=I2; step=n; end

4、在MATLAB 中用四阶Runge-Kutta 法编程求解微分方程初值问题

()2

3(03)01dy y x x dx y ⎧=-++≤≤⎪⎨⎪=⎩

, 并在MATLAB 中画图比较方程的解析解与R-K 解的结果。

解:第1步:首先先把经典RK4子程序编出来如下,用RK4.m 保存。

相关文档
最新文档