MATLAB编程基础及应用第四章.docx
《MATLAB编程基础及应用第四章.docx》由会员分享,可在线阅读,更多相关《MATLAB编程基础及应用第四章.docx(17页珍藏版)》请在冰豆网上搜索。
![MATLAB编程基础及应用第四章.docx](https://file1.bdocx.com/fileroot1/2022-12/11/8f95196c-d56a-49dc-93b6-2a82e0b955ea/8f95196c-d56a-49dc-93b6-2a82e0b955ea1.gif)
MATLAB编程基础及应用第四章
第4章符号运算
符号运算时数学计算的中国农药内容,特点是不带来计算误差,希望认真掌握本章内容。
第1节符号变量的创建
(1)直接用引号‘’创建(包括代数式)。
(2)用函数sym(‘’)创建(包括代数)。
注意:
1)上述两种方法创建的符号变量所占空间不同
2)符号代数式中的符号应另行创建。
例如:
y=sym('a*x^2+b')中,计算机智能识别单引号中的字符串,不能识别字符串中的部分字符,比如字符a,x,b等。
(3)‘’中包括的空格等都视为符号。
(4)已创建的符号变量及代数式可以进行赋值。
(5)用函数syms串讲多符号变量,变量之间用空格分开。
此方法一般只用于多符号变量的创建。
(6)可用上述方法创建符号矩阵与复数型符号变量。
第2节符号函数的运算
对符号函数进行运算,首先必须
(1)定义符号变量。
(2)定义符号函数。
1.函数求极限
(1)findsym(f,n)查找函数f的变量次序,n是查找变量的个数。
(2)limit(f,x,a)。
对于符号函数f,求当变量x趋近于a时的极限值。
对独立变量的函数f,x可省略。
对多变量的函数f,变量x不可省。
如果省略,计算机则按排序的第一个变量求极限。
(e17t)
(3)limit(f,x,a,'right'),
(4)limit(f,x,a,'left'),
(5)limit(f,x,a,'inf'),
求
(e18t)
(e17t)
symsxabc
f=sym('a*x^2+b*x+c')
findsym(f,4)
y
(1)=limit(f,x,1);
y
(2)=limit(f,1);
y(3)=limit(f,a,2);
y(4)=limit(f,b,1);
y
(e18t)
symsx
f=sym('ln(1+2*x)/sin(3*x)')
a=limit(f,0)
(a其实是由符号组成,只是符号中没有包含变量)
2.微分与积分的运算
对可微函数f
(1)微分:
diff(f,v,n)。
函数f中对符号变量v求n阶微分。
当变量v和阶次n省略时,表示对单变量的函数求一节微分。
对可积函数f(原函数存在)
(2)积分:
int(f,v,a,b)。
函数f中队符号变量v求定积分,a和b分别是积分的上下限。
int(f,v)。
对变量v求不定积分。
(exno19t)
(e19t)
symsx
f=sym('x/(cos(x))^2')
y1=diff(f)
y2=int(f,0,1)
3.梯度函数fradient
(1)如果F是一维矩阵,则FX=grdient(F,H)返回F的一维数值梯度。
H是F中相邻两点间的间距。
(2)如果F是二维矩阵,返回F的二维梯度数值。
[fx,fy]=gradient(f,hx,hy)。
hx,hy参数表示各方向相邻两点间的距离。
(3)如果f是三维矩阵,返回f的三维数值梯度。
[fx,fy,fz]=gradient(f,hx,hy,hz)。
hx,hy,hz参数表示各方向相邻两点的距离。
(exno
18tt)
(e18tt)
x=[123;631;312]
[ex,ey]=gradient(x,0.5,0.2)
练习4-2
平面上温度的分布为:
T(x,y)=xe-x2-y2
用灰度图反映
(1)平面上温度的分布。
(2)平面上温度梯度的分布。
(exno20t)(exno14)
需要掌握:
(1)两个自变量矩阵x,y的构造
(2)函数梯度的求解方法。
(e20t)
xx=-2:
0.05:
2;
yy=-2:
0.05:
2;
[x,y]=meshgrid(xx,yy);%将单变量构造网格矩阵
%x和y都是a*b(a是y的列数)x每行都相等,列变化与xx相同。
%y是每列都相等,行变化与yy的转置一样
t=x.*exp(-x.^2-y.^2);%平面上的温度分布
[px,py]=gradient(t,0.05,0.05);%平面上的温度梯度(两个方向)
td=sqrt(px.^2+py.^2);%平米昂上的温度梯度的大小
subplot(221)%
imagesc(t)%作平面上的温度的分布图
subplot(222)
imagesc(td)%
colormap('gray')%颜色矩阵
4.符号代数方程(组)的求解solve
(1)定义符号变量。
(2)定义符号方程(组)
(3)求解方程(组)
格式一变量输出方式:
[x1,x2,...xn]=solve(eq1,eq2,...e1n,x1,x2,...xn)
格式二结构输出方式
V=solve(eq1,eq2,...eq3,x1,x3,...xn)
eq1....是符号方程x1....是求解未知数
练习4-3
求解方程组
注意:
结构输出方式的现实为v.x1或v.x2V为结构输出的变量名(exno21t)
(e21t)
symsx1x2a
eq1=sym('x1^2+x2=a');
eq2=sym('x1-a*x2=a');
[x1x2]=solve(eq1,eq2,x1,x2)
v=solve(eq1,eq2)
v.x1
v.x2
an1=x1
(1),an2=x1
(2)
an3=x2
(1),an4=x2
(2)
5.符号微分方程(组)的求解dsolve
符号微分方程(组)可以直接求解,调用格式为
格式1函数输出方程
[y1,y2,...]=dsolve('方程1,方程2。
。
。
','初条件1,初条件2。
。
。
','自变量')
格式2结构输出方程
V=dsolve('方程1,方程2。
。
。
','初条件1,初条件2。
。
。
','自变量')
注:
当初条件和自变量省略时,解函数默认为自变量为t,并含有积分常数
练习4-4
(1)求解微分方程
y(0)=1
格式1函数输出方式
[y]=dsolve('Dy=-a*y','y(0)=1','x')
格式2结构输出方程
s=dsolve('Dy=-a*y','y(0)=1','x')(exno22t)
注意微分算符的表达(答谢字母D),高阶为D2,D3。
。
。
(e22t)
[y]=dsolve('Dy=-a*y','y(0)=1','x')
s=dsolve('Dy=-a*y','y(0)=1','x')
[u]=dsolve('Du=-a*u','u(0)=1')
w=dsolve('Du=-a*u','u(0)=1')
(2)求解微分方程组
(exno23)
特别需要注意的是,不是任何微分方程都能进行微分方程的求解,五解析解的微分方程需要用数值求解的方法记性,有关问题将在后面介绍。
(e23)
[u,w]=dsolve('Du=-a*w,Dw=sin(z)','u(0)=1,w(0)=0','z')
v=dsolve('Du=-a*w,Dw=sin(z)','u(0)=1,w(0)=0','z')
6.符号变量与数值变量的转换
符号变量的运算结果仍然是符号,需要进行数值转化,有下面的相关函数:
(1)vpa(f,d):
将符号函数f进行数值转换,有效位数为d。
(2)double(f):
将不含自由变量的符号函数f做数值变换,有效位数固定为5位。
(3)sbus(f,old,new):
将符号表达式中f中的自由变量名为old替换为新变量名new。
注意:
符号函数f中的自由变量时指非阿拉伯数值字符的符号变量。
练习4-5求下列函数的根
y=x2-x3-1(exno13)
(e13)
symsx
f=sym('-x^3+x^2-1=0')
v=solve(f)
w=vpa(v,2)
u=double(v)
第5章符号运算
符号运算时数学计算的中国农药内容,特点是不带来计算误差,希望认真掌握本章内容。
第2节符号变量的创建
(3)直接用引号‘’创建(包括代数式)。
(4)用函数sym(‘’)创建(包括代数)。
注意:
3)上述两种方法创建的符号变量所占空间不同
4)符号代数式中的符号应另行创建。
例如:
y=sym('a*x^2+b')中,计算机智能识别单引号中的字符串,不能识别字符串中的部分字符,比如字符a,x,b等。
(7)‘’中包括的空格等都视为符号。
(8)已创建的符号变量及代数式可以进行赋值。
(9)用函数syms串讲多符号变量,变量之间用空格分开。
此方法一般只用于多符号变量的创建。
(10)可用上述方法创建符号矩阵与复数型符号变量。
第3节符号函数的运算
对符号函数进行运算,首先必须
(3)定义符号变量。
(4)定义符号函数。
2.函数求极限
(6)findsym(f,n)查找函数f的变量次序,n是查找变量的个数。
(7)limit(f,x,a)。
对于符号函数f,求当变量x趋近于a时的极限值。
对独立变量的函数f,x可省略。
对多变量的函数f,变量x不可省。
如果省略,计算机则按排序的第一个变量求极限。
(e17t)
(8)limit(f,x,a,'right'),
(9)limit(f,x,a,'left'),
(10)limit(f,x,a,'inf'),
求
(e18t)
(e17t)
symsxabc
f=sym('a*x^2+b*x+c')
findsym(f,4)
y
(1)=limit(f,x,1);
y
(2)=limit(f,1);
y(3)=limit(f,a,2);
y(4)=limit(f,b,1);
y
(e18t)
symsx
f=sym('ln(1+2*x)/sin(3*x)')
a=limit(f,0)
(a其实是由符号组成,只是符号中没有包含变量)
3.微分与积分的运算
对可微函数f
(3)微分:
diff(f,v,n)。
函数f中对符号变量v求n阶微分。
当变量v和阶次n省略时,表示对单变量的函数求一节微分。
对可积函数f(原函数存在)
(4)积分:
int(f,v,a,b)。
函数f中队符号变量v求定积分,a和b分别是积分的上下限。
int(f,v)。
对变量v求不定积分。
(exno19t)
(e19t)
symsx
f=sym('x/(cos(x))^2')
y1=diff(f)
y2=int(f,0,1)
4.梯度函数fradient
(4)如果F是一维矩阵,则FX=grdient(F,H)返回F的一维数值梯度。
H是F中相邻两点间的间距。
(5)如果F是二维矩阵,返回F的二维梯度数值。
[fx,fy]=gradient(f,hx,hy)。
hx,hy参数表示各方向相邻两点间的距离。
(6)如果f是三维矩阵,返回f的三维数值梯度。
[fx,fy,fz]=gradient(f,hx,hy,hz)。
hx,hy,hz参数表示各方向相邻两点的距离。
(exno
18tt)
(e18tt)
x=[123;631;312]
[ex,ey]=gradient(x,0.5,0.2)
练习4-2
平面上温度的分布为:
T(x,y)=xe-x2-y2
用灰度图反映
(3)平面上温度的分布。
(4)平面上温度梯度的分布。
(exno20t)(exno14)
需要掌握:
(1)两个自变量矩阵x,y的构造
(2)函数梯度的求解方法。
(e20t)
xx=-2:
0.05:
2;
yy=-2:
0.05:
2;
[x,y]=meshgrid(xx,yy);%将单变量构造网格矩阵
%x和y都是a*b(a是y的列数)x每行都相等,列变化与xx相同。
%y是每列都相等,行变化与yy的转置一样
t=x.*exp(-x.^2-y.^2);%平面上的温度分布
[px,py]=gradient(t,0.05,0.05);%平面上的温度梯度(两个方向)
td=sqrt(px.^2+py.^2);%平米昂上的温度梯度的大小
subplot(221)%
imagesc(t)%作平面上的温度的分布图
subplot(222)
imagesc(td)%
colormap('gray')%颜色矩阵
5.符号代数方程(组)的求解solve
(4)定义符号变量。
(5)定义符号方程(组)
(6)求解方程(组)
格式一变量输出方式:
[x1,x2,...xn]=solve(eq1,eq2,...e1n,x1,x2,...xn)
格式二结构输出方式
V=solve(eq1,eq2,...eq3,x1,x3,...xn)
eq1....是符号方程x1....是求解未知数
练习4-3
求解方程组
注意:
结构输出方式的现实为v.x1或v.x2V为结构输出的变量名(exno21t)
(e21t)
symsx1x2a
eq1=sym('x1^2+x2=a');
eq2=sym('x1-a*x2=a');
[x1x2]=solve(eq1,eq2,x1,x2)
v=solve(eq1,eq2)
v.x1
v.x2
an1=x1
(1),an2=x1
(2)
an3=x2
(1),an4=x2
(2)
6.符号微分方程(组)的求解dsolve
符号微分方程(组)可以直接求解,调用格式为
格式1函数输出方程
[y1,y2,...]=dsolve('方程1,方程2。
。
。
','初条件1,初条件2。
。
。
','自变量')
格式2结构输出方程
V=dsolve('方程1,方程2。
。
。
','初条件1,初条件2。
。
。
','自变量')
注:
当初条件和自变量省略时,解函数默认为自变量为t,并含有积分常数
练习4-4
(3)求解微分方程
y(0)=1
格式1函数输出方式
[y]=dsolve('Dy=-a*y','y(0)=1','x')
格式2结构输出方程
s=dsolve('Dy=-a*y','y(0)=1','x')(exno22t)
注意微分算符的表达(答谢字母D),高阶为D2,D3。
。
。
(e22t)
[y]=dsolve('Dy=-a*y','y(0)=1','x')
s=dsolve('Dy=-a*y','y(0)=1','x')
[u]=dsolve('Du=-a*u','u(0)=1')
w=dsolve('Du=-a*u','u(0)=1')
(4)求解微分方程组
(exno23)
特别需要注意的是,不是任何微分方程都能进行微分方程的求解,五解析解的微分方程需要用数值求解的方法记性,有关问题将在后面介绍。
(e23)
[u,w]=dsolve('Du=-a*w,Dw=sin(z)','u(0)=1,w(0)=0','z')
v=dsolve('Du=-a*w,Dw=sin(z)','u(0)=1,w(0)=0','z')
7.符号变量与数值变量的转换
符号变量的运算结果仍然是符号,需要进行数值转化,有下面的相关函数:
(4)vpa(f,d):
将符号函数f进行数值转换,有效位数为d。
(5)double(f):
将不含自由变量的符号函数f做数值变换,有效位数固定为5位。
(6)sbus(f,old,new):
将符号表达式中f中的自由变量名为old替换为新变量名new。
注意:
符号函数f中的自由变量时指非阿拉伯数值字符的符号变量。
练习4-5求下列函数的根
y=x2-x3-1(exno13)
(e13)
symsx
f=sym('-x^3+x^2-1=0')
v=solve(f)
w=vpa(v,2)
u=double(v)