数值微积分

Posted zuiaimiusi

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数值微积分相关的知识,希望对你有一定的参考价值。

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

 技术图片

 

以上是关于数值微积分的主要内容,如果未能解决你的问题,请参考以下文章

《数值分析》-- 数值积分

数值微积分

matlab数值微积分

R语言数值积分

Scipy---5.数值积分

Numpy:具有积分限制的数值积分