MATLAB | 第四章 | MATLAB的高等数学计算 | 基础

4.1 求极限

limit(f,x,a)

求符号函数f(x)趋近于a极限值

limit(f,a)

求符号函数f(x)趋近于a极限值

limit(f)

求符号函数f(x)的极限值【默认趋近于0

limit(f,x,a,’right’)

从右边趋近极限值

limit(f,x,a,’left’)

从左边趋近极限值

limit(f,x,a,’inf’)

变量x趋近于无穷

练习

syms x

f1=(x*(exp(sin(x))+1)-2*(exp(tan(x))-1))/sin(x)^3

f=limit(f1,x,0)

4.2求导数

diff(s)

默认变量进行一阶导数

diff(s,v)

v为自变量,对符号表达式s求导

diff(s,n)

对符号表达式sn阶导

diff(s,v,n)

v为自变量,对符号表达式sn阶导

4.3求积分

4.3.1使用int()求积分

int(s)

按照默认变量对符号变量s进行不定积分

int(s,v)

以v为自变量,对s求不定积分

int(s,v,a,b)

以v为自变量,对s求积分,a为下限,b为上限

练习

syms x

f1=2*x;

f=int(f1,x,1,2)

4.4 0点与极值

4.4.1求0点

x=fzero(fun,x0)

x0起始点最近的根

x=fzero(fun,x0,options)

由指定的优化参数options进行最小化

x=fzero(problem)

problem指定的问题求解

练习

syms x

fun1=@sin

fun2=@cos

x=fzero(fun1,3)

y=fzero(fun2,[1 2])  1-2之间的0

syms x

f1='x^5-3*x^4+2*x^2+x+3';

x=fzero(f1,0)

syms x

f1=@(x) x^5-3*x^4+2*x^2+x+3;

x=fzero(f1,0)

fzero 是一个数值求解器,需要传入一个句柄函数字符串表达式,而不是符号表达式

4.4.2求极值

[x,min]=fminbnd(f,a,b)

x为取得最小值的点,min为极小值,f为函数

a,b表示取得的极值范围

此时的f需要传入函数句柄,如f=@(x)=……

4.5 求方程

4.5.1线性方程组求解solve()

使用左除\求解

syms x 

a = [1 1 1; 3 -1 6; 0 1 3];

b = [1; 7; 4];

format rat  % 设置输出为分数形式

x = a \ b   % 求解线性方程组并以分数显示

% 此处syms可省略,因未涉及符号运算

使用solve()函数求解

syms x y z

g1=x+y+z==1;   g2=x-y+z==2;   g3=2*x-y-z==1;

[x,y,z]=solve(g1,g2,g3)

4.5.2符号代数方程求解solve()

solve(f,参数)

solve(f1,f2,,fn)

f:含等号=符号表达式方程,不含等号的符号表达式

练习

对方程f1=ax2+bx+c f2=x2-x-30求解

syms a b c x

f1=a*x^2+b*x+c;    f2=x^2-x-30;

fx=solve(f1,x);   

fa=solve(f1,a);    

f2=solve(f2,x)

4.5.3常微分方程组求解dsolve()

定义:MATLAB中,

diff(y,x)y’

diff(y,x,2)y’’

Dy(0)=5表示y’(0)=5

dsolve()

求解

dsolve(e,c,v)

求解常微分方程e在初值条件c下的特解,其中参数v描述自变量,省略是默认为t

dsolve(e1,e2,,en,c1,cn,v1,v2,vn)

求解常微分方程组

练习

syms y(x)

e1=diff(y,x)==-2*x*y+x*exp(-x^2)

y1=dsolve(e1)   % y1=dsolve(e1,x)

如果是两个变量,则[变量1值,变量2]=dsolve(eq1,eq2……)

4.6 函数拟合与插值

插值方法

线性插值

多项式插值

样条插值-通常三次样条

%%线性插值法-样条插值法对数据进行拟合

x=1:5;   y=[3 5 4 6 2];   xi=1:0.1:5;

y_1=interp1(x,y,xi,'linear')                   y_2=interp1(x,y,xi,'spline')

plot(x,y,'o',xi,y_1,'-',xi,y_3,'--')

例题1:极限计算

问题:计算以下极限: 1. ( {x }  ) 2. ( {x } (1 + )^x )

代码实现

syms x  % 定义符号变量
% 极限1:sin(x)/x 在x→0时的极限
limit1 = limit(sin(x)/x, x, 0);
% 极限2:(1+2/x)^x 在x→∞时的极限
limit2 = limit((1 + 2/x)^x, x, Inf);
% 显示结果
disp('极限1结果:');
disp(limit1);
disp('极限2结果:');
disp(limit2);

结果说明
极限1结果为 1(重要极限),极限2结果为 exp(2)(即 ( e^2  ))。

例题2:导数与高阶导数

问题:已知 ( f(x) = x^2 e^{2x} ),求: 1. 一阶导数 ( f’(x) ) 2. 二阶导数 ( f’’(x) ) 3. 在 ( x=1 ) 处的导数值

代码实现

syms x
f = x^2 * exp(2*x);  % 定义函数
% 一阶导数
f1 = diff(f);
% 二阶导数
f2 = diff(f, 2);  % 第二个参数指定导数阶数
% x=1处的导数值
f1_val = subs(f1, x, 1);
% 显示结果
disp('一阶导数:');
disp(f1);
disp('二阶导数:');
disp(f2);
disp('x=1处的一阶导数值:');
disp(f1_val);

结果说明
一阶导数为 ( 2x e^{2x} + 2x^2 e^{2x} ),二阶导数为 ( 2e^{2x} + 8x e^{2x} + 4x^2 e^{2x} ),( x=1 ) 处导数值为 ( 4e^2  )。

例题3:定积分与反常积分

问题:计算: 1. 定积分 ( _0^{} (x x) dx ) 2. 反常积分 ( _0^{} e^{-x} dx )

码实现

syms x
% 定积分:x*sin(x)从0到π
int1 = int(x*sin(x), x, 0, pi);
% 反常积分:e^(-x)从0到∞
int2 = int(exp(-x), x, 0, Inf);
% 显示结果
disp('定积分结果:');
disp(int1);
disp('反常积分结果:');
disp(int2);

结果说明
定积分结果为 (  ),反常积分结果为 1(指数函数的无穷积分收敛)。

例题4:多重积分

问题:计算二重积分 ( _D (x^2 + y^2) dxdy ),其中 ( D ) 是由 ( x ),( y ) 围成的矩形区域。

代码实现

syms x y
% 被积函数
f = x^2 + y^2;
% 二重积分:先对y积分(0到2),再对x积分(0到1
int_double = int(int(f, y, 0, 2), x, 0, 1);
% 显示结果
disp('二重积分结果:');
disp(int_double);

结果说明
计算结果为 (   )(分步积分:先对 ( y ) 积分得 ( 2x^2 +  ),再对 ( x ) 积分得结果)。

例题5:常微分方程求解

问题:求解微分方程 ( y’’ + 2y’ + y = 0 ),并求满足初始条件 ( y(0)=1 ),( y’(0)=0 ) 的特解。

代码实现

syms y(x% 定义符号函数
% 微分方程:y'' + 2y' + y = 0
eqn = diff(y, 2) + 2*diff(y) + y == 0;
% 通解
sol_general = dsolve(eqn);
% 特解(带初始条件)
cond1 = y(0) == 1;
cond2 = diff(y)(0) == 0;
sol_specific = dsolve(eqn, [cond1, cond2]);
% 显示结果
disp('通解:');
disp(sol_general);
disp('特解:');
disp(sol_specific);

结果说明
通解为 ( y(x) = C_1 e^{-x} + C_2 x e^{-x} ),特解为 ( y(x) = e^{-x} + x e^{-x} )(代入初始条件求得常数 ( C_1=1, C_2=1 ))。

例题6:数值积分(复杂函数)

问题:用数值方法计算 ( _0^1  dx )(被积函数在0处有极限,适合数值计算)。

代码实现

% 定义被积函数(匿名函数)
f = @(x) sin(x.^2) ./ x;
% 处理x=0处的奇点(补充定义为0的极限值0
f = @(x) (x == 0) .* 0 + (x ~= 0) .* sin(x.^2) ./ x;
% 数值积分(自适应辛普森法)
result = integral(f, 0, 1);
% 显示结果
disp('数值积分结果:');
disp(result);

结果说明
数值计算结果约为 0.4388(该积分无解析表达式,需用数值方法求解)。

总结

  • 符号计算(syms、limit、diff、int、dsolve)适合求解析解,结果精确,用于公式推导;
     
  • 数值计算(integral、ode45等)适合复杂函数或无解析解的问题,结果为近似值,效率高;
     
  • 实际应用中可结合两者:先用符号计算验证简单情况,再用数值方法解决复杂问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值