赞
踩
%符号变量的创建
clc;clear;
syms x y f(x,y) %多个符号变量sym要加s
f(x,y) = x + 2 * y
%在命令行窗口中如果直接输入一个没有进行初始化的变量,会出现无法识别的情况。
%而使用符号函数就可以让你在没有赋值的情况下去引用一个变量
f(1,3)
%输出7
符号函数由于在运算的时候不需要对变量进行预赋值,会比较方便,同时,这也带来了缺点:
1.计算以推理方式进行,因此不受计算误差累积所带来的困扰。
2.符号计算可以给出完全正确的封闭解,或任意精度的数值解(封闭解不存在时)。
3.符号计算指令的调用比较简单,与数学教科书上的公式相近。
4.符号计算所需的运行时间相对较长。
(1)分解
clc;clear;
syms x y;
fun1 = x^3+3*x^2+3*x+1;
factor(fun1) % 因式分解
factor(100) % 将正整数按质因数分解
(2)展开
fun2 = (x - 2)*(x - 4);
expand(fun2) % 展开表达式
(3)合并
fun3 = x^2*y + y*x - x^2 + 2*x ;
collect(fun3,x) % (不加参数)按默认变量合并同类项
(4)化简
fun4 = cos(3*acos(x));%有换元操作and和差化积,在MATLAB中一步到位
simplify(fun4) % 化简表达式
**
示例:对于数列 ,当n趋于无穷大时,求其极限。(很容易看出来是三分之一)
syms x;
f = x/(3*x+1);
limit(f,x,inf)
%ans=1/3
(1)左极限:
limit(expr,x,a,‘left’)
(2)右极限:
limit(expr,x,a,‘right’)
(1)微分
1、求表达式:
分别对x,y,z的偏微分、对z的二阶偏导以及全微分。
clc;clear;
syms x y z;
f1 = exp(x*sin(y))+log(z);
diff(f1,x) % 对x求偏微分
diff(f1,y) % 对y求偏微分
diff(f1,z) % 对z求偏微分
diff(f1,z,2) % 对z求二阶偏微分
jacobian(f1,[x y z]) % 求全微分
结果就不po了
(2)积分
1、要求定积分还是要先求不定积分:
计算不定积分:
clc;clear;
syms x;
f=(x^2+1)/(x^2-2*x+2)^2;
I=int(f,x)%统一的形式求不定积分,结果少了个常数!
2、计算定积分:
计算定积分:(泊松积分)
K=int(exp(-x^2),x,0,inf) %先填下限,再填上限
结果:
ps:对于K,是一个超越积分,即你算不出K的原函数,可以用软件去求解
**
**
(1)梯形法
使用梯形法计算定积分
x = 0:pi/100:pi;
y = sin(x);
k = trapz(x,y)
ans=
(2)自适应辛普森法(Simpson)(了解)
quad(FUN,A,B) 已经淘汰
(3)自适应Lobatto法(了解)
quadl(FUN,A,B) 已经淘汰
(4)高斯-勒让德积分法(了解)
quadgk(fun,a,b) 使用高阶全局自适应积分和默认误 差容限在 a 至 b 间对函数句柄 fun 求积
分。
(5)integral函数(计算广义积分,误差比较小/最常用)
clc;clear;
fun = @(x) exp(-x.^2).*log(x).^2; %匿名函数,自适应函数,不用去管函数的步长
q = integral(fun,0,Inf) % 计算 x=0 至 x=Inf 的积分。
(6)多重积分
Matlab支持计算三重及以下的积分。
clc;clear;
%创建匿名函数。
fun = @(x,y) 1./( sqrt(x + y) .* (1 + x + y).^2 );%这里x、y是数值,点不点乘没有关系,不过要养成良好习惯嘛。
ymax = @(x) 1 - x;
%对 0≤x≤1 和 0≤y≤1−x 限定的三角形区域计算积分。
q = integral2(fun,0,1,0,ymax)
clc;clear;
syms n;
f=1/n^2;
S=symsum(f,n,1,inf)
S100=symsum(f,n,1,100)
**
**
clc;clear;
syms x y(x);
fun = diff(y,x)+2*x*y==x*exp(-x^2);
dsolve(fun,x)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。