MATLAB学习笔记(四)微积分

文章中的某些代码和图片来自郭彦甫老师的视频和ppt
在这里插入图片描述

一:多项式微积分

1.1多项式微分

a=[9 -5 3 7];%f(x)多项式
x= -2:0.01:5;%x的取值范围
f=polyval(a,x);%f(x)在x范围内的取值
plot(x,f,‘LineWidth’,2);%画图,线宽取2)
xlabel(‘x’);ylabel(‘f(x)’);%命名
set(gca,‘FontSize’,14);%修改坐标轴的性质
polyder(a);%获得微分后的向量
k=polyval(polyder(a),0)%求f’(0)的值

  • 若函数f(x)=x^3-2x-5,则表示为a=[1 0 -2 -5]
  • polyval(a,x) :求一定范围内的x对应f(x0的取值
  • polyder(a) :求微分之后的向量
    在这里插入图片描述

u=[5 -7 5 10];v=[4 12 -3];
w=conv(u,v);%卷积
x=-2:0.1:1;
f=polyval(w,x);%x值对应的f值
w1=polyder(w);%微分后的向量
f1=polyval(w1,x);%微分后对应的f值
hold on
plot(x,f,‘b:’,‘LineWidth’,2);
plot(x,f1,‘r–’,‘Linewidth’,2);
hold off
legend(‘f(x)’,‘f‘(x)’);

  • 卷积 w=conv(u,v),其中u和v分别是有限长度序列向量,w是u和v的卷积结果序列向量。
  • 在这里插入图片描述

1.2多项式积分

p=[5 0 -2 0 1];
polyint(p,3)% 当k=3时,得到积分后的向量
polyval(polyint(p,3),7)%x=7时的积分值

  • polyint() 积分后的向量

二:数值微积分

2.1数值微分

2.1.1一次微分

x=[1 2 5 2 1]
diff(x) %求前后两个值的差
ans =

 1     3    -3    -1

如果是两个向量

x=[1 2];y=[5,7];
a=diff(y)./diff(x) %点(1,5)和(2,7)的斜率
ans=2

算某一点的斜率

x0=pi/2;
h=0.1;%h的值越小,斜率越精确
x=[x0,x0+h];
y=[sin(x0),sin(x0+h)];
m=diff(y)./diff(x)
m =
-0.0500

算一段区间里的斜率

h=0.5;%h的值越小,斜率越精确
x=0:h:2*pi;
y=sin(x);
m=diff(y)./diff(x);

练习

g=colormap(lines);
hold on
for i=1:3
x=0:power(10,-i):2*pi;
y=sin(x.^2./2);
m=diff(y)./diff(x);
plot(x(1:end-1),m,‘color’,g(i,:));
end
hold off
legend(‘h=0.1’,‘h=0.01’,‘h=0.001’);

在这里插入图片描述

这里是引用

在这里插入图片描述

2.1.2二次、三次微分

x=-2:0.005:2;
y=x.^3;
m=diff(y)./diff(x);
m2=diff(m)./diff(x(1:end-1));
plot(x,y,x(1:end-1),m,x(1:end-2),m2);
xlabel(‘x’,‘FontSize’,18);
ylabel(‘y’,‘FontSize’,18);
legend(‘f(x)=x.^3’,‘f’’(x)’,‘f’’’’(x)’,4);
set(gca,‘FontSize’,18);

在这里插入图片描述

2.2数值积分

2.2.1三种方法

  • Midpoint Rule

在这里插入图片描述
题目:
在这里插入图片描述

h=0.05; %h可换
x=0:h:2; %积分的范围是0到2
midpoint=(x(1:end-1)+x(2:end))./2;%某段的中点
y=4midpoint.^3;
s=sum(h
y) %积分
在这里插入图片描述

  • Trapezoid Rule(用梯形计算)

在这里插入图片描述

h=0.05; %h可换
x=0:h:2; %积分的范围是0到2
y=4x.^3;
s=h
trapz(y) %trapz(y)函数计算相邻y值的平均值
或者
h=0.05; %h可换
x=0:h:2; %积分的范围是0到2
y=4x.^3;
trapezoid=(y(1:end-1)+y(2:end))/2;%计算相邻y值的平均值
s=h
sum(trapezoid)

在这里插入图片描述

  • 辛普森(最准确)
    在这里插入图片描述

h=0.05; %h可换
x=0:h:2; %积分的范围是0到2
y=4x.^3;
s=h/3
(y(1)+2sum(y(3:2:end-2))+…
4
sum(y(2:2:end))+y(end))

在这里插入图片描述
小结:
在这里插入图片描述

2.2.2用MATLAB函数积分

  • @:Function Handles:函数的指针:能用在一个函数里指向另一个函数
  • integral(y,x1,x2)
  • integral2(y,x1,x2,x3,x4)积分范围由外到内
    一重积分
    在这里插入图片描述

y=@x 1./(x.^3-2*x-5); %把要积分的函数用@表示
integral(y,0,2) %积分函数是y,积分区间是0到2

在这里插入图片描述
二重积分
在这里插入图片描述

f=@(x,y) y.*sin(x)+x.cos(y);
integral2(f,pi,2
pi,0,pi)
ans =
-9.8696

三重积分
在这里插入图片描述

f=@(x,y,z) y.*sin(x)+z.*cos(y);
integral3(f,0,pi,0,1,-1,1)
ans =
2.0000

发布了6 篇原创文章 · 获赞 0 · 访问量 209

猜你喜欢

转载自blog.csdn.net/qq_45793719/article/details/104333049