matlab数学建模实例

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

第四周

3.

中的三个根。

,在求8] [0,

041.76938.7911.1-)(23=-+=x x x x f

function y=mj()

for x0=0:0.01:8

x1=x0^3-11.1*x0^2+38.79*x0-41.769;

if (abs(x1)<1.0e-8)

x0

end

end

4.分别用简单迭代法、埃特金法、牛顿法求解方程,并比较收敛性与收敛速度(ε分别取10-3、10-5、10-8)。

简单迭代法:

function y=jddd(x0)

x1=(20+10*x0-2*x0^2-x0^3)/20;

k=1;

while (abs(x1-x0)>=1.0e-3)

x0=x1;

x1=(20+10*x0-2*x0^2-x0^3)/20;k=k+1;

end

x1

k

埃特金法:

function y=etj(x0)

x1=(20-2*x0^2-x0^3)/10;

x2=(20-2*x1^2-x1^3)/10;

x3=x2-(x2-x1)^2/(x2-2*x1+x0);

k=1;

while (abs(x3-x0)>=1.0e-3)

x0=x3;

x1=(20-2*x0^2-x0^3)/10;

x2=(20-2*x1^2-x1^3)/10;

x3=x2-(x2-x1)^2/(x2-2*x1+x0);k=k+1;

end

2,020102)(023==-++=x x x x x f

x3

k

牛顿法:

function y=newton(x0)

x1=x0-fc(x0)/df(x0);

k=1;

while (abs(x1-x0)>=1.0e-3)

x0=x1;

x1=x0-fc(x0)/df(x0);k=k+1;

end

x1

k

function y=fc(x)

y=x^3+2*x^2+10*x-20;

function y=df(x)

y=3*x^2+4*x+10;

第六周

1.解例6-4(p77)的方程组,分别采用消去法(矩阵分解)、Jacobi迭代法、Seidel迭代法、松弛法求解,并比较收敛速度。

消去法:

x=a\d

[L,U]=lu(a);

x=inv(U)inv(L)d

Jacobi迭代法:

function s=jacobi(a,d,x0)

D=diag(diag(a));

U=-triu(a,1);

L=-tril(a,-1);

C=inv(D);

B=C*(L+U);

G=C*d;

s=B*x0+G;

n=1;

while norm(s-x0)>=1.0e-8

x0=s;

s=B*x0+G;

n=n+1;

end

n

Seidel迭代法:

function s=seidel(a,d,x0)

D=diag(diag(a));

U=-triu(a,1);

L=-tril(a,-1);

C=inv(D-L);

B=C*U;

G=C*d;

s=B*x0+G;

n=1;

while norm(s-x0)>=1.0e-5

x0=s;

s=B*x0+G;

n=n+1;

end

n

松弛法:

function s=loose(a,d,x0,w)

D=diag(diag(a));

U=-triu(a,1);

L=-tril(a,-1);

C=inv(D-w*L);

B=C*((1-w)*D+w*U);

G=w*C*d;

s=B*x0+G;

n=1;

while norm(s-x0)>=1.0e-8

x0=s;

s=B*x0+G;

n=n+1;

end

n

2.练习MATLAB的常用矩阵语句,就龙格现象函数(p88)练习插值语句interp, spline,并比较。

3.测得血液中某药物浓度随时间的变化值为:

求t=0.45, 1.75, 5.0, 6.0 时的浓度C.

分别用n=4,5,9的拉格朗日插值计算;并用样条函数插值计算,并比较结果。拉格朗日插值:

function s=lagr(n)

x=[0.25 0.5 1.0 1.5 2.0 3.0 4.0 6.0 8.0 10.0];

y=[19.30 18.15 15.36 14.10 12.89 9.32 7.55 5.24 3.86 2.88];

x0=[0.45 1.75 5.0 6.0];

m=length(x0);

for i=1:m

D=abs(x-x0(i));

I=1;

while I<=n+1

for a=1:length(x)

if D(a)==min(D)

c(I)=a;

D(a)=max(D)+1;

break

end

end

I=I+1;

end

b=sort(c);

z=x0(i);

t=0.0;

for k=1:length(b)

u=1.0;

for j=1:length(b)

if j~=k

u=u*(z-x(b(j)))/(x(b(k))-x(b(j)));

end

end

t=t+u*y(b(k));

end

s(i)=t;

end

相关文档
最新文档