1. Trang chủ
  2. » Công Nghệ Thông Tin

Learning MATLAB Version 6 (Release 12) phần 9 potx

29 235 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Symbolic Math Toolbox
Trường học University of Science
Chuyên ngành Mathematics
Thể loại bài tập
Thành phố Ho Chi Minh City
Định dạng
Số trang 29
Dung lượng 87,22 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

It is also possible to try to compute eigenvalues of symbolic matrices, but closedform solutions are rare... The last application ofsimple usessimplify to obtain the final form.Jordan Ca

Trang 1

For this modified Rosser matrix

F = eig(S)returns

F = [ -1020.0532142558915165931894252600]

of digits to the right of the decimal place

It is also possible to try to compute eigenvalues of symbolic matrices, but closedform solutions are rare The Givens transformation is generated as the matrixexponential of the elementary matrix

The Symbolic Math Toolbox commandssyms t

A = sym([0 1; -1 0]);

G = expm(t*A)return

Trang 3

Notice the first application ofsimpleusessimplifyto produce a sum of sinesand cosines Next,simpleinvokesradsimpto producecos(t) + i*sin(t)forthe first eigenvector The third application ofsimple usesconvert(exp) tochange the sines and cosines to complex exponentials The last application ofsimple usessimplify to obtain the final form.

Jordan Canonical Form

The Jordan canonical form results from attempts to diagonalize a matrix by asimilarity transformation For a given matrixA, find a nonsingular matrixV,

so thatinv(V)*A*V, or, more succinctly,J = V\A*V, is “as close to diagonal aspossible.” For almost all matrices, the Jordan canonical form is the diagonalmatrix of eigenvalues and the columns of the transformation matrix are theeigenvectors This always happens if the matrix is symmetric or if it hasdistinct eigenvalues Some nonsymmetric matrices with multiple eigenvaluescannot be diagonalized The Jordan form has the eigenvalues on its diagonal,but some of the superdiagonal elements are one, instead of zero The statement

J = jordan(A)computes the Jordan canonical form ofA The statement[V,J] = jordan(A)

also computes the similarity transformation The columns ofV are thegeneralized eigenvectors ofA

The Jordan form is extremely sensitive to perturbations Almost any change in

Acauses its Jordan form to be diagonal This makes it very difficult to computethe Jordan form reliably with floating-point arithmetic It also implies thatAmust be known exactly (i.e., without round-off error, etc.) Its elements must beintegers, or ratios of small integers In particular, the variable-precisioncalculation,jordan(vpa(A)), is not allowed

For example, let

A = sym([12,32,66,116;-25,-76,-164,-294;

21,66,143,256;-6,-19,-41,-73])

A = [ 12, 32, 66, 116]

[ -25, -76, -164, -294]

[ 21, 66, 143, 256]

Trang 4

ThereforeA has a double eigenvalue at 1, with a single Jordan block, and a

double eigenvalue at 2, also with a single Jordan block The matrix has only

two eigenvectors,V(:,1) andV(:,3) They satisfy

Trang 5

Singular Value Decomposition

Only the variable-precision numeric computation of the singular valuedecomposition is available in the toolbox One reason for this is that theformulas that result from symbolic computation are usually too long andcomplicated to be of much use IfA is a symbolic matrix of floating-point orvariable-precision numbers, then

S = svd(A)computes the singular values ofA to an accuracy determined by the currentsetting ofdigits And

end endThe most efficient way to generate the matrix is[J,I] = meshgrid(1:n);

A = sym(1./(I - J+1/2));

π

Trang 6

Since the elements ofA are the ratios of small integers,vpa(A) produces a

variable-precision representation, which is accurate todigitsprecision Hence

S = svd(vpa(A))

computes the desired singular values to full accuracy Withn = 16 and

digits(30), the result is

variable-precision arithmetic and then converted to adouble The second

element is computed with floating-point arithmetic

Trang 7

8.4335e-08 8.4335e-08 3.0632e-09 3.0632e-09 9.0183e-11 9.0183e-11 2.1196e-12 2.1196e-12 3.8846e-14 3.8636e-14 5.3504e-16 4.4409e-16 5.2097e-18 0 3.1975e-20 0 9.3024e-23 0Since the relative accuracy ofpiispi*eps, which is6.9757e-16, either columnconfirms our suspicion that four of the singular values of the16-by-16exampleequal to floating-point accuracy.

Eigenvalue Trajectories

This example applies several numeric, symbolic, and graphic techniques tostudy the behavior of matrix eigenvalues as a parameter in the matrix isvaried This particular setting involves numerical analysis and perturbationtheory, but the techniques illustrated are more widely applicable

In this example, we consider a 3-by-3 matrix A whose eigenvalues are 1, 2, 3 First, we perturb A by another matrix E and parameter As t

increases from 0 to 10-6, the eigenvalues , , change to

Trang 8

This, in turn, means that for some value of , the perturbed

Let’s find the value oft, called , where this happens

The starting point is a MATLAB test example, known asgallery(3)

eigenvalues may vary from one machine to another, but on a typical

workstation, the statements

Trang 9

format long

e = eig(A)produce

e = 0.99999999999642 2.00000000000579 2.99999999999780

Of course, the example was created so that its eigenvalues are actually 1, 2, and

3 Note that three or four digits have been lost to roundoff This can be easilyverified with the toolbox The statements

B = sym(A);

e = eig(B)'

p = poly(B)

f = factor(p)produce

e = [1, 2, 3]

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

f = (x-1)*(x-2)*(x-3)Are the eigenvalues sensitive to the perturbations caused by roundoff errorbecause they are “close together”? Ordinarily, the values 1, 2, and 3 would beregarded as “well separated.” But, in this case, the separation should be viewed

on the scale of the original matrix IfA were replaced byA/1000, theeigenvalues, which would be 001, 002, 003, would “seem” to be closertogether

But eigenvalue sensitivity is more subtle than just “closeness.” With a carefullychosen perturbation of the matrix, it is possible to make two of its eigenvaluescoalesce into an actual double root that is extremely sensitive to roundoff andother errors

Trang 10

One good perturbation direction can be obtained from the outer product of theleft and right eigenvectors associated with the most sensitive eigenvalue Thefollowing statement creates

Trang 11

figure shows plots ofp, considered as a function ofx, for three different values

oft: t = 0,t = 0.5e-6, andt = 1.0e-6 For each value, the eigenvalues arecomputed numerically and also plotted

text(2.25,.35,['t = ' num2str( k*0.5e-6 )]);

end

The bottom subplot shows the unperturbed polynomial, with its three roots at

1, 2, and 3 The middle subplot shows the first two roots approaching each

−0.5 0

0.5

t = 0

−0.5 0

0.5

t = 5e−007

−0.5 0 0.5

t = 1e−006

Trang 12

other In the top subplot, these two roots have become complex and only one

real root remains

The next statements compute and display the actual eigenvalues

Trang 13

plot(lambda,tvals) xlabel('\lambda'); ylabel('t');

title('Eigenvalue Transition')

to produce a plot of their trajectories

Abovet = 0.8e-6, the graphs of two of the eigenvalues intersect, while below

t= 0.8e-6, two real roots become a complex conjugate pair What is the precisevalue oft that marks this transition? Let denote this value oft

One way to find is based on the fact that, at a double root, both the functionand its derivative must vanish This results in two polynomial equations to besolved for two unknowns The statement

sol = solve(p,diff(p,'x'))solves the pair of algebraic equationsp = 0 anddp/dx = 0 and produces

1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 3 0

0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8

Trang 14

Let’s verify that this value of does indeed produce a double eigenvalue at

To achieve this, substitute for t in the perturbed matrix

and find the eigenvalues of That is,

Trang 15

Solving Equations

Solving Algebraic Equations

IfS is a symbolic expression,solve(S)

attempts to find values of the symbolic variable inS (as determined byfindsym) for whichS is zero For example,

syms a b c x

S = a*x^2 + b*x + c;

solve(S)uses the familiar quadratic formula to produceans =

[1/2/a*(-b+(b^2-4*a*c)^(1/2))]

[1/2/a*(-b-(b^2-4*a*c)^(1/2))]

This is a symbolic vector whose elements are the two solutions

If you want to solve for a specific variable, you must specify that variable as anadditional argument For example, if you want to solveS forb, use thecommand

b = solve(S,b)which returns

b = -(a*x^2+c)/xNote that these examples assume equations of the form If you need

to solve equations of the form , you must use quoted strings Inparticular, the command

s = solve('cos(2*x)+sin(x)=1')returns a vector with four solutions

f x( ) = 0

f x( ) = q x( )

Trang 16

Several Algebraic Equations

Now let’s look at systems of equations Suppose we have the system

and we want to solve for x and y First create the necessary symbolic objects.

Trang 17

appears to have redundant components This is due to the first equation

, which has two solutions in x and y: , Changing theequations to

eqs1 = 'x^2*y^2=1, x-y/2-alpha' [x,y] = solve(eqs1)

produces four distinct solutions

x = [ 1/2*alpha+1/2*(alpha^2+2)^(1/2)]

[ 1/2*alpha-1/2*(alpha^2+2)^(1/2)]

[ 1/2*alpha+1/2*(alpha^2-2)^(1/2)]

[ 1/2*alpha-1/2*(alpha^2-2)^(1/2)]

y = [ -alpha+(alpha^2+2)^(1/2)]

S = solve('u^2-v^2 = a^2','u + v = 1','a^2-2*a = 3')returns

S = a: [2x1 sym]

u: [2x1 sym]

v: [2x1 sym]

Trang 18

The solutions fora reside in the “a-field” ofS That is,

Similar comments apply to the solutions foru andv The structureS can now

be manipulated by field and index to access a particular portion of the solution.For example, if we want to examine the second solution, we can use the

whose rows comprise the distinct solutions of the system

Linear systems of simultaneous equations can also be solved using matrix

division For example,

Trang 19

A = [1 2; 4 5];

b = [u; v];

z = A\bresult insol = [ -5/3*u+2/3*v]

[ 4/3*u-1/3*v]

z = [ -5/3*u+2/3*v]

[ 4/3*u-1/3*v]

Thuss andz produce the same solution, although the results are assigned todifferent variables

Single Differential Equation

The functiondsolve computes symbolic solutions to ordinary differentialequations The equations are specified by symbolic expressions containing theletterD to denote differentiation The symbolsD2,D3, DN, correspond to thesecond, third, , Nth derivative, respectively Thus,D2yis the Symbolic MathToolbox equivalent of The dependent variables are those preceded by

D and the default independent variable ist Note that names of symbolicvariables should not containD The independent variable can be changed from

t to some other symbolic variable by including that variable as the last inputargument

Initial conditions can be specified by additional equations If initial conditionsare not specified, the solutions contain constants of integration,C1,C2, etc.The output fromdsolveparallels the output fromsolve That is, you can calldsolvewith the number of output variables equal to the number of dependentvariables or place the output in a structure whose fields contain the solutions

of the differential equations

Example 1

The following call todsolve

d2y dt⁄ 2

Trang 20

usesy as the dependent variable andt as the default independent variable.

The output of this command is

Trang 21

The key issues in this example are the order of the equation and the initialconditions To solve the ordinary differential equation

simply type

u = dsolve('D3u=u','u(0)=1','Du(0)=-1','D2u(0) = pi','x')UseD3u to represent andD2u(0) for

Several Differential Equations

The functiondsolvecan also handle several ordinary differential equations inseveral variables, with or without initial conditions For example, here is a pair

of linear, first order equations

S = dsolve('Df = 3*f+4*g', 'Dg = -4*f+3*g')The computed solutions are returned in the structureS You can determine thevalues off andg by typing

f = S.f

f = exp(3*t)*(cos(4*t)*C1+sin(4*t)*C2)

g = S.g

g = -exp(3*t)*(sin(4*t)*C1-cos(4*t)*C2)

If you prefer to recoverf andg directly as well as include initial conditions,type

[f,g] = dsolve('Df=3*f+4*g, Dg =-4*f+3*g', 'f(0) = 0, g(0) = 1')

f = exp(3*t)*sin(4*t)

Trang 22

This table details some examples and Symbolic Math Toolbox syntax Note thatthe final entry in the table is the Airy differential equation whose solution is

referred to as the Airy function

The Airy function plays an important role in the mathematical modeling of thedispersion of water waves

Differential Equation MATLAB Command

y = dsolve('Dy+4*y = exp(-t)', 'y(0) = 1')

y = dsolve('D2y+4*y = exp(-2*x)', 'y(0)=0', 'y(pi) = 0', 'x')

(The Airy Equation)

y = dsolve('D2y = x*y','y(0) = 0', 'y(3) = besselk(1/3, 2*sqrt(3))/pi', 'x')

Trang 24

MATLAB Quick Reference

Introduction A-2

General Purpose Commands A-3

Operators and Special Characters A-5

Logical Functions A-5

Language Constructs and Debugging A-5

Elementary Matrices and Matrix Manipulation A-7

Specialized Matrices A-8

Elementary Math Functions A-8

Specialized Math Functions A-9

Coordinate System Conversion A-10

Matrix Functions - Numerical Linear Algebra A-10

Data Analysis and Fourier Transform Functions A-11

Polynomial and Interpolation Functions A-12

Function Functions - Nonlinear Numerical Methods A-13

Sparse Matrix Functions A-14

Sound Processing Functions A-15

Character String Functions A-16

File I/O Functions A-17

Bitwise Functions A-17

Structure Functions A-18

MATLAB Object Functions A-18

MATLAB Interface to Java Functions A-18

Cell Array Functions A-19

Multidimensional Array Functions A-19

Data Visualization A-19

Graphical User Interfaces A-24

Trang 25

This appendix lists the MATLAB functions as they are grouped in Help bysubject Each table contains the function names and brief descriptions Forcomplete information about any of these functions, refer to Help and either:

• Select the function from the MATLAB Function Reference (Functions by

Category or Alphabetical List of Functions), or

• From the Search tab in the Help Navigator, select Function Name as

Note If you are viewing this book from Help, you can click on any function

name and jump directly to the corresponding MATLAB function page

Trang 26

General Purpose Commands

This set of functions lets you start and stop

MATLAB, work with files and the operating

system, control the command window, and manage

the environment, variables, and the workspace

Managing Commands and Functions

addpath Add directories to MATLAB’s

search path

doc Display HTML documentation

in Help browser

docopt Display location of help file

directory for UNIX platforms

genpath Generate a path string

help Display M-file help for

MATLAB functions in theCommand Window

helpbrowser Display Help browser for access

to all MathWorks online help

helpdesk Display Help browser

helpwin Display M-file help and provide

access to M-file help for allfunctions

lasterr Last error message

lastwarn Last warning message

license Show MATLAB license number

lookfor Search for specified keyword in

M-file help entries

partialpath Partial pathname

path Control MATLAB’s directory

search path

pathtool Open the GUI for viewing and

modifying MATLAB’s path

profile Start the M-file profiler, a utility

for debugging and optimizing code

profreport Generate a profile report

rehash Refresh function and file system

caches

rmpath Remove directories from

MATLAB’s search path

support Open MathWorks Technical

Support Web page

ver Display version information for

MATLAB, Simulink, and toolboxes

version Get MATLAB version number

web Point Help browser or Web

browser at file or Web site

what List MATLAB-specific files in

current directory

whatsnew Display README files for

MATLAB and toolboxes

which Locate functions and files

Managing Variables and the Workspace

clear Remove items from the

workspace

disp Display text or array

length Length of vector

load Retrieve variables from disk

memory Help for memory limitations

mlock Prevent M-file clearing

munlock Allow M-file clearing

openvar Open workspace variable in

Array Editor for graphical editing

pack Consolidate workspace memory

save Save workspace variables on

disk

saveas Save figure or model using

Managing Commands and Functions (Continued)

Ngày đăng: 12/08/2014, 20:22

TỪ KHÓA LIÊN QUAN