华工数值分析课程设计.docx
- 文档编号:5134689
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:13
- 大小:638.98KB
华工数值分析课程设计.docx
《华工数值分析课程设计.docx》由会员分享,可在线阅读,更多相关《华工数值分析课程设计.docx(13页珍藏版)》请在冰豆网上搜索。
华工数值分析课程设计
华工数值分析课程设计
数值分析课程设计
第一题:
1.设计思路:
我打算用选主元法,先算出每一列,然后把买一列加起来就是结果了。
2.程序清单:
functionx=mat(a,b,flag)
ifnargin<3,flag=0;end
n=length(b);a=[a,b];
fori=1:
(n-1)
[ar,r]=max(abs(a(i:
n,i)));r=r+i-1;
ifr>i
t=a(i,:
);a(i,:
)=a(r,:
);a(r,:
)=t;
end
a((i+1):
n,(i+1):
(n+1))=a((i+1):
n,(i+1):
(n+1))-a((i+1):
n,i)/a(i,i)*a(i,(i+1):
(n+1));
a((i+1):
n,i)=zeros(n-i,1);
ifflag==0,a,end
end
x=zeros(n,1);x(n)=a(n,n+1)/a(n,n);
fori=n-1:
-1:
1
x(i)=(a(i,n+1)-a(i,(i+1):
n)*x((i+1):
n))/a(i,i);
end
3.流程图:
我的例子是九阶对角矩阵对角元素为1,2,3,4,5,6,7,8,9,。
流程如图所示
经过对比知道,所编的程序算的结果和inv的结果一致。
我的方法时间约为0.003*9=0.027秒,而inv方法时间约为0.0031秒,明显inv方法快。
我第二题:
1.设计思路:
我经过limit与求阶方法编程。
2.程序清单:
functionn=qiujie(x0)
k=0;
symsx;
x1=0.99*x-x^2;
h=(abs(x0-x1))/(abs(x0-x))^k;
whilelimit(h,x,x0)==0
k=k+1;
h=(abs(x0-x1))/(abs(x0-x))^k;
end
n=k
function[y,m]=bdd(x,eps)
ifnargin==1
eps=1e-100;
elseifnargin<1
error
return
end
x1=0.99*x-x^2;
n=1;
while(abs(x1-x)>=1e-100)&&(n<1e100)
x=x1;
x1=0.99*x-x^2;
n=n+1;
end
y=x1
m=n
3.流程图:
由所得知,所求阶数为一阶。
第三题:
1.设计思路:
按照题意用三次样条。
从题意分析可知x=4.9与22.9的一阶导数均为0因此带入七组数据即可。
2.程序清单:
functions=sp(x,y,dx0,dxn)
n=length(x)-1;h=diff(x);d=diff(y)./h;a=h(2:
n-1);
b=2*(h(1:
n-1)+h(2:
n));c=h(2:
n);u=6*diff(d);
b
(1)=b
(1)-h
(1)/2;
u
(1)=u
(1)-3*(d
(1)-dx0);
b(n-1)=b(n-1)-h(n)/2;
u(n-1)=u(n-1)-3*(dxn-d(n));
fork=2:
n-1
temp=a(k-1)/b(k-1);
b(k)=b(k)-temp*c(k-1);
u(k)=u(k)-temp*u(k-1);
end
m(n)=u(n-1)/b(n-1);
fork=n-2:
-1:
1
m(k+1)=(u(k)-c(k)*m(k+2))/b(k);
end
m
(1)=3*(d
(1)-dx0)/h
(1)-m
(2)/2;
m(n+1)=3*(dxn-d(n))/h(n)-m(n)/2;
fork=0:
n-1
s(k+1,1)=(m(k+2)-m(k+1))/(6*h(k+1));
s(k+1,2)=m(k+1)/2;
s(k+1,3)=d(k+1)-h(k+1)*(2*m(k+1)+m(k+2))/6;
s(k+1,4)=y(k+1);
end
3.流程图:
可知所求函数为T=-0.008x^3-0.0911x^2+22.8,[4.9,9.1]
T=0.0291x^3-0.1919x^2-1,1888x+20.6,[9.1,13.7]
T=-0.0157x^3+0.2093x^2-1,1091x+13.9,[13.7,18.3]
T=0.0039x^3-0.0071x^2-1,1793x+11.7,[13.7,18.3]
第五题:
1.设计思路:
我设计了精确值与题意的要求,并根据结果进行比较,只对有相同的数值即对1,1.1,。
。
。
,2的值进行对比。
2.程序清单:
function[x,y]=eu(fname,xspan,y0,h)
x=xspan
(1):
h:
xspan
(2);y
(1)=y0;
forn=1:
length(x)-1
y(n+1)=y(n)+h*feval(fname,x(n),y(n));
end
x=x';y=y';
function[x,y]=eu2(fname,xspan,y0,h)
x=xspan
(1):
h:
xspan
(2);y
(1)=y0;
forn=1:
length(x)-1
k1=feval(fname,x(n),y(n));
y(n+1)=y(n)+h*k1;
k2=feval(fname,x(n+1),y(n+1));
y(n+1)=y(n)+h*(k1+k2)/2;
end
x=x';y=y';
function[x,y]=ku(fname,xspan,y0,h)
x=xspan
(1):
h:
xspan
(2);y
(1)=y0;
forn=1:
length(x)-1
k1=feval(fname,x(n),y(n));
k2=feval(fname,x(n)+h/2,y(n)+h/2*k1);
k3=feval(fname,x(n)+h/2,y(n)+h/2*k2);
k4=feval(fname,x(n+1),y(n)+h*k3);
y(n+1)=y(n)+h*(k1+2*k2+2*k3+k4)/6;
end
x=x';y=y';
3.流程图:
精确值如上图。
欧拉法,h=0.025
欧拉法,h=0.1
改进欧拉,h=0.05
改进欧拉h=0.1
龙格法,h-0.1.
比较表格:
X的值
1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
2
精确值
0
0.3459
0.8666
1.6072
2.6204
3.9677
5.7210
7.9639
10.7936
14.3231
18.6831
欧拉h=0.025
0
0.3255
0.8165
1.5164
2.4757
3.7539
5.4201
7.5551
10.2529
14.5847
17.7914
欧拉h=0.1
0
0.2718
0.6848
1.2770
2.0935
3.1874
4.6208
6.4664
8.8091
11.7480
15.3982
改进欧拉h=0.05
0
0.3449
0.8643
1.6031
2.6142
3.9589
5.7092
7.9487
10.7744
14.2993
18.6542
改进欧拉h=0.1
0
0.3424
0.8583
1.5927
2.5983
3.9364
5.6789
7.9092
10.7245
14.2374
18.5789
龙格h=0.1
0
0.3459
0.8666
1.6072
2.6203
3.9676
5.7209
7.9638
10.7935
14.3229
18.6829
由以上表格可知,在相同步长的情况龙格法比改进欧拉法精确,改进欧拉法比欧拉法精确;在相同方法情况,步长越小越精确
心得体会:
经过这次课程设计,我认识到了Matlab作为一种工具对解决数学问题的实用性与强大的可操作性。
虽然在此过程中我认识到自己存在许多不足,但我相信,进过我的不懈努力与老师们的指点,我会做到最好!
。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 华工 数值 分析 课程设计