第六章 定积分的应用


说明:为了复习高数,该文章是学习课程 《高等数学》同济版 全程教学视频(宋浩老师)而记录的笔记,笔记来源于本人,一些仿真图的MATLAB代码由本人编写,当然很多matlab里的函数用法参考了类似csdn的网页。若有侵权,请联系本人删除。笔记难免可能出现错误或笔误,若读者发现笔记有错误,欢迎在评论里批评指正。另外,在MATLAB仿真中,y=3*x绕y轴旋转一周的形成的旋转体才是严格画的立体,考虑了各个面,起初好多画的都是旋转的锥面而已。参考书籍: 高等数学上册(同济_第7版)

一、定积分的元素法

在这里插入图片描述

二、定积分的应用

2.1 求平面图形的面积

在这里插入图片描述
在这里插入图片描述
例3代码:

%-----------------------例3的代码-------------------
%----------dohatch的函数文件见  知乎?第五章 定积分?----------
t=0:0.0001:2*pi;
a=4;b=3;
x=a*cos(t);y=b*sin(t);%参数方程
figure(1)
hold on;
plot(x,y,'b');%画图
%将坐标轴放到原点
ax = gca;
ax.XAxisLocation = 'origin'; 
ax.YAxisLocation = 'origin'; 
set(gca,'xtick',-6:1:6,'ytick',-6:1:6);%刻度间隔设为1
text(a,0,'a','color','b','FontSize',15);text(0,b,'b','color','b','FontSize',15);%标注a、b
axis equal;%同样的刻度范围显示出来是等长的
axis([-5 5 -4 4]);%限定显示的范围
xlabel('x');ylabel('y');%给出x、y轴
legend("x^2/a^2+y^2/b^2=1");
%在函数的一个区间内填充阴影
dohatch([x x(end) x(1)],[y y(end) y(1)],30,'r','-.',8,1);
hold off

例4代码(阴影不会画,尴尬):

%-----------------------例4的代码-------------------
clc;clear;close all;
theta=0:2*pi/30:2*pi;
a=4;
rho=a*theta;%ρ=aθ
figure(1)
polar(theta,rho); %绘图
%将坐标轴放到原点
legend(=aθ");

例5的代码:

%-----------------------例5的代码-------------------
clc;clear;close all;
theta=0:2*pi/50:2*pi;
a=4;
rho=a*(1+cos(theta));%ρ=aθ
figure(1)
polar(theta,rho); %绘图
%将坐标轴放到原点
legend(=a(1+cosθ)");

2.2 求旋转体的体积

在这里插入图片描述
在这里插入图片描述

%--------------y=1/2*x绕x轴旋转一周的形成的旋转体的代码-------------
clc;clear;close all;
x=(1:0.01:2).';y=1/2*x;n=120;    % 旋转一周所取点的个数
theta=(0:n)/n*2*pi;
sintheta = sin(theta); sintheta(n+1) = 0;
X=x*ones(1,n+1);Y=y*cos(theta);Z=y*sin(theta);
mesh(X,Y,Z);
hold on
xlabel('x');ylabel('y');zlabel('z');axis equal;
%text(1,0,0,'.','FontSize',20);%个人三维想象力不够,试着画了一点来确定图形是正确的
title('y=1/2*x绕x轴旋转一周的形成的旋转体');
hold off

例6代码:

%--------------例6.y=r/h*x绕x轴旋转一周的形成的旋转体的代码-------------
clc;clear;close all;
x=(0:0.01:4).';y=3/4*x;n=120;    % 旋转一周所取点的个数
theta=(0:n)/n*2*pi;
sintheta = sin(theta); sintheta(n+1) = 0;
X=x*ones(1,n+1);Y=y*cos(theta);Z=y*sin(theta);
mesh(X,Y,Z)
xlabel('x');ylabel('y');zlabel('z');axis equal
text(4,3,3,'K(h,r,r)','color','b','FontSize',15);
text(4.1,0,3,'Q(h,0,r)','color','b','FontSize',15);
title('y=r/h*x绕x轴旋转一周的形成的旋转体');

例7代码:

%--------------例7的代码-------------
clc;clear;close all;
t=(0:0.02:2*pi).';a=4;b=3;
x=a*cos(t);y=b*sin(t);%椭圆的参数方程
n=40;    % 旋转一周所取点的个数
theta=(0:n)/n*2*pi;
sintheta = sin(theta); sintheta(n+1) = 0;
X=x*ones(1,n+1);Y=y*cos(theta);Z=y*sin(theta);
figure(1)
mesh(X,Y,Z);
xlabel('x');ylabel('y');zlabel('z');axis equal
title('x^2/a^2+y^2/b^2=1绕x轴旋转一周的形成的旋转体');

figure(2)
X=x*cos(theta);Y=y*ones(1,n+1);Z=x*sin(theta);
mesh(X,Y,Z);
xlabel('x');ylabel('y');zlabel('z');axis equal
title('x^2/a^2+y^2/b^2=1绕y轴旋转一周的形成的旋转体');

y=3*x绕y轴旋转一周的形成的旋转体的代码:

%--------------y=3*x绕y轴旋转一周的形成的旋转体的代码-------------
clc;clear;close all;
y=(1:0.02:2).';x=1/3*y;
n=50;    % 旋转一周所取点的个数
theta=(0:n)/n*2*pi;
sintheta = sin(theta); sintheta(n+1) = 0;
X=x*cos(theta);Y=y*ones(1,n+1);Z=x*sin(theta);
mesh(X,Y,Z);
hold on
r1=(0:0.02:x(end)).';x1=r1*cos(theta);z1=r1*sin(theta);y1=linspace(y(end),y(end),length(r1));
mesh(x1,y1,z1);
r2=(0:0.02:x(1)).';x2=r2*cos(theta);z2=r2*sin(theta);y2=linspace(y(1),y(1),length(r2));
mesh(x2,y2,z2);
xlabel('x');ylabel('y');zlabel('z');axis equal
title('y=3*x绕y轴旋转一周的形成的旋转体');
hold off

例8的代码:

%--------------例8的代码-------------
clc;clear;close all;
t=(0:0.1:2*pi).';a=4;
x=a*(t-sin(t));y=a*(1-cos(t));%椭圆的参数方程
n=20;    % 旋转一周所取点的个数
theta=(0:n)/n*2*pi;
sintheta = sin(theta); sintheta(n+1) = 0;
X=x*ones(1,n+1);Y=y*cos(theta);Z=y*sin(theta);
figure(1)
plot(x,y);xlabel('x');ylabel('y');%画图先看一下情况
figure(2)
mesh(X,Y,Z);
xlabel('x');ylabel('y');zlabel('z');axis equal
title('摆线绕x轴旋转一周的形成的旋转体');

figure(3)
X=x*cos(theta);Y=y*ones(1,n+1);Z=x*sin(theta);
mesh(X,Y,Z);
hold on
r2=(0:1:x(end)).';x2=r2*cos(theta);z2=r2*sin(theta);y2=linspace(y(1),y(1),length(r2));
mesh(x2,y2,z2);
xlabel('x');ylabel('y');zlabel('z');axis equal
title('摆线绕y轴旋转一周的形成的旋转体');
hold off

2.3 求弧长

在这里插入图片描述
在这里插入图片描述

2.4 定积分在物理学上的应用

   对于初学者,可以去观看并学习宋老师的视频p66 定积分在物理学上的应用,可以加深对微积分的理解,浅显地了解微积分的作用。

  对于复习微积分的朋友,没有必要再去学习观看这一小节的内容了。除了相关研究者或者过目不忘的兄弟外的其他人,无非是回忆起几个物理公式,过段时间后,又会忘得一干二净。

三、针对笔记上的例题的补充说明

   针对如何使用MATLAB画高等数学同济版上册279页的例4的图,有网友给出了回答,这里给出相应链接:请问如何使用MATLAB在极坐标内画函数图形的阴影呢?比如这个例4,怎么在这个封闭图形内填充阴影呢?  大家可以去参考参考,顺便点个赞啥的。他是将极坐标转成笛卡尔坐标,再来画阴影的。
在这里插入图片描述
1.这位网友给出的代码:

clear; clc;
t = linspace(0, 2*pi, 100);
a = 4;
r = a*t;
x = r .* cos(t);
y = r .* sin(t);
plot(x, y)
t0 = 5/4*pi;
t1 = t0 + pi/6;
idx = t >= t0 & t <= t1;
xx = x(idx);
yy = y(idx);
hold on
% 填充
fill([0, xx], [0, yy], 'r');
hold off
% x 轴
annotation(gcf, 'arrow', [0.384 0.95], [0.65 0.65]);
annotation(gcf, 'textbox',[0.9 0.65 0 0], 'String', 'x', 'EdgeColor', 'none');
axis off

2.MATLAB基础薄弱的,不会算annotation里的那个归一化坐标,可以使用dsxy2figxy函数进行转化
(1)dsxy2figxy函数的代码,代码来源于matlab画箭头

function varargout = dsxy2figxy(varargin)
    if length(varargin{1}) == 1 && ishandle(varargin{1}) ...
                                && strcmp(get(varargin{1},'type'),'axes')   
        hAx = varargin{1};
        varargin = varargin(2:end);
    else
        hAx = gca;
    end
    if length(varargin) == 1
        pos = varargin{1};
    else
        [x,y] = deal(varargin{:});
    end
    axun = get(hAx,'Units');
    set(hAx,'Units','normalized'); 
    axpos = get(hAx,'Position');
    axlim = axis(hAx);
    axwidth = diff(axlim(1:2));
    axheight = diff(axlim(3:4));
    if exist('x','var')
        varargout{1} = (x - axlim(1)) * axpos(3) / axwidth + axpos(1);
        varargout{2} = (y - axlim(3)) * axpos(4) / axheight + axpos(2);
    else
        pos(1) = (pos(1) - axlim(1)) / axwidth * axpos(3) + axpos(1);
        pos(2) = (pos(2) - axlim(3)) / axheight * axpos(4) + axpos(2);
        pos(3) = pos(3) * axpos(3) / axwidth;
        pos(4) = pos(4) * axpos(4 )/ axheight;
        varargout{1} = pos;
    end
    set(hAx,'Units',axun)
end

(2)画图的代码可以改为:

clear; clc;
t = linspace(0, 2*pi, 100);
a = 4;
r = a*t;
x = r .* cos(t);
y = r .* sin(t);
plot(x, y)
t0 = 5/4*pi;
t1 = t0 + pi/6;
idx = t >= t0 & t <= t1;
xx = x(idx);
yy = y(idx);
hold on
% 填充
fill([0, xx], [0, yy], 'r');
hold off
% x 轴
p1=[0 0];p2=[32 0];%从点(0,0)到(32,0),根据需要进行调整
[arrowx,arrowy] = dsxy2figxy(gca,[p1(1);p2(1)],[p1(2);p2(2)]);%坐标转换,将坐标进行归一化
[text_x,text_y] = dsxy2figxy(gca,[p1(1);p2(1)-2],[p1(2);p2(2)]);%坐标转换
annotation(gcf, 'arrow', arrowx, arrowy);
annotation(gcf, 'textbox',[text_x(2) text_y(2) 0 0], 'String', 'x', 'EdgeColor', 'none');
axis off

(3)效果图与网友给的一样。如果想把阴影画成斜线。就去下面的网站查看如何使用dohatch函数吧,那里有这个函数的代码。[MATLAB怎么实现对一个函数的特定区间加上阴影](https://www.ilovematlab.cn/thread-431988-1-1.html?_dsign=c0d5669b)
  或者去阅读本人的知乎(链接如下),那里有本人使用该函数的图和代码。
第五章 定积分
3.看懂如下链接后,请结合以下几张图进行思考:【2.2.6 带箭头曲线】Matlab科研论文作图
在这里插入图片描述
在这里插入图片描述
代码可以改为:

clear; clc;
t = linspace(0, 2*pi, 100);
a = 4;
r = a*t;
x = r .* cos(t);
y = r .* sin(t);
plot(x, y)
t0 = 5/4*pi;
t1 = t0 + pi/6;
idx = t >= t0 & t <= t1;
xx = x(idx);
yy = y(idx);
hold on
% 填充
fill([0, xx], [0, yy], 'b');
hold off
%%%%
% ------------x 轴参数(注意理解)------------------
axis([-15 30 -20 10]);
p1=[0 0];p2=[32 0];%从点(0,0)到(32,0),根据需要进行调整
%坐标转换,将点p1、p2实际axes坐标转成figure坐标
% 获取 Axes 位置
posAxes = get(gca, 'Position');
posX = posAxes(1);
posY = posAxes(2);
width = posAxes(3);
height = posAxes(4);
% 获取 Axes 范围
limX = get(gca, 'Xlim');
limY = get(gca, 'Ylim');
minX = limX(1);
maxX = limX(2);
minY = limY(1);
maxY = limY(2);
% 转换坐标
xNew1 = posX + (p1(1) - minX) / (maxX - minX) * width;
xNew2 = posX + (p2(1) - minX) / (maxX - minX) * width;
yNew1 = posY + (p1(2) - minY) / (maxY - minY) * height;
yNew2 = posY + (p2(2) - minY) / (maxY - minY) * height;
% -------------画x轴----------------------------
annotation(gcf, 'arrow', [xNew1 xNew2], [yNew1 yNew2]);
annotation(gcf, 'textbox',[xNew2 yNew2 0 0], 'String', 'x', 'EdgeColor', 'none');
axis off
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知乎云烟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值