Matlab学习笔记——数值微积分

多项式的表示

matlab中多项式用向量的形式表示
例如:f(x)=5 x 3 x^3 x3+ x 2 x^2 x2+3
matlab可用 m=[5 1 0 3] 来表示

polyval()求值计算

polyval(fx,x) 求x对应的fx的值

x=0:0.01:5;
fx=[5 1 0 3];
m=polyval(fx,x);
plot(x,m,'LineWidth',1);
xlabel('x');
ylabel('f(x)');
set(gca,'FontSize',10);


切记别直接用plot(x,fx)画图,否则会提示 plot向量长度必须相同

polyder()多项式微分

polyder(y)对y进行微分
polyder(a,b)对a和b的乘积进行微分

a=[3 2 0 1];
b=[4 0 8 3];
x=0:0.1:5;
p=conv(a,b);
y1=polyder(p);%返回p的导数
y2=polyder(a,b);%返回a,b乘积的导数
subplot(2,1,1)
plot(x,polyval(y1,x));
subplot(2,1,2)
plot(x,polyval(y2,x));

此处conv(a,b)是求a,b函数乘积,但是conv()用的时候维数必须相同。

polyint()多项式微分

polyint(a)对a进行积分,常数项为0
polyint(a,b)对a进行积分,常数项为b

x=0:0.1:5;
p=[5 1 0 3];
plot(x,polyval(polyint(p,1),x));

diff()差分和近似导数

diff(x)对x向量进行求差值
diff(x,n)对x向量求n次差值
diff(x,n,dim) dim用来指定维数

x=[1 3 5;7 9 11;13 15 17];
diff(x,1,1)
diff(x,1,2)


还可用diff(y)./diff(x)来近似求导数

exercise:

hold on
for i=1:3
    x=0:power(10,-i):5;
    fx=exp(-x).*sin(x.*x/2);
    m=diff(fx)./diff(x);
    plot(x(1:end-1),m);
end
hold off
set(legend('h=0.1','h=0.01','h=0.001'));


这里在画图的时候plot(x(1:end-1),m),x的组数要少1,因为在求差值的时候,n组数据计算之后为n-1组数据

数值积分

Midpoint Rule

中点取值,求矩形面积

h=0.01;
x=0:h:2*pi;
midpoint=(x(1:end-1)+x(2:end))./2;
y=sin(midpoint);
s=sum(h*y)

Trapezoid Rule

求梯形面积

h=0.01;
x=0:h:2*pi;
y=sin(x);
s=h*trapz(y)

Simpson’s Rule

h / 3 h/3 h/3*(f0+4f1+f2)

h=0.01;
x=0:h:2*pi;
y=sin(x);
s=h/3*(y(1)+4*sum(y(2:2:end))+2*sum(y(3:2:end-2)))


这里都是很小的数,接近0
在这里插入图片描述

integral数值积分

integral(fx,x1,x2)对函数fx在x1到x2的范围上积分

简单的积分

y=@(x) sin(x);
integral(y,0,2*pi)

带参数的积分

y=@(x,a) sin(x)+a;
integral(@(x) y(x,1),0,2*pi)        %给a的参数为5

integral2()两重积分

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


如有错误请指正,感谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值