数值微积分

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

 

 

posted @ 2019-08-03 18:29  zuiaimiusi  阅读(346)  评论(0编辑  收藏  举报