- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
使用MATLA进行数值计算
数值计算
与符号计算相比,数值计算在科研和工程中的应用更为广泛。MATLAB也正是凭借其卓越的数值计算能力而称雄世界。随着科研领域、工程实践的数字化进程的深入,具有数字化本质的数值计算就显得愈益重要。
较之十年、二十年前,在计算机软硬件的支持下当今人们所能拥有的计算能力已经得到了巨大的提升。这就自然地激发了人们从新的计算能力出发去学习、理解概念的欲望,鼓舞了人们用新计算能力试探解决实际问题的雄心。
鉴于当今高校本科教学偏重符号计算和便于手算简单示例的实际,也出于帮助读者克服对数值计算生疏感的考虑,本章在内容安排上仍从“微积分”开始。这一方面与第2章符号计算相呼应,另方面通过“微积分”说明数值计算离散本质的微观和宏观影响。
为便于读者学习,本章内容的展开脉络基本上沿循高校数学教程,而内容深度力求控制在高校本科水平。考虑到知识的跳跃和交叉,本书对重要概念、算式、指令进行了尽可能完整地说明。
数值微积分
近似数值极限及导数
【例4.1-1】设,,试用机器零阈值eps替代理论0计算极限,。
x=eps;
L1=(1-cos(2*x))/(x*sin(x)),
L2=sin(x)/x,
L1 =
0
L2 =
1
syms t
f1=(1-cos(2*t))/(t*sin(t));
f2=sin(t)/t;
Ls1=limit(f1,t,0)
Ls2=limit(f2,t,0)
Ls1 =
2
Ls2 =
1
【例4.1-2】已知,求该函数在区间 中的近似导函数。
d=pi/100;
t=0:d:2*pi;
x=sin(t);
dt=5*eps;
x_eps=sin(t+dt);
dxdt_eps=(x_eps-x)/dt;
plot(t,x,LineWidth,5)
hold on
plot(t,dxdt_eps)
hold off
legend(x(t),dx/dt)
xlabel(t)
图 4.1-1 增量过小引起有效数字严重丢失后的毛刺曲线
x_d=sin(t+d);
dxdt_d=(x_d-x)/d;
plot(t,x,LineWidth,5)
hold on
plot(t,dxdt_d)
hold off
legend(x(t),dx/dt)
xlabel(t)
图 4.1-2 增量适当所得导函数比较光滑
【例4.1-3】已知,采用diff和gradient计算该函数在区间 中的近似导函数。。
clf
d=pi/100;
t=0:d:2*pi;
x=sin(t);
dxdt_diff=diff(x)/d;
dxdt_grad=gradient(x)/d;
subplot(1,2,1)
plot(t,x,b)
hold on
plot(t,dxdt_grad,m,LineWidth,8)
plot(t(1:end-1),dxdt_diff,.k,MarkerSize,8)
axis([0,2*pi,-1.1,1.1])
title([0, 2\pi])
legend(x(t),dxdt_{grad},dxdt_{diff},Location,North)
xlabel(t),box off
hold off
subplot(1,2,2)
kk=(length(t)-10):length(t);
hold on
plot(t(kk),dxdt_grad(kk),om,MarkerSize,8)
plot(t(kk-1),dxdt_diff(kk-1),.k,MarkerSize,8)
title([end-10, end])
legend(dxdt_{grad},dxdt_{diff},Location,SouthEast)
xlabel(t),box off
hold off
图 4.1-3 diff和gradient求数值近似导数的异同比较
数值求和与近似数值积分
【例 4.1-4】求积分,其中。
clear
d=pi/8;
t=0:d:pi/2;
y=0.2+sin(t);
s=sum(y);
s_sa=d*s;
s_ta=d*trapz(y);
disp([sum求得积分,blanks(3),trapz求得积分])
disp([s_sa, s_ta])
t2=[t,t(end)+d];
y2=[y,nan];
stairs(t2,y2,:k)
hold on
plot(t,y,r,LineWidth,3)
h=stem(t,y,LineWidth,2);
文档评论(0)