数值微积分
polyval(a,x)
参数
1.多项式的系数向量
2.自变量
hold on a=[9,-5,3,7]; x=-2:0.01:5; f=polyval(a,x); plot(x,f,'LineWidth',2); xlabel('x'); ylabel('f(x)'); set(gca,'FontSize',14); title('9x^{3}-5x^{2}+3x+7 -2<=x<=5'); hold off
polyval()求导后某位置的值
p=[5 0 -2 0 1]; polyval(polyder(p),7);
conv(向量卷积运算)
所谓两个向量卷积,说白了就是多项式乘法。
比如:p=[1 2 3],q=[1 1]是两个向量,p和q的卷积如下:
把p的元素作为一个多项式的系数,多项式按升幂(或降幂)排列,比如就按升幂吧,写出对应的多项式:1+2x+3x^2;同样的,把q的元素也作为多项式的系数按升幂排列,写出对应的多项式:1+x。
卷积就是“两个多项式相乘取系数”。
(1+2x+3x^2)×(1+x)=1+3x+5x^2+3x^3
所以p和q卷积的结果就是[1 3 5 3]。
polyint(p,a) 求积分
参数
p 多项式系数的向量
a 积分后添加的常数项
p=[5 0 -2 0 1]; polyval(polyint(p,3),7);
diff() 求差分
>> x=[1 2 5 2 1]; >> diff(x) ans = 1 3 -3 -1
求斜率
>> x=[1 2]; >> y=[5 7]; >> slope=diff(y)./diff(x) slope = 2
求导数
hold on %求sin(x)的导数 h=0.05; x=0:h:2*pi; y=sin(x); m=diff(y)./diff(x); plot(m,'o--r'); plot(y); hold off
hold on x=-2:0.005:2; y=x.^3; m=diff(y)./diff(x); %求二次导数 特别注意 %假设原来有三个数 求差完 得到 两个差值-->也就是说每次导数完,x的个数会减1 m2=diff(m)./diff(x(1:end-1)); plot(m); plot(m2); hold off
三种不同思想的积分方法
%%hold on %Midpoint Rule 取x中点值求和乘高 h=0.05; x=0:h:2; midpoint=(x(1:end-1)+x(2:end))./2; y=4*midpoint.^3; s=sum(h*y); plot(y); %%hold off %%Trapezoid Rule 把函数值算出来乘高求和 h=0.05;x=0:h:2; y=4*x.^3; trapezoid=(y(1:end-1)+y(2:end))/2; s=h*sum(trapezoid); %% %%Simpson's Rule 比上面两个方法精确 没研究原理 略写
指针传参function handles
function [y]=tem(input,x) y=input(x); plot(x,y,'r--'); xlabel('x'); ylabel('function(x)'); end
>> tem(@sin,0:0.01:2*pi);
integral(被积函数,上限,下限)
>> y=@(x) 1./(x.^3-2*x-5); >> integral(y,0,2) ans = -0.4605