matlab教程--matlab快速入门-文字版, matlab电子书, 和matlab simplify有关的电子书:

4.5 化简和代换 -- matlab如何化简函数/化简表达式

4.5  化简和代换

符号表达式的初等运算是指符号表达式的变换和化简、符号的代换、复合函数的运算和反函数的运算、加、减、乘、除运算、乘方和开方运算。有关加、减、乘、除运算、乘方和开方运算在第一章实验的内容中我们已经作了介绍。下面主要介绍符号表达式的变换和化简、符号的代换、复合函数和反函数的运算。在MATLAB中,这些运算的常用函数如表 4-5所示。

 

表 4-5  符号表达式的变换和化简、复合函数和反函数的运算的MATLAB函数

MATLAB 函数名

函 数 功 能

 

 

 

 

 

 

 

expand(表达式)

将表达式中的括号进行展开,即将乘积展开为和式

factor(表达式)

将表达式进行分解,即把多项式转换为乘积形式

horner(表达式)

将一般的表达式变为嵌套的形式

collect(表达式)

合并同类项

simplify(表达式)

利用各种恒等式关系、函数关系将表达式进行化简

 

simple(表达式)

(1)f=simple(S)  对表达式 S 进行化简,输出长度最短的表达式 f;

(2)simple(S)  对表达式 S 进行化简,输出用各种函数化简的结果及长度最短的表达式;

(3)[f,how]=simple(S)  对表达式 S 进行化简,输出长度最短的表达式f及f是哪一个函数作用的结果how。

findsym(表达式)

确认符号表达式中的符号

subs(f,old,new)

用符号new代替表达式f中的符号old

subexpr(f)

将表达式f中的公共部分用符号表示

复合

函数

运算

y=compose(f,g)

输出y=f(u)和u=g(x)的复合函数y=f(g(x))

y=compose(f,g,t)

输出y=f(u)和u=g(t)的复合函数y=f(g(t))

函数

运算

g=finverse(f)

输入函数y=f(x),其中y=f(x)和y=g(x)互为反函数,

输出的y=g(x)是y=f(x)的反函数

g=finverse(f,t)

输入函数y=f(t),其中y=f(t)和y=g(t)互为反函数,

输出的y=g(t)是y=f(t)的反函数

 

 

[例1]  设函数,试求关于的复合函数。

解   输入

>>  syms x y

z=sqrt(3*y);

y =5*x^2-6;

z=compose(z,y)

运行后屏幕显示为

z =

3^(1/2)*(5*x^2-6)^(1/2)

 

[例2]  分别求函数e的反函数。

解   输入

>>  syms x t y1 y2

y1 =exp(-x);

y2=sin(t);

g1=finverse(y1)

g2=finverse(y2,t)

运行后屏幕显示为

g1 =

-log(x)

g2 =

asin(t)

 

[例3]  求函数的反函数。

解    输入

>>  syms x a b c d

y=((a*x+b)/(c*x+d))^(1/5)';

g=finverse(y)

运行后屏幕显示为

g =

-(b-conj(x)^5*d)/(a-conj(x)^5*c)

为了用符号x代替表达式g中的符号conj(x),再输入:

>> g=subs(-(b-conj(x)^5*d)/(a-conj(x)^5*c), conj(x),x)

运行后屏幕显示为

g =

(-b+x^5*d)/(a-x^5*c)

 

[例4]  在MATLAB工作窗口输入下面程序,运行后,观察其结果,说明所使用MATLAB函数collect、expand、horner、factor和simplify的意义和用法。

解  在MATLAB工作窗口输入下面程序:

>>  syms x y t a

f1=collect(x^3+2*x^2-5*x^2+4*x-3*x+12-3),

f2=collect((1+x)*t+t*x),

f3=expand((x-1)*(x-2)*(x-3)),

f4=expand(cos(x+y)),

f5=expand(cos(3*acos(x))),

f6=horner(x^3-6*x^2+11*x-6),

f7=horner(1.1+2.2*x+3.3*x^2),

f8=factor(x^3-6*x^2+11*x-6),

f9=simplify((1-x^2)/(1-x)),

f10=simplify(sin(x)^2+cos(x)^2),

f11=simplify((1/a^3+6/a^2+12/a+8)^(1/3))

运行后屏幕显示如下:

f1 =

x^3-3*x^2+x+9

f2 =

2*t*x+t

f3 =

x^3-6*x^2+11*x-6

f4 =

cos(x)*cos(y)-sin(x)*sin(y)

f5 =

4*x^3-3*x

f6 =

-6+(11+(-6+x)*x)*x

f7 =

11/10+(11/5+33/10*x)*x

f8 =

(x-1)*(x-2)*(x-3)

f9 =

x+1

f10 =

1

f11 =

((2*a+1)^3/a^3)^(1/3)

请读者观察其结果,说明所使用MATLAB函数collect等的意义和用法。

 

[例5]  用 findsym 来确认例4 中的符号表达式f11中的符号。

解 输入

>> findsym(f11)

运行后屏幕显示如下:

ans =

a

 

    [例6]  工具箱为我们提供了一个强有力的函数simple,它综合运用上面的函数进行化简,并找出长度最短的表达式。

(1)请问simple命令常用的调用格式有几种?

(2)对于simple命令这些调用格式,选择下面的函数在计算机上演示,并说明它们的功能。

(i) f(x)=sin(x)^2+cos(x)^2;

(ii) g(x)=(1/a^3+6/a^2+12/a+8)^(1/3).

解 (1)simple命令常用调用格式有三种,即

f=simple(S),simple(S)和[f,how]=simple(S)

(2)(i)f=simple(S)的功能是对表达式 S 进行化简,输出长度最短的表达式 f。

例如,输入

>> syms a x

f=simple(sin(x)^2+cos(x)^2)

g=simple((1/a^3+6/a^2+12/a+8)^(1/3))

运行后屏幕显示:

f =

1

g =

(2*a+1)/a

(ii)simple(S) 的功能是对表达式 S 进行化简,输出用各种函数化简的结果,及长度最短的表达式。

例如,输入

>> simple(sin(x)^2+cos(x)^2)

运行后屏幕显示:

simplify:

       1

radsimp:

      sin(x)^2+cos(x)^2

combine(trig):

1

factor:

sin(x)^2+cos(x)^2

expand:

sin(x)^2+cos(x)^2

combine:

         1

convert(exp):

-1/4*(exp(i*x)-1/exp(i*x))^2+(1/2*exp(i*x)+1/2/exp(i*x))^2

convert(sincos):

                  sin(x)^2+cos(x)^2

 convert(tan):

 4*tan(1/2*x)^2/(1+tan(1/2*x)^2)^2+(1-tan(1/2*x)^2)^2/(1+tan(1/2*x)^2)^2

collect(x):

 sin(x)^2+cos(x)^2

ans =

1

请读者在计算机上演示g(x)。

(iii)[f,how]=simple(S) 的功能是对表达式 S 进行化简,输出长度最短的表达式 f及f是哪一个函数作用的结果how.

例如,输入

>> [f,how]=simple((1/a^3+6/a^2+12/a+8)^(1/3)),

[g,how]=simple(sin(x)^2+cos(x)^2)

运行后屏幕显示:

f =

(2*a+1)/a

how =

radsimp

g =

1

how =

combine

 

[例7] 工具箱中提供了两种代换函数subs和subexpr。请分别写出它们的一种调用格式,说明它们的功能,并选择下面的函数在计算机上演示。

(1)用5代替表达式a+b中的a;

(2)分别用alpha和5代替表达式中的a,b;

(3)首先用命令t = solve('a*x^3+b*x^2+c*x+d = 0')求方程的根t,然后将求解的结果中的公共部分用s代换。

解 (1)代换函数subs的一种调用格式为

subs(S,old,new)

它的功能是用符号new代替表达式S中的符号old。

例如,输入

>> syms a b,subs(a+b,a,5)

f=subs(cos(a)+sin(b),[a,b],[sym('alpha'),5])

运行后屏幕显示:

ans =

5+b

f =

cos(alpha)+sin(5)

 

(2)代换函数subs的一种调用格式为

[Y,SIGMA] = subexpr (X,SIGMA)

或[Y,SIGMA] = subexpr (X,'SIGMA')

它的功能是将表达式X中的公共部分用SIGMA表示。

例如,输入

>> t = solve('a*x^3+b*x^2+c*x+d = 0'),

[r,s] = subexpr(t,'s')

运行后屏幕显示:

t =

[1/6/a*(36*c*b*a-108*d*a^2-8*b^3+12*3^(1/2)*(4*c^3*a-c^2*b^2-18*c*b*a*d+27*d^2*a^2+4*d*b^3)^(1/2)*a)^(1/3)-2/3*(3*c*a-b^2)/a/(36*c*b*a-108*d*a^2-8*b^3+12*3^(1/2)*(4*c^3*a-c^2*b^2-18*c*b*a*d+27*d^2*a^2+4*d*b^3)^(1/2)*a)^(1/3)-1/3*b/a]

[ -1/12/a*(36*c*b*a-108*d*a^2-8*b^3+12*3^(1/2)*(4*c^3*a-c^2*b^2-18*c*b*a*d+27*d^2*a^2+4*d*b^3)^(1/2)*a)^(1/3)+1/3*(3*c*a-b^2)/a/(36*c*b*a-108*d*a^2-8*b^3+12*3^(1/2)*(4*c^3*a-c^2*b^2-18*c*b*a*d+27*d^2*a^2+4*d*b^3)^(1/2)*a)^(1/3)-1/3*b/a+1/2*i*3^(1/2)*(1/6/a*(36*c*b*a-108*d*a^2-8*b^3+12*3^(1/2)*(4*c^3*a-c^2*b^2-18*c*b*a*d+27*d^2*a^2+4*d*b^3)^(1/2)*a)^(1/3)+2/3*(3*c*a-b^2)/a/(36*c*b*a-108*d*a^2-8*b^3+12*3^(1/2)*(4*c^3*a-c^2*b^2-18*c*b*a*d+27*d^2*a^2+4*d*b^3)^(1/2)*a)^(1/3))]

[ -1/12/a*(36*c*b*a-108*d*a^2-8*b^3+12*3^(1/2)*(4*c^3*a-c^2*b^2-18*c*b*a*d+27*d^2*a^2+4*d*b^3)^(1/2)*a)^(1/3)+1/3*(3*c*a-b^2)/a/(36*c*b*a-108*d*a^2-8*b^3+12*3^(1/2)*(4*c^3*a-c^2*b^2-18*c*b*a*d+27*d^2*a^2+4*d*b^3)^(1/2)*a)^(1/3)-1/3*b/a-1/2*i*3^(1/2)*(1/6/a*(36*c*b*a-108*d*a^2-8*b^3+12*3^(1/2)*(4*c^3*a-c^2*b^2-18*c*b*a*d+27*d^2*a^2+4*d*b^3)^(1/2)*a)^(1/3)+2/3*(3*c*a-b^2)/a/(36*c*b*a-108*d*a^2-8*b^3+12*3^(1/2)*(4*c^3*a-c^2*b^2-18*c*b*a*d+27*d^2*a^2+4*d*b^3)^(1/2)*a)^(1/3))]

r =

[1/6/a*s^(1/3)-2/3*(3*c*a-b^2)/a/s^(1/3)-1/3*b/a]

[ -1/12/a*s^(1/3)+1/3*(3*c*a-b^2)/a/s^(1/3)-1/3*b/a+1/2*i*3^(1/2)*(1/6/a*s^(1/3)+2/3*(3*c*a-b^2)/a/s^(1/3))]

[ -1/12/a*s^(1/3)+1/3*(3*c*a-b^2)/a/s^(1/3)-1/3*b/a-1/2*i*3^(1/2)*(1/6/a*s^(1/3)+2/3*(3*c*a-b^2)/a/s^(1/3))]

s =

36*c*b*a-108*d*a^2-8*b^3+12*3^(1/2)*(4*c^3*a-c^2*b^2-18*c*b*a*d+27*d^2*a^2+4*d*b^3)^(1/2)*a

 

欢迎转载,转载请注明来自一手册:http://yishouce.com/book/2/2040500.html
友情链接It题库(ittiku.com)| 版权归yishouce.com所有| 友链等可联系 admin#yishouce.com|粤ICP备16001685号-1