微分计算方法Word格式.docx
- 文档编号:4109037
- 上传时间:2023-05-02
- 格式:DOCX
- 页数:25
- 大小:311.31KB
微分计算方法Word格式.docx
《微分计算方法Word格式.docx》由会员分享,可在线阅读,更多相关《微分计算方法Word格式.docx(25页珍藏版)》请在冰点文库上搜索。
3.工作空间管理窗口(workspace)
4.当前路径窗口(currentdirectory)
(二)、具体练习
1、简单矩阵
的输入步骤。
2、画出衰减振荡曲线
及其它的包络线
。
的取值范围是
3、画出
所表示的三维曲面。
4、复数矩阵的生成及运算.
4、实验方法、步骤
1、简单矩阵
(1)在键盘上输入下列内容
A=[2,6,3;
4,7,5;
3,8,9]
(2)按【Enter】键,指令被执行。
(3)在指令执行后,MATLAB指令窗中将显示结果
t=0:
pi/50:
4*pi;
y0=exp(t/3);
y=exp(t/3).*sin(2*t);
plot(t,y,'
-r'
t,y0,'
:
b'
t,-y0,'
)
grid
clear;
x=-8:
0.5:
8;
y=x'
;
X=ones(size(y))*x;
Y=y*ones(size(x));
R=sqrt(X.^2+Y.^2)+eps;
%<
5>
Z=cos(R)./R;
%<
6>
surf(X,Y,Z);
colormap(cool)
xlabel('
x'
),ylabel('
y'
),zlabel('
z'
4、复数矩阵的生成及运算
A=[5,3;
2,8]-[7,8;
3,9]*i
B=[1+4i,2+5i;
8+3*i,4+2*i]
C=A*B
5、实验数据记录与分析
1、
2、
3、
4、
6、实验结论
通过本节课实验,我初步熟悉Matlab的编程环境,认识了其中的命令窗口、命令
历史窗口、工作空间管理窗口以及当前路径窗口,并学习了简单的运算操作。
在这个过程中,我掌握了用Matlab执行命令做一些简单函数的图像。
虽然是初步接触,但是我觉得自己做得还不错,下次继续努力!
指导教师评语和成绩评定
指导教师签字:
年月日
插值算法
2012年9月27日
WINxp操作系统、Matlab
设计一个程序,通过键盘指令输入参数,可以实现Taylor插值方法、线性插值方法、抛物插值方法以及一般情形的Lagrange插值方法的程序。
使学生掌握插值算法的基本理论,并提高学生在程序设计中发现问题、分析问题和解决问题的能力。
1、确定方程x3-x+4=0的实根的分布情况。
2、已知函数值x={012345678910},y={00.791.532.192.713.033.272.893.063.193.29}和边界条件s'
(0)=0.8s'
(10)=0.2,求三次样条插值函数的图形.
3、用牛顿迭代法求解方程组:
x1^2+x2^2=4;
x1^2-x2^2=1。
4、已知:
sin0.32=0.314567,sin0.34=0.333487,sin0.36=0.352274,用抛物插值计算sin0.3367。
1、在MATLAB工作窗口输入x=-4:
0.1:
4;
y=x.^3-x+4;
plot(x,y)
grid,gtext('
y=x^3-x+4'
2、输入xx=1:
10;
yy=spline(x,y,xx);
>
plot(x,y)
3、输入x0=1;
y0=1;
n=10;
tol=1e-6;
x
(1)=x0;
y
(1)=y0;
i=1;
u=[11];
k
(1)=1;
while(norm(u)>
tol*norm([x(i),y(i)]'
))
A=2*[x(i),y(i);
x(i),-y(i)];
b=[4-x(i)^2-y(i)^2,1-x(i)^2+y(i)^2]'
u=A\b;
x(i+1)=x(i)+u
(1);
y(i+1)=y(i)+u
(2);
i=i+1;
k(i)=i;
if(i>
n)error('
nisfull'
);
end
[k'
x'
y'
]
4、x=[0.32;
0.34;
0.36];
y=[0.314567;
0.333487;
0.352274];
a=0.3367;
a=polyfit(x,y,2)
t=0.3367;
s=[t^2;
t;
1]
ans
1、
3、
通过本次试验操作,我进一步了解了matlab的上机操作,通过键盘指令输入参数,实现Taylor插值方法、线性插值方法、抛物插值方法以及一般情形的Lagrange插值方法的程序。
在做题的过程中,不免会遇到很多问题,不过经过努力和同学们一起探讨,程序一步步都成功运行了。
课后我会多加练习,争取更熟练的掌握插值算法。
数值积分与数值微分
2012年10月25日
1.掌握复合梯形法求积分、复合辛普生法方法求积分公式的程序设计
2.掌握Romberg积分的用法。
3.掌握高斯公式的程序设计
1)由
,
所围成的平面区域,用复合梯形法求平面区域的面积。
2)估计用辛普森公式计算定积分
的值I和递归次数n。
3)用两点高斯–勒让德积分公式计算
d
,并将计算结果与精确值进行比较,求出绝对误差。
1)x=-3:
0.001:
3;
F1=sin(x);
F2=cos(x);
plot(x,F1,'
r:
'
x,F2,'
b-'
),axis([-1,pi/4+1,-1.5,1.5]),
),ylabel('
),
title('
y=sinx,y=cosx和x=-1及x=0.5所围成的平面区域的图形'
symsx
f1=cos(x)-sin(x);
f2=-f1;
S1=int(f1,x,-1,pi/4);
S2=int(f2,x,pi/4,0.5);
S=S1+S2,Sjg=double(S)
2)symsx
L=inline('
exp(sin(x))'
[QS,FCNTS]=quad(L,-pi/4,pi/4,1.e-4,2)
3)x1=-1/sqrt(3);
x2=1/sqrt(3);
y1=2/(3+x1);
y2=2/(3+x2);
G=y1+y2
f=int(2/(3+x),x,-1,1);
Fjg=double(fi)
Gjq=double(abs(fi-G2))
1)S=sin
(1)-cos(1/2)-cos
(1)-sin(1/2)+2*2^(1/2)
Sjg=1.7726
2)[QS,FCNTS]=quad(L,-pi/4,pi/4,1.e-4,2)
9-0.78539816344.26596866e-010.2506021480
11-0.35880129707.17602594e-010.7327015293
130.35880129704.26596866e-010.7339475547
QS=1.7173
FCNTS=13
3)G=1.3846Fjg=0.4055Gjq=5.9703e-05
6、实验结论
本节实验我学会了利用复合梯形法、复合辛普生法方法求积分,在学习的时候简单地进行了程序设计,锻炼了求积分的快捷方法,也学习了更深刻的定理公式。
此外,我们还学习了Romberg积分的用法,练习了高斯公式的程序设计,在以前的基础上进步许多,但是问题也暴露不少,例如一些函数的用法,特殊函数的名称等,在这些方面需要进一步提升。
常微分方程差分方法
2012年11月8日
1.编写程序实现Euler求解方法及改进Euler求解方法
2.掌握龙格-库塔方法的用法
3.掌握方程组和高阶方程的程序实现
1)用向后欧拉公式求解区间
上的初值问题
2)判断下列线性方程组解的情况,并求出该解。
1)编写程序
function[X,Y,n,P]=Heuler1(funfcn,x0,b,y0,h,tol)
n=fix((b-x0)/h);
X=zeros(n+1,1);
Y=zeros(n+1,1);
k=1;
X(k)=x0;
Y(k,:
)=y0;
Y1(k,:
clc,x0,h,y0
fori=2:
n+1
X(i)=x0+h;
Y(i,:
)=y0+h*feval(funfcn,x0,y0);
Y1(i,:
)=y0+h*feval(funfcn,X(i),Y(i,:
));
Wu=abs(Y1(i,:
)-Y(i,:
whileWu>
tol
p=Y1(i,:
)=y0+h*feval(funfcn,X(i),p);
Y(i,:
)=p;
end
x0=x0+h;
y0=Y1(i,:
plot(X,Y,'
ro'
gridon
自变量X'
因变量Y'
用向后欧拉公式计算dy/dx=f(x,y),y(x0)=y0在[x0,b]上的数值解'
X=X(1:
n+1);
Y=Y(1:
n+1,:
n=1:
n+1;
P=[n'
X,Y]
输入
S1=dsolve('
Dy=8*x-3*y-7'
'
y(0)=1'
x0=0;
b=2;
tol=1.e-1;
subplot(2,1,1)
h1=0.01;
[X1,Y1,n,P1]=Heuler1(@funfcn,x0,b,y0,h1,tol)
holdon
S2=8/3*X1-29/9+38/9*exp(-3*X1),plot(X1,S2,'
legend('
h=0.01用向后欧拉公式计算dy/dx=8x-3y-7,y(0)=1在[0,2]上的数值解'
holdoff
2)编写程序
function[RA,RB,n]=jiepb(A,b)
B=[Ab];
n=length(b);
RA=rank(A);
RB=rank(B);
cha=RB-RA;
ifcha>
0,
disp('
RA~=RB,方程组无解'
return
ifRA==RB
ifRA==n
RA=RB=n,方程组有唯一解'
else
disp('
RA=RB<
n,方程组有无穷多解'
A=[25-15;
312-7;
41-36;
3-24-7];
b=[0;
2;
0;
1];
[RA,RB,n]=jiepb(A,b)
X=A\b
1)x0=
0
h=
.010*********
y0=
1
2)RA=RB=n,方程组有唯一解
RA=4
RB=4
n=4
X=0.1647
0.1511
-0.2733
-0.2716
本次实验重点学习了求解常微分方程的差分方法,在求解过程中用到了Euler
求解方法及改进的Euler求解方法,并且可以用两个方法求解比较不同之处,看到改进后的明显效果。
同时,我们还学习了龙格-库塔方法的用法及解方程组和高阶方程的程序实现,通过编写、运行程序自己动手操作熟练掌握matlab解方程的应用。
方程求根的迭代法
2012年11月29日
1.掌握二分法与牛顿法的基本原理及应用
2.掌握牛顿法、弦截法的程序设计并用具体例子加以实现
1)确定方程
的实根的分布情况,画出函数在开区间(-4,4)内的分布情况。
2)求x5-2x+3=0在0.5附近的根,精确到4位小数.
1)x=-4:
y=x.^2-2*x;
y=x^2-2x'
2)编写程序function[k,piancha,xdpiancha,xk,yk]=diedai2(x0,tol,ddmax)
fori=1:
ddmax
x(i+1)=fun(x(i));
piancha=abs(x(i+1)-x(i));
xdpiancha=piancha/(abs(x(i+1))+eps);
xk=x(i);
yk=fun(x(i));
[(i-1)pianchaxdpianchaxkyk]
if(piancha<
tol)|(xdpiancha<
tol)
k=i-1;
return;
ifi>
ddmax
迭代次数超过给定的最大值ddmax'
[(i-1)pianchaxdpianchaxkyk];
return;
P=[(i-1),piancha,xdpiancha,xk,yk]'
[k,piancha,xdpiancha,xk,yk]=diedai2(0.5,1e-4,15)
1)
2)ans=
1.00000.75000.60001.25004.0625
ans=
2.00002.81250.69234.062524.6289
3.000020.56640.835124.6289655.8408
1.0e+005*
0.00000.00630.00000.00664.3144
1.0e+011*
0.00000.00000.00000.00001.8614
1.0e+022*
0.00000.00000.00000.00003.4648
1.0e+045*
0.00000.00000.00000.00001.2005
1.0e+090*
0.00000.00000.00000.00001.4412
1.0e+180*
0.00000.00000.00000.00002.0771
0.00002.07710.00002.0771Inf
11InfNaNInfInf
12NaNNaNInfInf
13NaNNaNInfInf
14NaNNaNInfInf
15NaNNaNInfInf
迭代次数超过给定的最大值ddmax
k=
15
piancha=
NaN
xdpiancha=
xk=
Inf
yk=
本次实验我先学习了二分法与牛顿法的基本原理,了解其原理后,应用此原理解决微分方程,并且大大提高了其精度;
学习了牛顿法、弦截法的程序设计后应用到实际例子中去,在做题中锻炼应用牛顿法的能力,加强了对该公式的熟练运用,记忆起来更为方便。
由于课后练习试验次数不多,做起来有点生疏,需要多加练习,熟练掌握。
线性方程组的迭代法
2012年12月13日
设计程序实现雅可比迭代法,高斯-赛德尔迭代法等算法。
掌握方程求根的基本理论。
并用实例在计算机上计算。
(1)用判别雅可比迭代收敛性的MATLAB主程序,判别由下列方程组的雅可比迭代产生的序列是否收敛?
(2)用高斯-塞德尔迭代定义的MATLAB主程序解下列线性方程组,取初始值
,要求当
时,迭代终止。
(1)A=[9-1-2;
-110-2;
-1-11.5];
a=jspb(A)
(2)编写程序functionX=gsdddy(A,b,X0,P,wucha,max1)
D=diag(diag(A));
U=-triu(A,1);
L=-tril(A,-1);
dD=det(D);
ifdD==0
对角矩阵D奇异,此方程组无解.'
else
对角矩阵D非奇异,方程组有解.'
iD=inv(D-L);
B2=iD*U;
f2=iD*b;
jX=A\b;
X=X0;
[nm]=size(A);
fork=1:
max1
X1=B2*X+f2;
djwcX=norm(X1-X,P);
xdwcX=djwcX/(norm(X,P)+eps);
if(djwcX<
wucha)|(xdwcX<
wucha)
return
k,X1'
k=k+1;
X=X1;
高斯-塞德尔迭代收敛,分解矩阵D,U,L和方程组的精确解jX和近似解X如下:
'
)
高斯-塞德尔迭代的结果没有达到给定精度,且迭代次数已超过max1,精确解jX和迭代向量X如下:
X=X'
jX=jX'
X=X'
D,U,L,jX=jX'
运行结果
A=[813;
692;
145];
b=[6;
4];
X0=[000]'
X=gsdddy(A,b,X0,inf,0.1,10)
(1)系数矩阵A不严格对角占优,此雅可比迭代不一定收敛
a=
-7.0000-8.00002.5000
(2)对角矩阵D非奇异,方程组有解.
0.75000.38890.3389
2
0.57430.43070.3406
X=
0.5743
0.4307
0.3406
学习雅可比迭代法和高斯-赛德尔迭代法求根公式后,我们主要运用这两种求根公式对方程组进行简便求根。
掌握了方程求根的基本理论并用实例在计算机上设计程序实现课本上的求根办法,通过程序的设计实现了更精确的求解,虽然没有达到精确解,不过精确度比以往有很大的提高。
线性方程组的直接法
2012年12月20日
1.熟悉Gauss列主元消去法,编出实用程序。
2.认识选主元技术的重要性。
4.编制程序,用Gauss列主元消去法求解线性方程组
5.编制程序,用平方根法求解线性方程组三角方程组
(1)用高斯消元法和MATLAB程序求解下面的非齐次线性方程组,并且用逆矩阵解方程组的方法验证.
(2)用列主元消元法解线性方程组的MATLAB程序解方程组
(1)编写程序function[RA,RB,n,X]=gaus(A,b)
n=length(b);
RB=rank(B);
zhica=RB-RA;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微分 计算方法