第三次课 第二章(二)符号计算和二维绘图

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

simple(s):符号表达式简化, s可为符号多 项式、多项式向量和矩阵。
例 f=simple(sym('sin(x)^2+cos(x)^2')) 结果:f =1 g=simple(sym('x^3+3*x^2+3*x+1')) 结果:g =(x+1)^3
【例2.2-2】简化 3 1 6 12 f 2 8 3 x x x
例2.1-4 findsym确定自由变量是对整个矩阵进行的 syms a b t u v x y A=[a+b*x,sin(t)+u;x*exp(-t),log(y)+v] findsym(A,1) A= [ a+b*x, sin(t)+u] [ x*exp(-t), log(y)+v] ans = x
第二章(二) MATLAB的符号计算
简介
• 所谓符号计算是指:解算数学表达式、 方程不是在离散化的数值点上进行, 而是凭借一系列恒等式,数学定理, 通过推理和演绎,力求获得解析结果。 这种计算建立在数值完全准确表达和 推演严格解析的基础之上,因此所得 结果是完全准确的。
1.符号对象
1. 建立符号变量和符号常数 sym函数 sym函数用来建立单个符号量,例如, a=sym(‘a’)建立符号变量a,此后,用 户可以在表达式中使用变量a进行各种运算。 符号数字: sym(’Mum’) 符号参数: 符号变量:findsym(EXPR)
• 例2.1-5 数据对象及其识别 (1)生成三种不同类型的矩阵 clear a=1;b=2;c=3;d=4; Mn=[a,b;c,d] Mc='[a,b;c,d]' Ms=sym(Mc) Mn = 1 2 3 4 Mc = [a,b;c,d] Ms = [ a, b] [ c, d]
• • • • • • • • • •
• 例2.1-1符号(类)数字与数值(类)数字之间的差异
• • • • • • • • • • • • • • • a=pi+sqrt(5) sa=sym('pi+sqrt(5)') Ca=class(a) Csa=class(sa) vpa(sa-a) %给出数值型符号的结果 a= 5.3777 sa = pi+sqrt(5) Ca = double Csa = sym ans = .138223758410852e-16
f 1 x 1 f 2 x1 f 3 x1
f 1 x 2 f 2 x 2 f 3 x 2
1 ( 1) 3 , 例2.3-8 求 [t , k ] 2 k k 1 ( 2k 1) t 0
• • • • • • • • • • •
【例2.1-2】用符号计算研究方程的解。 (1)不指定变量时: syms u v w z Eq=u*z^2+v*z+w; result_1=solve(Eq) %采用自动识别变量解方程
findsym(Eq,1) result_1 = -u*z^2-v*z ans = w
• (1)生成符号变量 • syms a b x X Y • k=sym('3'); • z=sym('c*sqrt(delta)+y*sin(theta)'); • EXPR=a*z*X+(b*x^2+k)*Y; • (2)找出全部自由变量 findsym(EXPR) ans =X, Y, a, b, c, delta, theta, x, y (3)确定1,2,3个自由符号变量 findsym(EXPR,1) ans =x findsym(EXPR,2),findsym(EXPR,3) ans =x,y ans =x,y,theta
a t f 求 t cos x ln x
3
df d 2 f d 2 f dx dt 2 dtdx
x1e x2 x2 【例2.3-3】求f ( x1 , x2 ) 的Jacobian矩阵 cos(x1 ) sin( x2 )
• syms x1 x2;f=[x1*exp(x2);x2;cos(x1)*sin(x2)]; • v=[x1 x2];fjac=jacobian(f,v) • fjac = • [ exp(x2), x1*exp(x2)] • [ 0, 1] • [ -sin(x1)*sin(x2), cos(x1)*cos(x2)]
(二)符号数字及表达式的操作
• MATLAB变精度算法: • digits——显示当前环境下符号数字“十进 制浮点”表示的有效数字位数; • digits(n) ——设定符号数字“十进制浮点” 表示的有效数字位数。 • xs=vpa(x) ——根据表达式x得到digits制 定精度下的符号数字xs。 • xs=vpa(x,n) ——根据表达式x得到n位有 效数字的符号数字xs。
• • • • • • • • • •
(4)用isa判断矩阵的类别: isa(Mn,'double') isa(Mc,'char') isa(Ms,'sym') ans = 1 ans = 1 ans = 1
(5)用whos观察变量的类别和其他属性
• whos Mn Mc Ms • Name Size Bytes Class • Mc 1x9 18 char array • Mn 2x2 32 double array • Ms 2x2 312 sym object • Grand total is 21 elements using 362 bytes
第三章 数据可视化
3.1引导
1、数据可视化的目的: 通过图形,从一堆杂乱的离散数据中观察数据之 间的内在关系,感受由图形所传递的内在本质。 2、本章内容提要 (1)二维曲线和图形 plot指令、坐标控制和图形标识、多次叠绘、双纵坐标 和多子图、ginput指令 (2)三维曲面和曲面 plot3指令、三维曲面和网线图、曲面和网线图的精细 修饰、透视、镂空和裁切、高维可视化和图形窗功能 简介
• • • • • • •
syms u v w z Eq=u*z^2+v*z+w; (2)指定Z为自由变量: result_2=solve(Eq,z) result_2 = 1/2/u*(-v+(v^2-4*u*w)^(1/2)) 1/2/u*(-v-(v^2-4*u*w)^(1/2))
例2.1-3对独立自由符号变量的自动辨认
t 1
ቤተ መጻሕፍቲ ባይዱ

k
• • • • • • • • •
syms k t; f1=[t k^3]; f2=[1/(2*k-1)^2,(-1)^k/k]; s1=simple(symsum(f1)) s2=simple(symsum(f2,1,inf)) s1 = [ 1/2*t*(t-1), k^3*t] s2 = [ 1/8*pi^2, -log(2)]
表达
• e32r=vpa(abs(p0-pr)) %用当前变精度计算 • e16=vpa(abs(p0-pd),16) %用16位变精度计算 • e32d=vpa(abs(p0-pd)) %用当前变精度计
基本操作 factor:因式分解。

factor(sym('x')^9-1) 结果:ans =(x-1)*(x^2+x+1)*(x^6+x^3+1)
例2.3-2
• • • • • • • • • • • • •
syms a t x;f=[a,t^3;t*cos(x), log(x)]; df=diff(f) dfdt2=diff(f,t,2) dfdxdt=diff(diff(f,x),t) df = [ 0, 0] [ -t*sin(x), 1/x] dfdt2 = [ 0, 6*t] [ 0, 0] dfdxdt = [ 0, 0] [ -sin(x), 0]
T
• 例5.1-1用图形标识离散函数 yn n ,其中n为整 数。 • n=(-10:10)'; • y=abs(n); • plot(n,y,'r.','Markersize',20) • axis equal • grid on • xlabel('n')
4、连续函数的可视化 步骤: (1)从连续函数获得一组采样数据,即选定一组自变量采样点(包括 采样的起点、终点和采样步长),并计算相应的二维函数值; (2)离散数据的可视化; (3)图像上离散点的连续化。 图形上的区间不能很好的表现函数连续性,进一步表示离散点之间 的函数性状,有两种处理方法。 (1)对区间进行更细的分割,计算更多的点,以近似表现函数的连 续变化。 (2)在离散点采样的基础上,采用线性插值迅速计算出离散点间连 线上所经过的每个像素,从而获得“连续曲线”的效果。
• • • • •
例2.2-1digits, vpa指令的使用。 Digits %当前十进制浮点表示的有效数字位数 p0=sym(‘(1+sqrt(5))/2’) %完全准确表达 pr=sym((1+sqrt(5))/2) %广义有理表达 pd=sym((1+sqrt(5))/2,‘d’) %32位十进制符号
(2)观察三种矩阵的大小 SizeMn=size(Mn) SizeMc=size(Mc) SizeMs=size(Ms) SizeMn = 2 2 SizeMc = 1 9 SizeMs = 2 2
• • • • • • • • • •
(3)用class获得每种矩阵的类别 CMn=class(Mn) CMc=class(Mc) CMs=class(Ms) CMn = double CMc = char CMs = sym
例2.3-9 求
• • • • • • • • •
1 1 x x x dx
clear syms x f=sqrt((1+x)/x)/x s=int(f,x) s=simple(simple(s)) f= ((1+x)/x)^(1/2)/x s= ((1+x)/x)^(1/2)/x*(2*(x^2+x)^(3/2)+2*(x^2+x)^(1/2)*x^2+log(1/2+x+(x^2+x)^ (1/2))*x^2)/((1+x)*x)^(1/2) • s= • log(1/2+x+((1+x)*x)^(1/2))-2*((1+x)*x)^(1/2)/x
• • • • • • • • syms x f=(1/x^3+6/x^2+12/x+8)^(1/3); g1=simple(f) g2=simple(g1) g1 = (2*x+1)/x g2 = 2+1/x
【例2.3-1】试求 lim1 1 x
• • • •
kx

x
syms x k Lim_f=limit((1-1/x)^(k*x),x,inf) Lim_f = exp(-k)
3、离散数据和离散函数的可视化 (1)离散数据的可视化 • 一对实数坐标可以表示为平面上的一个点; • 一对实数向量可以表示为平面上的一组点。 (2)离散函数的可视化 • 先根据离散函数特征选定一组自变量 • 再根据所给离散函数 n n • 算得相应的

x [ x1 , x2 ,, xn ] y f (x ) T y [ y1 , y2 ,, yn ] 然后在平面上几何地表现这组向量对 ( x, y )
factor(sym(‘100’))%把整数100 进行素数分解.结果:(2)^2*(5)^2
expand(s):多项式展开,s可为多项式、
多项式向量和矩阵。
例 expand(sym('(x+1)^3')) 结果:ans =x^3+3*x^2+3*x+1 expand(sym('sin(x+y)')) 结果:ans = sin(x)*cos(y)+cos(x)*sin(y)
collect(s):对默认的变量合并同类 项。
collect(s,v):对变量v合并同类 项。 s可为符号多项式、多项式向量和矩阵 例
collect(sym('x^2*y+y*x-x^2-2*y*x')) collect(sym('x^2*y+y*x-x^2-2*y*x'),x) collect(sym('x^2*y+y*x-x^2-2*y*x'),y)
相关文档
最新文档