一.函数的表示方式
例如需要表示函数f(x)=9*x^3-5*x^2+7,定义域为(-2,5)
则可用下列程序表示
p=[9,-5,0,7]; %表示各项系数,由左到右依次从高次项最后到常数项
x=-2:0.01:5;
f=polyval(p,x);%表示f(x)=9*x^3-5*x^2+7
plot(x,f,'LineWidth',2);%绘出该函数图像
二.函数求导
通过对函数f(x)=(20*x^3-7*x^2+5*x+10)*(4*x^2+12*x-3)的一次求导熟悉主要流程
a1=[20,-7,5,10];a2=[4,12,-3];%列出各项系数
a=conv(a1,a2); %通过该函数将两个多项式系数结合
x=-2:0.01:1;
f=polyval(a,x);
a3=polyder(a);%通过该操作进行求导运算
f1=polyval(a3,x);
plot(x,f,'b--',x,f1,'r');
下例是多次求导过程,以y=x^3为例,注:end-1意为x经过求导后次方缩小一位,同样若经历二次求导则为end-2
%多次微分
x=-2:0.001: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);
三. 函数数值微分
数值的微分,基于导数定义,以y=sinx函数在pi/2处的微分为例
x0=pi/2;
h=logspace(0.1,log10(0.1^7),7);
x=[x0,x0+h];
y=[sin(x0) sin(x0+h)];
m=diff(y)./diff(x);%diff()为求数列相邻两个数后者于前者的差
四. 函数求导误差的图像表达
以函数y=sinx为例,精度为0.1,0.01,0.001,0.0001
g=colormap("turbo");%定义线条颜色
hold on;
for i=1:4
x=0:power(10,-i):pi;
y=sin(x);
m=diff(y)./diff(x);
plot(x(1:end-1),m,'Color',g(i,:));%end-1意为x经过求导后次方缩小一位,同样若经历二次求导则为end-2
end
set(gca,'XLim',[0,pi/2]);
set(gca,'YLim',[0,1.2]);
五. 不定积分方法
以f(x)=5*x^4-2*x^2+1为例,假设其积分后的常数项为1
x=0:0.01:7;
p=[5 0 -2 0 1];
y=polyint(p,1); %假设积分后常数项为1
plot(x,polyval(y,x));
六,三种定积分方法
以下三种方法均以y=4x^3为例,其中第三种辛普森法精度最高,但需要自己列式。
%使用矩形预测积分 以y=4x^3为例
h=0.001;
x=0:h:2;
midpoint=(x(1:end-1)+x(2:end))./2;%错位相加即可得到(x1+x2)/2+(x2+x3)/2...取的中值
y=4*midpoint.^3;
s=sum(h*y);
%用梯形预测积分
h=0.001;
x=0:h:2;
y=4*x.^3;
s=h*trapz(y);%trapz函数替代了trapezoid=(y(1:end-1)+y(2:end))/2; s=h*sum(trapezoid);
%辛普森积分法
h=0.001;
x=0:h:2;
y=4*x.^3;
s=h/3*(y(1)+2*sum(y(3:2:end-2))+4*sum(y(2:2:end))+y(end));
七.通过integral实现一次积分,二次积分以及三次积分
一次积分
%计算f(x)=1/(x^3-2*x-5)的(0,2)的积分
y=@(x) 1./(x.^3-2*x-5);
integral(y,0,2);%利用integral
二次积分
f=@(x,y) y.*sin(x)+x.*cos(y);
integral2(f,pi,2*pi,0,pi)
三次积分
f=@(x,y,z) y.*sin(x)+z.*cos(y);
integral3(f,0,pi,0,1,-1,1)