# Quick Start Reference for MATLAB and R

This quick start reference originates from the short matlab tutorial that I had compiled for my students at the University of Applied Sciences HSZ-T in 2004 for my lecture Data Warehouse and Data Mining. It was a quick introduction to matlab which effectively fulfilled its purpose because my students were in fact able to implement simple estimation and optimization models within a couple of days. I extended this short tutorial then with comparable R commands to make it useful to a broader audience.

Both matlab and R are for me excellent mathematic software. Both of them have all the tools and a library of mathematical functions to implement all kinds of statistical risk, estimation or optimization models I want. Both have interface functions for reading files and databases, as well as writing to them.

I generally prefer matlab to R because matlab has a more intuitive syntax and a more user-friendly development environment with excellent documentation. The syntax of matlab is closer to the generic language of math compared to R; R looks sometimes more like a programming language with all its object stuff and illegible object property names. Apart from these slight advantages that would appeal probably more to beginners, matlab has the Simulink which is a great tool for visual demonstrations of analytical models with nice input-output blocks.

matlab is available for students and academic staff at some universities, but it is quite expensive for commercial use (see www.Mathworks.com). R is open-source and free (see www.r-project.org), and it has a broad acceptance for valuation and risk modeling among many financial institutes. You can download and begin to use R within minutes. The recent versions of introduction and user reference documents written for R are also quite user-friendly.

You can download this quick start reference as a formatted pdf file from the download page together with the executable demonstration scripts for matlab and R. These demo scripts include all the commands included in this reference, and more. I would also recommend the very useful MATLAB/R reference by David Hiebeler also downloadable as pdf file.
Tunç Ali Kütükçüoglu, 14. March 2012

 MATLAB R Useful help commands % general help >>help % general help >>help % elementary math functions >>help elfun % how while works >>help while % search for keywords >>lookfor optimization # open general help document (online) >help.start() # get help for a specific function or word >help(‘min’) # or >?min # search for keywords >help.search(‘optimization’) # or >??optimization Current (working) directory >>pwd % You can easily change the working directory by using the directory toolbox in GUI >> getwd() # see menu “File/Change dir…” for changing the working directory Comment symbol % # Assignment Assignment % Assignment with automatic output to console if there is no semicolon at the end of the statement >> a = 5 a = 5 % Assignment without output to console >> a = 5; # Assignment > A=5 # or > A > A  5 # R doesn’t display anything in the console automatically even if there is no semicolon at the end of the statement Create vectors >> v = [1 3 6 9] v = 1 3 6 9 % Series: StartValue:Interval:EndValue >> v = 1:5 v = 1 2 3 4 5 >> v = 1:2:9 v = 1 3 5 7 9 >> v = 10:-1:5 v = 10 9 8 7 6 5 % vector with multiple (repeating) constant values >> v = ones(1,4) * 2 v = 2 2 2 2 % horizontal and vertical vectors >> w = [1 3]’ w = 1 3 % For matlab, a horizontal vector is a 1xN, a vertical vector is a Nx1 matrix. There is not a separate entity as “vector” in addition to “matrix”. >v = c(1, 3, 6, 9) > v  1 3 6 9 # Series: seq(StartValue,EndValue,Interval) >v = 1:5 > v  1 2 3 4 5 > v = seq(1,9,2) > v  1 3 5 7 9 > v = seq(10,5,-1) > v  10 9 8 7 6 5 # vector with multiple (repeating) constant values > v = rep(3,4) > v  3 3 3 3 # horizontal and vertical vectors # R doesn’t make a distinction between vertical and horizontal vectors. A “vector” is not a “matrix” for R.
 Create matrices % 2×3 matrix with given element values % “;” as row delimiter % “,” or blank as column delimiter >> D = [1 2 3; 4 5 6] D = 1 2 3 4 5 6 % Create 2×4 matrix with random elements (values uniformly distributed between 0 and 1) >>A = rand(2,4) A = 0.8147 0.1270 0.6324 0.2785 0.9058 0.9134 0.0975 0.5469 % 1×3 matrix with all 3s >>B = ones(1,3) * 3; % 3×2 matrix with all 0s >>C = zeros(3,2); # 2×3 matrix with given element values # fill values row-wise >D=matrix(c(1,2,3,4,5,6), nrow=2,byrow=TRUE) >D [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 # fill values column-wise >D=matrix(c(1,4,2,5,3,6),nrow=2) # Create 2×4 matrix with random elements (values uniformly distributed between 0 and 1) >A = matrix(runif(2*4),2,4) [,1] [,2] [,3] [,4] [1,] 0.2180 0.1598 0.7320 0.7478 [2,] 0.9897 0.5809 0.7781 0.7134 # 1×3 matrix with all 3s >B = matrix(3,1,3) # 3×2 matrix with all 0s >C = matrix(0,3,2) Show all predefined variables >>who >ls() Size of matrix % number of rows and columns >> [row,col] = size(A); % number of rows >> row= size(A,1); % number of columns >> col= size(A,2); % maximum dimension (max(#row, #col)) >>length(A); >>length([1 2 3]); % total number of elements in a matrix >>numel(A) # number of rows >row = nrow(A) # number of columns >col = ncol(A) # maximum dimension (max(#row, #col)) >max(dim(A)) # total number of elements in a vector >length(v) # total number of elements in a matrix >length(A) # dimensions of a vector > dim(c(1,2,3)) NULL Access elements of a vector or matrix % element of a vector >> a = v(2); % access element of a matrix with row and column index >> x = M(2,3); # element of a vector > v # access element of a matrix with row and column indexD > x = D[2,3] Transpose vectors and matrices % make a horizontal vector (i.e. 1xN matrix) vertical, or vice versa >> v = [1 2 3]’ v = 1 2 3 % transpose matrix >> X = [1 2 3; 4 5 6]’ X = 1 4 2 5 3 6 # Transpose operation converts a vector into a horizontal (1xN) matrix > t(c(1,2,3)) [,1] [,2] [,3] [1,] 1 2 3 # transpose matrix >D=matrix(c(1,4,2,5,3,6),nrow=2) > D [,1] [,2] [,3] [1,] 1 2 3 [2,] 4 5 6 > t(D) [,1] [,2] [1,] 1 4 [2,] 2 5 [3,] 3 6 Add column(s) or row(s) to a matrix >> v = [5 10]’ v = 5 10 % horizontal (column-wise) concatenation >> X = [1 2; 3 4]; >> X = [X, v] X = 1 2 5 3 4 10 % vertical (row-wise) concatenation >>v = [5 10]; >> X = [1 2; 3 4]; >> X = [X; v] X = 1 2 3 4 5 10 > v = matrix(c(5,10), nrow=2) > v [,1] [1,] 5 [2,] 10 # horizontal (column-wise) concatenation >X=matrix(c(1,2,3,4),nrow=2, byrow=TRUE) >X = cbind(X,v) > X [,1] [,2] [,3] [1,] 1 2 5 [2,] 3 4 10 # vertical (row-wise) concatenation > v = matrix(c(5,10), nrow=1) >X=matrix(c(1,2,3,4),nrow=2,byrow=TRUE) >X=rbind(X,v) > X [,1] [,2] [1,] 1 2 [2,] 3 4 [3,] 5 10 Matrix partitioning (submatrices) >>X = [1 2 3 4; 5 6 7 8] X = 1 2 3 4 5 6 7 8 % single row of a matrix >> X(1,:) ans = 1 2 3 4 % submatrix with specified rows and columns >>S = X(1:2, 2:4) S = 2 3 4 6 7 8 % submatrix with specified rows and columns >>S = X([1 2], [2 4]) S = 2 4 6 8 >X=matrix(c(1,2,3,4,5,6,7,8), nrow=2,byrow=TRUE) > X [,1] [,2] [,3] [,4] [1,] 1 2 3 4 [2,] 5 6 7 8 # single row of a matrix > X[1,] # returns a vector  1 2 3 4 >X[1,,drop=FALSE] [,1] [,2] [,3] [,4] [1,] 1 2 3 4 # single column of a matrix >X[,2,drop=FALSE] [,1] [1,] 2 [2,] 6 # submatrix with specified rows and columns > S = X[c(1, 2), c(2, 4)] > S [,1] [,2] [1,] 2 4 [2,] 6 8 Insert a matrix into another matrix >>X = [1 2 3 4; 5 6 7 8] X = 1 2 3 4 5 6 7 8 >> M = X; % insert by replacing elements (element assignment) >>Y = [10 11; 12 13]; >> M(:, [2 3]) = Y M = 1 10 11 4 5 12 13 8 % insert by (horizontal) extension >>X = [X(:,1), Y, X(:, 2:4)] X = 1 10 11 2 3 4 5 12 13 6 7 8 >X=matrix(c(1,2,3,4,5,6,7,8),nrow=2, byrow=TRUE) > X [,1] [,2] [,3] [,4] [1,] 1 2 3 4 [2,] 5 6 7 8 >M=X # insert by replacing elements (element assignment) >Y=matrix(c(10,11,12,13),nrow=2, byrow=TRUE) >M[,c(2,3)] = Y > M [,1] [,2] [,3] [,4] [1,] 1 10 11 4 [2,] 5 12 13 8 # insert by (horizontal) extension >X = cbind(X[,1], Y, X[,2:4]) > X [,1] [,2] [,3] [,4] [,5] [,6] [1,] 1 10 11 2 3 4 [2,] 5 12 13 6 7 8
 Basic matrix operations >>X = [2 4 9; 16 25 36]; % square root of all elements >>C = sqrt(X) C = 1.4142 2.0000 3.0000 4.0000 5.0000 6.0000 % square of all elements >>C = C .^ 2; % matrix matrix multiplication >> v = [1 2 3]’ v = 1 2 3 >>Y = X * v Y = 37 174 % matrix scalar multiplication >>0.1 * X ans = 0.2000 0.4000 0.9000 1.6000 2.5000 3.6000 % matrix scalar division >>X / 10 ans = 0.2000 0.4000 0.9000 1.6000 2.5000 3.6000 % elementwise multiplication >> X = [1 2 3 ; 4 5 6] >>X .* X % elementwise division >> X ./ X ans = 1 1 1 1 1 1 % inverse matrix >> X = [1 3; 2 4] ; >> Z = inv(X) Z = -2.0000 1.5000 1.0000 -0.5000 >> X * Z ans = 1 0 0 1 >X = matrix(c(2,4,9,16,25,36), nrow=2, byrow=TRUE) # square root of all elements >C = sqrt(X) > C [,1] [,2] [,3] [1,] 1.414214 2 3 [2,] 4.000000 5 6 # square of all elements >C = C ^2 # matrix matrix multiplication %*% >v = matrix(c(1,2,3), nrow=3) > v [,1] [1,] 1 [2,] 2 [3,] 3 >Y = X %*% v > Y [,1] [1,] 37 [2,] 174 # matrix scalar multiplication > 0.1 * X [,1] [,2] [,3] [1,] 0.2 0.4 0.9 [2,] 1.6 2.5 3.6 # matrix scalar division > X / 10 [,1] [,2] [,3] [1,] 0.2 0.4 0.9 [2,] 1.6 2.5 3.6 # elementwise multiplication > X * X # elementwise division > X / X [,1] [,2] [,3] [1,] 1 1 1 [2,] 1 1 1 # inverse matrix >X = matrix(c(1,3,2,4), nrow=2, byrow=TRUE) >Z = solve(X) > Z [,1] [,2] [1,] -2 1.5 [2,] 1 -0.5 > X %*% Z [,1] [,2] [1,] 1 0 [2,] 0 1 Solve a typical matrix equation: A x b = c –> b = ? >>A = [1 2; 3 4]; >>c = [1 1]’ >>b = inv(A) * c b = -1.0000 1.0000 % Test the result >>A * b ans = 1.0000 1.0000 >A=matrix(c(1,2,3,4),nrow=2, byrow=TRUE) >c = matrix(c(1,1), nrow=2) >b = solve(A) %*% c > b [,1] [1,] -1 [2,] 1 # Test the result > A %*% b [,1] [1,] 1 [2,] 1 Sorting vectors >>v = [2 5 1 4]; % sort vector in ascending order % w: sorted vector % ind: element indices such that w = v(ind) [w, ind] = sort(v,’ascend’) w = 1 2 4 5 ind = 3 1 4 2 >> v(ind) ans = 1 2 4 5 >v = c(2,5,1,4) # sort vector in ascending order # w: sorted vector # ind: element indices such that w = v(ind) >res=sort(v,index.return=TRUE) >w = res\$x >ind = res\$ix > w  1 2 4 5 > ind  3 1 4 2 > v[ind]  1 2 4 5 Sorting matrices >> X=[3 5 2 7;1 10 12 5; 3 2 8 10; 1 6 4 2] X =3 5 2 7 1 10 12 5 3 2 8 10 1 6 4 2 % sort rows after first column >> sortrows(X, 1) ans = 1 10 12 5 1 6 4 2 3 5 2 7 3 2 8 10 % sort rows after first column in descending order >> sortrows(X, -1) ans = 3 5 2 7 3 2 8 10 1 10 12 5 1 6 4 2 % sort rows after first and second columns >> sortrows(X, [1 2]) ans = 1 6 4 2 1 10 12 5 3 2 8 10 3 5 2 7 % sort columns after the first row; sort rows of the transposed matrix >> sortrows(X’,1)’ ans = 2 3 5 7 12 1 10 5 8 3 2 10 4 1 6 2 > X = matrix(c(3,5,2,7,1,10,12,5,3,2,8, 10,1,6,4,2),nrow=4,byrow=TRUE) > X [,1] [,2] [,3] [,4] [1,] 3 5 2 7 [2,] 1 10 12 5 [3,] 3 2 8 10 [4,] 1 6 4 2 # sort rows after first column > X[order(X[,1]),] [,1] [,2] [,3] [,4] [1,] 1 10 12 5 [2,] 1 6 4 2 [3,] 3 5 2 7 [4,] 3 2 8 10 # sort rows after first column in descending order > X[order(-X[,1]),] [,1] [,2] [,3] [,4] [1,] 3 5 2 7 [2,] 3 2 8 10 [3,] 1 10 12 5 [4,] 1 6 4 2 # sort rows after first and second columns > X[order(X[,1],X[,2]),] [,1] [,2] [,3] [,4] [1,] 1 6 4 2 [2,] 1 10 12 5 [3,] 3 2 8 10 [4,] 3 5 2 7 # sort columns after the first row > X[,order(X[1,])] [,1] [,2] [,3] [,4] [1,] 2 3 5 7 [2,] 12 1 10 5 [3,] 8 3 2 10 [4,] 4 1 6 2
 Aggregation functions like sum, mean, max, min, stdev, variance >> X = [1 4 2; 3 6 2] X = 1 4 2 3 6 2 % sum of each column (columnwise sum) >>sum(X) ans = 4 10 4 % Generally, func(X, dim): % dim = 1 ‘ columnwise operation % dim = 2 ‘ rowwise operation % default dim (dimension) is 1 (columnwise) if no explicit dimension is given % sum of each row >>sum(X, 2) ans = 7 11 % sum of all elements of a matrix >>sum(sum(X)); % mean value of each column >> mean(X) ans = 2 5 2 % look for other functions like min(), max(), std(), var(), cov(), median() in matlab help >X = matrix(c(1,4,2,3,6,2), nrow=2,byrow=TRUE) > X [,1] [,2] [,3] [1,] 1 4 2 [2,] 3 6 2 # sum of each column (columnwise sum) >colSums(X)  4 10 4 # sum of each row >rowSums(X)  7 11 # Note that the functions colSums() and rowSums() returns vectors; not matrices. # sum of all elements of a matrix >sum(A) # mean value of each column >colMeans(X)  2 5 2 # mean value of each row >rowMeans(X)  2.333333 3.666667 # see other functions like apply(X,1,sd), apply(X,1,var), cov() and median() in R Text output to console % display simple text only >> disp(‘this is a sentence’); this is a sentence % text concatenate >> str = [‘motor ‘, ‘car’, ‘s’] str = motor cars >> v = [1 2 3 4]; >> disp([‘v = ‘, num2str(v)]); v = 1 2 3 4 % text output with an integer parameter, “\n” for explicit line feed >> fprintf(‘a is equal to %d\n’, 5) a is equal to 5 % text output with a floating number >>fprintf(‘b is equal to %f\n’, sqrt(2)) b is equal to 1.414214 % number formatting: Show two decimals after fractional point >> fprintf(‘b is equal to %.2f\n’, sqrt(2)) b is equal to 1.41 >> fprintf(‘Results: a = %d, b = %.1f, c = %.1f\n’, 4, 5.18, 6.12); Results: a = 4, b = 5.2, c = 6.1 # display simple text only >print(‘this is a sentence’);  “this is a sentence” # text concatenate >str=paste(‘motor ‘,’car’,’s’,sep=”); > str  “motor cars” >v = c(1,2,3,4) > print(paste(‘v =’, paste(as.character(v),collapse=’ ‘)))  “v = 1 2 3 4” # text output with an integer parameter >str=sprintf(‘a is equal to %d’, 5) > str  “a is equal to 5” # text output with a floating number > str = sprintf(‘b is equal to %f’, sqrt(2)) > str  “b is equal to 1.414214” # number formatting: Show two decimals after fractional point > sprintf(‘b is equal to %.2f’, sqrt(2))  “b is equal to 1.41” > sprintf(‘Results: a = %d, b = %.1f, c = %.2f’, 4, 5.18, 6.12);  Results: a = 4, b = 5.2, c = 6.12 Programming language constructs % while loop >> v = [8 5 3 7 2 8 1 2]; % start from left, find the first number smaller than or equal to 2 >> i = 1; >> while v(i) > 2 i = i+1; end >> fprintf(‘Results: i = %d,v(i) = %d\n’, i,v(i)) Results: i = 5, v(i) = 2 % alternative method >>a = find(v>i = a(1) % look for find() in matlab help: It is a useful and versatile search function % for loop % generate identity matrix (all diagonal elements 1, others 0) >> I = zeros(3,3); >> for i=1:3 I(i, i) = 1; end >> I I = 1 0 0 0 1 0 0 0 1 % alternative method >> I = eye(3); % if statements >> x = 5; % check if x is in range (2,10) >> if (x > 2) && (x < 10) disp(‘x is in range’) else disp(‘x is not in range’) end x is in range % see keywords like switch, break and continue for other programming constructs # while loop > v = c(8,5,3,7,2,8,1,2) # start from left, find the first number smaller than or equal to 2 > i=1 > while (v[i]>2){ i=i+1 } >str=sprintf(‘Results: i = %d, v[i] = %d’,i,v[i]) > print(str)  “Results: i = 5, v[i] = 2” # alternative method > a = which(vi = a # look for which() in R help; it is a useful search function # for loop # generate identity matrix (all diagonal elements 1, others 0) > I = matrix(0, 3, 3) > for (i in 1:3) { I[i,i]=1 } > I [,1] [,2] [,3] [1,] 1 0 0 [2,] 0 1 0 [3,] 0 0 1 # alternative method > I = diag(3) # if statements > x = 5; # check if x is in range (2,10) > if1 { print(‘x is in range’) } else { print(‘x is not in range’)}  “x is in range” # see keywords like switch, ifelse, repeat and next for other programming constructs Writing scripts and functions % script “test1.m” (text file) in current (working) directory % start script disp(‘This is a test script’); x=5 % end script % running the script from console >>test1 This is a test script x = 5 % function with multiple arguments and a single return value: text file “difference.m” in current directory: function c = difference(a,b) c = a – b; end % calling the function from console >> d = difference(10,2) d = 8 % function with multiple return values; text file sumdif.m in current directory: function [s,d] = sumdif(a,b) s = a + b; d = a – b; end % calling the function from console >> [s,d] = sumdif(5,3) s = 8 d = 2 # script “test1.r” (text file) in current (working) directory (menu “File>New script”) # change the working directory from menu “File>Change dir…” if necessary # start script print(‘This is a test script’); x = 5 print(sprintf(‘x = %d’, x)) # end script # running the script from console > source(‘test1.r’)  “This is a test script”  “x = 5” # function with multiple arguments and a single return value: any text file, for example “test1.r” in current directory difference = function(a,b) { return(a – b) } # calling the function from console > source(‘test1.r’) > d = difference(10,2) > d  8 # function with multiple return values; any text file, for example “test1.r” in current directory sumdif = function(a,b) { s = a + b d = a – b return(list(s, d)) } # calling the function from console > source(‘test1.r’) > results = sumdif(5,3) > s = results[] > s  8 > d = results[] > d  2
 Plotting graphs % plot x-square function >>x = 1:100; >> y = x .^ 2; >> plot(x, y); >> title(‘y = x-square’) >> xlabel(‘x’) >> ylabel(‘y’) >> figure % opens new diagram % plot two curves on the same graph % first curve is red, second is blue >>x1 = 1:100; >>y1 = x1 .^ 2; >>x2 = x1; >>y2 = (x2 – 5) .^ 2; >> plot(x1, y1,’r’, x2, y2,’b’) % histogram % random number with normal distribution >> x = randn(1,10000); >> hist(x) % random number with uniform distribution >> x = rand(1,10000); >> hist(x) % z = (x + 0.5*y – 5) ^ 2 >> x = 0:0.1:5; >> y = 0:0.2:10; >> [X,Y] = meshgrid(x,y); >> Z = (X + 0.5*Y -5) .^2; % surface plot >> surf(X,Y,Z) % contour lines (level curves) >> contour(X,Y,Z) # plot x-square function > x=1:100; > y = x * x > plot(x,y,type=’l’,xlab=’x’, ylab=’y’,main=’y = x-square’) > dev.new() # opens new diagram # plot two curves on the same graph # first curve is red, second is blue > x1 = 1:100 > y1 = x ^2 > y2 = (x-5)^2 > plot(x,y1,type=”l”,col=”red”) > lines(x,y2,col=”blue”) # histogram # random number with normal distribution > x = rnorm(10000, sd=4, mean=5); > hist(x) # random number with uniform distribution > x = runif(10000); > hist(x) # z = (x + 0.5*y – 5) ^ 2 > x = seq(0, 5, 0.1) > y = seq(0, 10, 0.2) > f = function(x,y) return((x + 0.5*y -5)^2); > z = outer(x,y,f) # surface plot > persp(x,y,z) # contour lines (level curves) > contour(x,y,z) Constrained optimization Solving optimization (max/min) problems subject to given constraints (boundary conditions) % general syntax: % x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub) – fun: single-output objective function whose return is to be minimized – x0: start value for vector x – inequality constraint: Ax ≤ b – equality constraint: Aeq x = beq – lb: lower bound for x – hb: higher bound for x % Problem: Minimize z = sin(x + 0.5y) subject to constraints: x + y ≥ 5 and x – y ≤ 2 % STEP 1: Create objective function objfun; text file objfun.m in current directory: % Note: x –> v(1), y –> v(2) function z = objfun(v) z = sin(v(1) + 0.5*v(2)); end % STEP 2: Formulate boundary conditions % inequlity condition: % -(x +y) ≤ -5 % x – y ≤ 2 >>A = [-1 -1; 1 -1]; >>b = [-5 2]; % there is no equality condition >> Aeq = []; % empty matrix >> beq = []; % there are no lower or upper boundaries for x or y (v(1) or v(2)) >>lb = []; >>ub = []; % set a starting point for vector v >>v0 = [0 0]; % STEP 3: Run optimization function >>v = fmincon(@objfun,v0,A,b, Aeq,beq,lb,ub); >> v v = 2.9302 3.5663 % Test the result % Value of objective function at this point v >> objfun(v) z = -1.0000 % Inequality condition 1: check if x + y ≥ 5 >> sum(v) ans = 6.4965 % Inequality condition 2: check if x – y ≤ 2 >> v(1)-v(2) ans = -0.6361 # general syntax: # x = constrOptim(x0, fun, grad, A, b, …) – fun: single-output objective function whose return is to be minimized – x0: start value for vector x – inequality constraint: Ax ≥ b – grad: gradient function for fun. It can be “null” if it is not known. # Problem: Minimize z = sin(x + 0.5y) subject to constraints: x + y ≥ 5 and x – y ≤ 2 # STEP 1: Create objective function objfun; in any text file, for example test1.r in current directory: # Note: x –> v(1), y –> v(2) objfun = function(v) { z = sin(v + 0.5*v) return(z) } # declaring the function in console > source(‘test1.r’) # STEP 2: Formulate boundary conditions # x + y ≥ 5 # x – y ≤ 2 –> -x + y ≥ -2 > A = matrix(c(1,1,-1,1),2,2, byrow=TRUE) > b=matrix(c(5,-2),2,1) >grad = NULL # set a starting point for vector v # Note: initial value should satisfy the boundary conditions > v0 = c(3,4) # STEP 3: Run optimization function >result = constrOptim(v0, objfun, grad, A, b) > result \$par  2.740897 3.942860 \$value  -1 # Test the result # Value of objective function at this point v > v = result[] > objfun(v)  -1 # Inequality condition 1: check if x + y ≥ 5 > sum(v)  6.683757 # Inequality condition 2: check if x – y ≤ 2 > v-v  -1.201963 Copyright secured by Digiprove © 2012 Tunc Ali Kütükcüoglu
1. x > 2) && (x < 10 []
This entry was posted in Uncategorized and tagged , , , . Bookmark the permalink.