matlab y2=sin(3t)exp(-t/3);,Matlab工程应用基础_3_3_西安交通大学:Matlab工程应用基础(姜歌东)_ppt_大学课件预览_高等教育资讯网...

第 3章 矩阵、数组和符号运算

7,符号方程求解

a.线性方程组的符号解法函数命令 linsolve 用来求解线性方程组符号解 。

对方程 A*X=B,linsolve 的调用格式为:

X = linsolve(A,B) 等同于 X = sym(A)\sym(B)

>> A=sym('[10,-1,0;-1,10,-2;0,-2,10]')

A =

[ 10,-1,0]

[ -1,10,-2]

[ 0,-2,10]

>> B=('[9;7;6]')

B =

[9;7;6]

1020

2101

0110

A

6

7

9

B

>> linsolve(A,B)

ans =

[ 473/475]

[ 91/95]

[ 376/475]

>> vpa(ans,6)

ans =

[,995789]

[,957895]

[,791579]

矩阵 A 必须至少是行满秩的 。 当 A 的列数大于行数时,将给出解不惟一的警告提示 。

b,非线性方程的符号解法用 函数零点法 求 非线性方程 的解有两个函数命令,即 fzero

和 fsolve。

fzero命令用于求一元函数零点

fsolve命令用于求 解非线性方程组首先需将方程 f(x)=g(x)转化为 F(x)=f(x)-g(x)=0,方程组也是如此 ;然后再将函数 F(x)写成 MATLAB 的 m 函数,以便在 fzero 和 fsolve 命令中调用 。

求解的过程为:

先猜测一个 初始零点,或者该零点大概所在的区间;

然后通过计算,使猜测值不断精确化,或使猜测区间不断收缩,直到达到预先指定的精度为止 。

第 3章 矩阵、数组和符号运算第 3章 矩阵、数组和符号运算求一元函数零点命令 fzero 的调用格式为:

◆ x = fzero(fun,x0),求一元函数零点命令的最简形式;

◆ [x,fval,exitflag] =fzero(fun,x0,options,P1,P2,...),求一元函数零点命令的完整格式 。

x0 是初始猜测的零点;

options 是优化迭代所采用的参数选项,options的缺省设置可以用命令

options=optimset(’fzero’)获得;

P1,P2是向函数 fun 传递的附加参数 。 它的具体取名和函数 fun 中一致;

x是输出参数,为所求的零点自变量值;

fval是输出参数,为函数 fun 在 x 处的值;

exitflag是描述函数 fun 的退出情况 。 若 exitflag> 0,则表示找到函数零点后退出;若 exitflag< 0,则表示没有找到零点或在搜索过程中遇到了无穷大的函数值 。

第 3章 矩阵、数组和符号运算用 fzero 命令求解函数 的零点

( 1) 建立函数 f(x)的 M 文件 。

function y=fun1(x)

y=x.^4-4*x-5;

( 2) 建立水平横轴的 M文件 。

function y=fun2(x)

y=0;

( 3) 用作图法估计函数零点位置 。

>> fplot('fun1',[-5,5],'r')

>> hold on

>> fplot('fun2',[-5,5],'r')

( 4) 用 zoom 和 ginput 命令获得零点的初始近似值在程序中输入下列命令,可得到函数的局部放大图及鼠标操作线 。

zoom on %局部放大命令

[tt]=ginput(1)

[yy]=ginput(1) %用鼠标获取 2 个零点猜测值

zoom off %恢复原来图形大小

54)( 4 xxxf

显示所得零点初始猜测值,结果为:

tt =

-0.9838 0.0001

yy =

1.8762 0.0091

( 5) 用函数 fzero 命令求函数的精确零点

[x,fval,exitflag]=fzero(’fun1’,tt(1),[]) %靠近 tt(1)点处的精确零点

[x,fval,exitflag]=fzero(’fun1’,yy(1),[]) %靠近 yy(1)点处的精确零点结果为:

Zero found near tt.

x =

-1

fval =

0

exitflag =

1

第 3章 矩阵、数组和符号运算

Zero found near yy.

x =

1.8812

fval =

-6.2172e-015

exitflag =

1

解非线性方程组的 函数命令 fsolve

其调用格式为:

◆ x=fsolve(fun,x0),解非线性方程组最简单的调用格式 。

该式中除两个输入参数外,其余输入输出参数都可以缺省;

◆ [ x,fval,exitflag,output,jacob]=fsolve(fun,x0,options,P1,P2...),解非线性方程组最完整的调用格式 。

x0 是表示零点数是猜测值的向量;

options 是 优 化 迭 代 所 采 用 参 数 的 结 构 数 组 。

P1 和 P2是向函数 fun 传递的参数;

x 和 fval是输出参数,所求零点的自变量值和函数值;

output是输出此命令所用的计算方法,迭代次数等信息 。

jacob是函数在 x 处的 jacobian。

第 3章 矩阵、数组和符号运算第 3章 矩阵、数组和符号运算求方程组 的根。

首先编制函数文件 fc.m

function y=fc(x)

y(1)=x(1)-0.7*sin(x(1))-0.2*sin(x(2));

y(2)=x(2)-0.7*cos(x(1))+0.2*sin(x(2));

y=[y(1),y(2)];

然后用 fsolve求解

>>[x,fval,exitflag,output,jacob]=fsolve(‘fc’,[1.,1.],[])

%[1.,1.]为初值

x =

0.3367 0.5553

fval =

1.0e-008 *

0.2029 0.5242

exitflag =

1

02s i n2.01c o s7.02

02c o s2.01s i n7.01

xxx

xxx

output =

firstorderopt,5.7877e-009

iterations,5

funcCount,16

cgiterations,4

algorithm,[1x43 char]

jacob =

(1,1) 0.3393

(2,1) 0.2313

(1,2) -0.1700

(2,2) 1.1700

求方程组 的解。

初始零点猜测值为,[x0,y0]=[0.0,-0.0058]

用 fsolve 函数命令求精确解

fun=’[sin(x(1))+x(2),x(1)+6*x(2)]’; %用字符串表达式形式命令 。

注意自变量必须写成 x(1)和 x(2)

fun 函数也可用 M 函数文件的形式

function yy=fun(x)

yy(1)=sin(x(1))+x(2);

yy(2)=x(1)+6*x(2);

[XX,YY]=fsolve(fun,[x0(1),y0(1)]) %解此非线性方程组

XX =

1.0e-016 *

-0.5464 0.1214

YY =

1.0e-016 *

-0.4250 0.1821

06

0s in

yx

yx

第 3章 矩阵、数组和符号运算第 3章 矩阵、数组和符号运算

c.一般代数方程 (组 )的符号解

slove 命令可以解一般代数方程,包括 线性方程,非线性方程和超越方程 。 当方程不存在符号解,且又无其他自由参数时,函数 solve 将给出数值解 。

命令调用格式为:

solve(’eqn1’,’eqn2’,...,’eqnN’),对 N 个方程的默认变量求解;

solve(’eqn1’,’eqn2’,...,’eqnN’,’var1,var2,...,varN’),对 N 个 方 程 的

var1,var2,...,varN 变量求解 。 要注意变量的英文字母顺序,且在 变量前不可有空格 ;

S=solve(’eqn1’,’eqn2’,...,’eqnN’,’var1’,’var2’,...,’varN’),对 N 个方程的 ’ var2’,...,’varN‘变量求解; S是一个结构数组 ;

[x1,x2,…,xn]=solve(‘eqn1’,‘eqn2’,...,‘eqnN’,‘var1’,‘var2’,...,‘varN’),对变量 var1,var2,...,varN 求解,求解的结果分别赋给 x1,x2,…,xn(按照变量 var1,var2,...varN 在英文字母中的顺序给 x1,x2,…,xn赋值 )。

第 3章 矩阵、数组和符号运算求非线性方程组 的解 。

解:

[x,y,z]=solve('x^2+sqrt(2)*x+2=0','x+3*z=4','y*z=-1','x','y','z')

x =

[ (-1/2+1/2*i*3^(1/2))*2^(1/2)]

[ (-1/2-1/2*i*3^(1/2))*2^(1/2)]

y=

[-51/73+3/73*i*3^(1/2)-27/146*(-1/2+1/2*i*3^(1/2))*2^(1/2)-3/146*2^(1/2)]

[ -51/73-3/73*i*3^(1/2)-27/146*(-1/2-1/2*i*3^(1/2))*2^(1/2)-3/146*2^(1/2)]

z =

[ -1/3*(-1/2+1/2*i*3^(1/2))*2^(1/2)+4/3]

[ -1/3*(-1/2-1/2*i*3^(1/2))*2^(1/2)+4/3]

1

43

0222

yz

zx

xx

d,常微分方程的符号解函数 dsolve 用来求常微分方程的符号解 。

在符号方程中,用符号表达式中包含的字母,D”来代替微分运算,符号 D2,D3,… DN 分别对应于第二,第三,… 第 N 阶导数 。 因变量是位于 D后面的变量,缺省的自变量为 t。

dsolve 的调用格式为:

S=dsolve(’eqn1’,’eqn2’,...)

输入参数包含三部分内容,微分方程,初始条件和指定独立变量 。

输出 S是结构数组 。

初始条件或边界条件写成 ‘ y(a)=b’或 ‘ Dy(a)=b’等 。 a,b 可以是变量使用符以外的其他字符 。

当初始条件少于微分方程数时,在所得解中将出现任意常数符 C1,

C2,…,,解中任意常数符的数目等于所缺少的初始条件数 。

当无输出参数时,MATLAB 工作内存中在 y1,y2,… 定义的输出参数中保存计算结果 。

第 3章 矩阵、数组和符号运算

>> dsolve('Dx=-a*x')

ans =

C1*exp(-a*t)

>> dsolve('Dx=-a*x','x(0)=2')

ans =

2*exp(-a*t)

>> dsolve('Df - f -sin(t)=0','f(pi/2) = 0')

ans =

-1/2*cos(t)-1/2*sin(t)+1/2*exp(t)/(cosh(1/2*pi)+sinh(1/2*pi))

>> y = dsolve('(Dy)^2 + y^2 = 1','y(0) = 0')

y =

[ sin(t)]

[ -sin(t)]

第 3章 矩阵、数组和符号运算求,,f(0)=1,g(0)=2 的解 。

S = dsolve(’Df = f + g’,’Dg = -f + g’,’f(0) = 1’,’g(0) = 2’)

S =

f,[1x1 sym]

g,[1x1 sym]

S.f

ans =

exp(t)*(cos(t)+2*sin(t))

S.g

ans =

exp(t)*(-sin(t)+2*cos(t))

函数 dsolve 命令求解微分方程时,如果得不到其解,则给出 警告信息 。

gftfdd gftgdd

第 3章 矩阵、数组和符号运算

8,符号函数的二维图二维符号函数的专用命令 ezplot

格式为,ezplot(sym-fun,limits)

参数含义如下:

sym-fun,符号函数或代表它的符号变量;

limits,为自变量 x 的取值范围,即 limits=[x1,x2],其默认值为 [-2pi,2pi]。

用 ezplot绘函数图

syms x

f=(x^2)^(cos(x)^2);

ezplot(f)

第 3章 矩阵、数组和符号运算第 3章 矩阵、数组和符号运算

9,图示化函数计算器

a,单变量函数分析界面用于考察 两个一元函数各自性质及其相互关系 。 该函数计算器由 funtool.m 文件生成 。

在 MATLAB 命令窗口中键入下面命令即可,funtool

第 3章 矩阵、数组和符号运算单函数运算、函数和常数 a的运算、两个函数之间的运算和辅助操作辅助操作

b.泰勒级数逼近分析界面观察函数 f(x)在给定区间位置上的 N 阶泰勒多项式 逼近的情况。

在 MATLAB 工作窗口中输入命令,taylortool或

taylortool(fx)

fx为字符串第 3章 矩阵、数组和符号运算第 3章 矩阵、数组和符号运算

10,符号计算的 Maple 接口

MAPLE 具有强大的符号计算功能和丰富的应用数学函数。

为了能够 在 MATLAB 的工作环境中利用 MAPLE 的符号计算 能力,

MATLAB 提供有专门的指令用于 MATLAB 和 MAPLE的连接。

mfun,对 MAPLE 中的若干重要的特殊函数实施数值计算。

使用格式为,mfun(’function’,par1,par2,par3,par4)

该函数以数值方式计算 MAPLE 中特殊函数 ’ function’的值,函数的参数由 par1,par2,par3,par4指定,最多可以指定四个参数 。

mfunlist,采用 MATLAB 注释语句 列出 能被 mfun 计算的一些重要

MAPLE 函数列表 ;

mhelp,查阅 MAPLE 库函数的联机帮助 文件,以获取 MAPLE 库函数及其调用方法;

maple,进入 MAPLE 的工作空间,直接对访问 MAPLE 的任意函数进行计算,并将结果返回至 MATLAB 工作空间。

>> x = 0:0.1:5.0;

>> y = mfun('FresnelC',x);

( 1) 求解下列微分方程

a,y’=(x+y)(x-y)

b,xy’=ytg(y/x),y(10)=1

c,y’=-xsinx/cosy,y(2)=1

( 2) 求微分方程组 的解。

( 3)求微分方程组,当初始条件为

f(0)=2,g(2)=5 时的解。

( 4)练习使用单变量函数分析界面。

4

2

fg

gff

gftfdd gftgdd

上机 练习( 6)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值