Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Please write the program using MATLAB syntax. 1. Write a program to implement st

ID: 3599255 • Letter: P

Question

Please write the program using MATLAB syntax.

1. Write a program to implement steepest descent using line search. Terminate the line search when the length of the interval is less than 10-6. Apply the program to Rosen- brock's function 212 f(x) = 100(z2-zf)" + (1-x1)2. Analytically determine the minimizer for Rosenbrock's function and show that it satis- fies the FONC and SOSC. Consider the rate at which f(xk) approaches the minimum value. Determine if this is consistent with the convergence theory for steepest descent. Do all of the above for the quadratic f(x) = 2x? + 2x2-2z1x2-2x1-2x2 +3. Use the theory to explain any differences in the performance of the algorithm on these two problems.

Explanation / Answer

The solve function can also solve higher order equations. It is often used to solve quadratic equations. The function returns the roots of the equation in an array.

The following example solves the quadratic equation x2 -7x +12 = 0. Create a script file and type the following code

eq = 'x^2 -7*x + 12 = 0';

s = solve(eq);

disp('The first root is: '), disp(s(1));

disp('The second root is: '), disp(s(2));

When you run the file, it displays the following result

The first root is:

   3

The second root is:

   4

The solve function can also solve higher order equations. For example, let us solve a cubic equation as (x-3)2(x-7) = 0

solve('(x-3)^2*(x-7)=0')

MATLAB will execute the above statement and return the following result

ans =

3

3

7

In case of higher order equations, roots are long containing many terms. You can get the numerical value of such roots by converting them to double. The following example solves the fourth order equation x4 7x3 + 3x2 5x + 9 = 0.

Create a script file and type the following code

eq = 'x^4 - 7*x^3 + 3*x^2 - 5*x + 9 = 0';

s = solve(eq);

disp('The first root is: '), disp(s(1));

disp('The second root is: '), disp(s(2));

disp('The third root is: '), disp(s(3));

disp('The fourth root is: '), disp(s(4));

% converting the roots to double type

disp('Numeric value of first root'), disp(double(s(1)));

disp('Numeric value of second root'), disp(double(s(2)));

disp('Numeric value of third root'), disp(double(s(3)));

disp('Numeric value of fourth root'), disp(double(s(4)));

When you run the file, it returns the following result

The first root is:

6.630396332390718431485053218985

The second root is:

1.0597804633025896291682772499885

The third root is:

- 0.34508839784665403032666523448675 - 1.0778362954630176596831109269793*i

The fourth root is:

- 0.34508839784665403032666523448675 + 1.0778362954630176596831109269793*i

Numeric value of first root

    6.6304

Numeric value of second root

    1.0598

Numeric value of third root

-0.3451 - 1.0778i

Numeric value of fourth root

-0.3451 + 1.0778i

The solve function can also be used to generate solutions of systems of equations involving more than one variables. Let us take up a simple example to demonstrate this use.

Let us solve the equations

5x + 9y = 5

3x – 6y = 4

Create a script file and type the following code

s = solve('5*x + 9*y = 5','3*x - 6*y = 4');

s.x

s.y

When you run the file, it displays the following result

ans =

22/19

ans =

-5/57

In same way, you can solve larger linear systems. Consider the following set of equations

x + 3y -2z = 5

3x + 5y + 6z = 7

2x + 4y + 3z = 8

The expand and the collect function expands and collects an equation respectively. The following example demonstrates the concepts

When you work with many symbolic functions, you should declare that your variables are symbolic.

Create a script file and type the following code

syms x %symbolic variable x

syms y %symbolic variable x

% expanding equations

expand((x-5)*(x+9))

expand((x+2)*(x-3)*(x-5)*(x+7))

expand(sin(2*x))

expand(cos(x+y))

% collecting equations

collect(x^3 *(x-7))

collect(x^4*(x-3)*(x-5))

When you run the file, it displays the following result

ans =

x^2 + 4*x - 45

ans =

x^4 + x^3 - 43*x^2 + 23*x + 210

ans =

2*cos(x)*sin(x)

ans =

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

ans =

x^4 - 7*x^3

ans =

x^6 - 8*x^5 + 15*x^4

The factor function factorizes an expression and the simplify function simplifies an expression. The following example demonstrates the concept

Example

Create a script file and type the following code

syms x

syms y

factor(x^3 - y^3)

factor([x^2-y^2,x^3+y^3])

simplify((x^4-16)/(x^2-4))

When you run the file, it displays the following result

ans =

(x - y)*(x^2 + x*y + y^2)

ans =

[ (x - y)*(x + y), (x + y)*(x^2 - x*y + y^2)]

ans =

x^2 + 4