1、matlab求导,diff()函数
1)一阶导数
语法:diff(f(x)):求一阶导数 //diff(f(x),n):求n阶导数(n为具体正整数)
以函数(cos(x)+sin(x)-x^2)的一阶导数为例
一阶导数代码:
yms x;%声明符号变量x
f(x)=cos(x)+sin(x)-x^2;%定义原式子
dy=diff(f(x))%求一阶导数
dy =
cos(x) - 2*x - sin(x)
2)n阶倒数
以函数(cos(x)+sin(x)-x^2)二三阶倒数为例
二三阶导数代码:
syms x;%声明符号变量x
f(x)=cos(x)+sin(x)-x^2;%定义原式子
dy1=diff(f(x),2)
% pretty(dy1)
dy2=diff(f(x),3)
dy1 =
- cos(x) - sin(x) - 2
dy2 =
sin(x) - cos(x)
2、matlab求偏导,diff()函数
语法:diff(f(x)):求一阶导数 //diff(f(x),n):求n阶导数(n为具体正整数)
以函数(f(x1,x2)=sin(x1)+exp(x2))求解x1和x2偏倒为例
1)一阶偏导
x1求偏导代码:
syms x1 x2;%声明符号变量x1\x2
f(x1,x2)=sin(x1)+exp(x2);%定义原函数
%求一阶偏导
dy1=diff(f(x1,x2),x1)
dy1 =
cos(x1)
x2求偏导代码:
syms x1 x2;%声明符号变量x1\x2
f(x1,x2)=sin(x1)+exp(x2);%定义原函数
dy2=diff(f(x1,x2),x2)
dy2 =
exp(x2)
2)n阶偏导
x1二阶偏导代码:
syms x1 x2;%声明符号变量x1\x2
f(x1,x2)=sin(x1)+exp(x2);%定义原函数
dy3=diff(f(x1,x2),x1,2)
dy3 =
-sin(x1)
x2三阶偏导代码:
syms x1 x2;%声明符号变量x1\x2
f(x1,x2)=sin(x1)+exp(x2);%定义原函数
dy4=diff(f(x1,x2),x2,3)
dy4 =
exp(x2)
3、matlab求积分,int()函数
1)不定积分求解
语法:牛顿——莱布尼兹公式求解积分
代码:
syms x;%声明变量x
y1=x^2;%定义原式
fy1=int(y1,x)%不定积分
fy1 =
x^3/3
2)定积分求解
代码:
syms x;%声明变量x
y1=x^2;%定义原式
% fy1=int(y1,x)%不定积分
fy2=int(y1,x,0,1)%定积分
fy2 =
1/3
syms x;%声明变量x
y1=x^2;%定义原式
% fy1=int(y1,x)%不定积分
% fy2=int(y1,x,0,1)%定积分
fy3=int(y1,x,-inf,+inf)
fy3 =
Inf
4、数值积分
1)梯形法计算积分 trapz()函数
语法:I=trapz(x,y) %适用于被积函数为离散数据
代码:
format long%显示格式设置
fy=@(x)sin(x)./x%@句柄的用法
x1=pi/6:pi/100:pi;
y1=fy(x1);
%绘图
bar(y1)
%定积分
s1=trapz(x1,y1)
fy =
包含以下值的 function_handle:
@(x)sin(x)./x
s1 =
1.336217975152237
视图效果:
2)基于变步长辛普森计算积分
语法:[I,n]=quad(‘fname’,a,b,Tol,trace)%I积分值/n积分函数调用次数
参数介绍fname:被积函数名 a,b积分界限 TOL精度 trace是否展现积分过程
基于变步长辛普森计算积分与梯形法计算积分对比代码:
fy=@(x)sin(x)./x%被积函数
s=quad(fy,pi/6,pi,0.00001,1)%变步长辛普森计算积分
x1=pi/6:pi/100:pi;
y1=fy(x1);
s1=trapz(x1,y1)%梯形法计算积分
fy =
包含以下值的 function_handle:
@(x)sin(x)./x
9 0.5235987756 7.10994777e-01 0.6190188047
11 1.2345935530 1.19600432e+00 0.6261906929
13 2.4305978762 7.10994777e-01 0.0910383671
s =
1.336247864730292
s1 =
1.336217975152237
5、数值二重积分 dblquad()函数
语法:I=dblquad(f,a,b,c,d,tol,method),求f(x,y)在[a,b]、[c,d]区域上的二重积分
TOL精度 Method:计算一维积分(quad/quadl)
代码:
f=@(x,y)exp(x.^2).*sin(x.^2+y.^2)
I1=dblquad(f,-2,2,-1,1)
I2=dblquad(f,-2,2,-1,1,1e-9,'quadl')
I3=dblquad(f,-2,2,-1,1,1e-9,'quad')%默认
f =
包含以下值的 function_handle:
@(x,y)exp(x.^2).*sin(x.^2+y.^2)
I1 =
-9.400793312509709
I2 =
-9.400792842118586
I3 =
-9.400792842296315
6、数值积分 integral()函数
语法:q = integral(fun,xmin,xmax,Name,Value)
代码:
fun = @(x) exp(-x.^2).*log(x).^2;
q = integral(fun,0,Inf)
q1 = integral(fun,0,Inf,'RelTol',1e-9)
q =
1.947522220295560
q1 =
1.947522180314255
7、二重积分 integral2()函数
语法:q = integral2(fun,xmin,xmax,ymin,ymax,Name,Value)
代码:
fun = @(x,y) 1./( sqrt(x + y) .* (1 + x + y).^2 );
q1= integral2(fun,0,1,0,1)
q2= integral2(fun,0,1,0,1,'RelTol',1e-9)
q1 =
0.369530192486637
q2 =
0.369530180500556