[Contents] [TitleIndex] [WordIndex

Linear Programming Examples in Scilab

The goal of this page is to gather various examples of linear programming in Scilab. We focus here on continuous variables and do not cover integer programming. We consider dense matrices and do not cover sparse linear programs. We used the following functions :

These examples must be used under the terms of the CeCILL.

The karmarkar function

The karmarkar function is a linear programming solver. It is able to solve the linear program either in standard form:

   ineqlin: [7x1 constant]
   eqlin: [0x0 constant]
   lower: [3x1 constant]
   upper: [3x1 constant]
Minimize c'*x
such that:
Aeq*x = beq
x >= 0

or in the more general form with linear inequalities and bounds:

Minimize c'*x
such that:
Aeq*x = beq
A*x <= b
lb <= x <= ub

The help of the karmarkar function is provided in Scilab:

http://www.scilab.org/product/man/karmarkar.html

Despite its name, the algorithm is not based on the Karmarkar algorithm, but on a primal affine-scaling interior point algorithm. This algorithm discovered by Dikin in 1967, and then re-discovered by Barnes and Vanderbei et al in 1986.

Changes in Scilab 5.3.1

In the version 5.3.1 of Scilab we improved the karmarkar linear optimization solver. The goal was to improve the usability, and to provide a much more flexible solver. The detailed changes are the following:

There are also bugs which have been fixed:

The quapro module

http://atoms.scilab.org/toolboxes/quapro

The quapro module defines linear quadratic programming solvers. The matrices defining the cost and constraints must be full, but the quadratic term matrix is not required to be full rank.

The features of the quapro module are :

This module was created by Eduardo Casas Renteria, Cecilia Pola Mendez (Universidad De Cantabria), improved by Serge Steer (INRIA) and maintained by Allan Cornet, Michaël Baudin (Consortium Scilab - DIGITEO).

To install the quapro module :

atomsInstall("quapro");

and then re-start Scilab.

In this page, we will focus of the linpro function.

The linpro function can solve linear programs in general form:

Minimize c'*x
A*x   <= b
Aeq*x  = beq
lb <= x <= ub

Example #1

The following problem is extracted from "Practical Optimization", Antoniou, Lu, 2007, Chapter 11, "Linear Programming Part I: The simplex method", Example 11.9, p. 361. This problem is solved by the primal affine scaling algorithm in Chapter 12, "Linear Programming Part II: Interior point methods", Example 12.2, p.382.

The program is the following.

Minimize 2.x1 + 9.x2 + 3.x3
Such as
2.x1 - 2.x2 - x3 <= -1
 -x1 - 4.x2 + x3 <= -1
x >= 0

The solution is

xstar = [0 1/3 1/3]';

With karmarkar

The following script solves the problem with the karmarkar function.

A = [
 2 -2 -1
-1 -4  1
];
b = [-1;-1];
c = [2;9;3];
lb = [0;0;0];
[xopt,fopt,exitflag,iter,yopt] =karmarkar([],[],c,[],[],[],[],[],A,b,lb)
yopt.ineqlin
yopt.lower

This produces the following output.

-->[xopt,fopt,exitflag,iter,yopt] =karmarkar([],[],c,[],[],[],[],[],A,b,lb)
 yopt  =
   ineqlin: [2x1 constant]
   eqlin: [0x0 constant]
   lower: [3x1 constant]
   upper: [3x1 constant]
 iter  =
    70.  
 exitflag  =
    1.  
 fopt  =
    4.00004  
 xopt  =
    0.0000016  
    0.3333387  
    0.3333296  
-->yopt.ineqlin
 ans  =
    3.5  
    0.5  
-->yopt.lower
 ans  =
    8.5        
    2.560D-09  
  - 1.790D-09  

With linpro

The following script solves the problem with the linpro function.

A = [
 2 -2 -1
-1 -4  1
];
b = [-1;-1];
c = [2;9;3];
ci = [0;0;0];
cs = [%inf;%inf;%inf];
[xopt,lagr,fopt]=linpro(c,A,b,ci,cs)

The previous script produces the following output.

-->[xopt,lagr,fopt]=linpro(c,A,b,ci,cs)
 fopt  =
    4.  
 lagr  =
  - 8.5  
    0.   
    0.   
    3.5  
    0.5  
 xopt  =
    0.         
    0.3333333  
    0.3333333  

Example #2

This example is extracted from "Operations Research: applications and algorithms", Wayne L. Winstons, Section 5.2, "The Computer and Sensitivity Analysis", in the "Degeneracy and Sensitivity Analysis" subsection.

The linear program is:

Maximize 6*x1 + 4*x2 + 3*x3 + 2*x4
such as:
2*x1 + 3*x2 +   x3 + 2  *x4 <= 400
  x1 +   x2 + 2*x3 +     x4 <= 150
2*x1 +   x2 +   x3 + 0.5*x4 <= 200
3*x1 +   x2 +            x4 <= 250
x >= 0

The solution is

xstar = [50;100;0;0]

With karmarkar

The following script solves the problem with the karmarkar function.

c = [-6 -4 -3 -2]';
A = [
     2 3 1   2
     1 1 2   1
     2 1 1 0.5
     3 1 0   1
     ];
b = [400 150 200 250]';
lb = [0;0;0;0];
[xopt,fopt,exitflag,iter,yopt] =karmarkar([],[],c,[],[],[],[],[],A,b,lb)

The previous script produces the following output.

-->[xopt,fopt,exitflag,iter,yopt] =karmarkar([],[],c,[],[],[],[],[],A,b,lb)
 yopt  =
   ineqlin: [4x1 constant]
   eqlin: [0x0 constant]
   lower: [4x1 constant]
   upper: [4x1 constant]
 iter  =
    69.  
 exitflag  =
    1.  
 fopt  =
  - 699.99624  
 xopt  =
    50.000068  
    99.998479  
    0.0003436  
    0.0004409  

With linpro

The following script allows to solve the problem with the linpro function.

c = [-6 -4 -3 -2]';
A = [
     2 3 1 2
     1 1 2 1
     2 1 1 0.5
     3 1 0 1
     ];
b = [400 150 200 250]';
ci=[0 0 0 0]';
cs=[%inf %inf %inf %inf]';
[xopt,lagr,fopt]=linpro(c,A,b,ci,cs)

This produces :

-->[xopt,lagr,fopt]=linpro(c,A,b,ci,cs)
 fopt  =
  - 700.  
 lagr  =
    0.    
    0.    
    0.    
  - 1.5   
    0.5   
    1.25  
    0.    
    1.25  
 xopt  =
    50.        
   100.        
    2.842D-14  
    0.         

Example #3

This example is extracted from "Operations Research: applications and algorithms", Wayne L. Winstons, Section 5.2, "The Computer and Sensitivity Analysis", from "Problems Group A, 1.".

We want to solve the linear program:

Maximize 150.x1+200.x2-10.x3
such as:
  x1+   x2      <= 45
6.x1+10.x2 - x3 <=0
5.x1            <= 140
     4.x2       <= 120
             x3 <= 350
x >= 0

The solution is:

xstar = [25,20,350]

With karmarkar

The following script solves the problem with the karmarkar function.

c = [-150 -200 +10]';
A = [
     1  1  0   
     6 10 -1   
     5 0   0   
     0 4   0   
     0 0   1   
     ];
b = [45 0 140 120 350]';
lb = [0;0;0];
[xopt,fopt,exitflag,iter,yopt] =karmarkar([],[],c,[],[],[],[],[],A,b,lb)

The previous script produces the following output.

-->[xopt,fopt,exitflag,iter,yopt] =karmarkar([],[],c,[],[],[],[],[],A,b,lb)
 yopt  =
   ineqlin: [5x1 constant]
   eqlin: [0x0 constant]
   lower: [3x1 constant]
   upper: [3x1 constant]
 iter  =
    89.  
 exitflag  =
    1.  
 fopt  =
  - 4249.9602  
 xopt  =
    25.00115   
    19.998673  
    349.99469  

With linpro

The following script allows to solve the problem with the linpro function.

c = [-150 -200 +10]';
A = [
     1  1  0
     6 10 -1
     5  0  0
     0  4  0
     0  0  1
     ];
b = [45 0 140 120 350]';
ci=[0 0 0]';
cs=[%inf %inf %inf]';
[xopt,lagr,fopt]=linpro(c,A,b,ci,cs)

This produces :

-->[xopt,lagr,fopt]=linpro(c,A,b,ci,cs)
 fopt  =
  - 4250.  
 lagr  =
    0.    
    0.    
    0.    
    75.   
    12.5  
    0.    
    0.    
    2.5   
 xopt  =
    25.   
    20.   
    350.  

Example #4

Consider the linear program:

Minimize -20.x1 - 24.x2
such as:
3.x1 + 6.x2 <= 60
4.x1 + 2.x2 <= 32
x >= 0

The solution is

xstar = [4;8];

With karmarkar

The following script solves the problem with the karmarkar function.

c = [-20 -24]';
A = [
  3 6
  4 2
];
b = [60 32]';
lb = [0;0];
[xopt,fopt,exitflag,iter,yopt] =karmarkar([],[],c,[],[],[],[],[],A,b,lb)

The previous script produces the following output.

-->[xopt,fopt,exitflag,iter,yopt] =karmarkar([],[],c,[],[],[],[],[],A,b,lb)
 yopt  =
   ineqlin: [2x1 constant]
   eqlin: [0x0 constant]
   lower: [2x1 constant]
   upper: [2x1 constant]
 iter  =
    66.  
 exitflag  =
    1.  
 fopt  =
  - 271.99746  
 xopt  =
    3.9998866  
    7.9999887  

With linpro

The following script allows to solve the problem with the linpro function.

c = [-20;-24];
A = [
3 6
4 2
];
b = [60;32];
ci=[0;0];
cs=[%inf;%inf];
[xopt,lagr,fopt]=linpro(c,A,b,ci,cs)

This produces:

-->[xopt,lagr,fopt]=linpro(c,A,b,ci,cs)
 fopt  =
  - 272.  
 lagr  =
    0.         
    0.         
    3.1111111  
    2.6666667  
 xopt  =
    4.  
    8.  

Example #5

This example is from the Lipsol toolbox, by Yin Zhang, as ported into Scilab by Rubio Scola in example0.sce.

Minimize 2.x1 + 5.x2 - 2.5.x3
such as:
   x1        S4 x3 <= 5
E2 x1 - x2    - x3 <= 0
-2 <= x1 <= 2
 1 <= x2 <= %inf
 0 <= x3 <= 3

The solution is

xstar = [-2;1;3];

With karmarkar

The following script solves the problem with the karmarkar function.

S4 = sin(%pi/4)/4;
E2 = exp(2);
c = [ 2; 5; -2.5];
A = [ 
       1  0 S4
      E2 -1 -1
       1  0  0
       0  0  1
      -1  0  0
       0 -1  0
       0  0 -1
];
b = [ 5; 0;2;3;2;-1;0];
lb = [-2;1;0];
ub = [2;%inf;3];
[xopt,fopt,exitflag,iter,yopt]=karmarkar([],[],c,[],[],[],[],[],A,b,lb,ub)

The previous script produces the following output.

-->[xopt,fopt,exitflag,iter,yopt]=karmarkar([],[],c,[],[],[],[],[],A,b,lb,ub)
 yopt  =
 
   ineqlin: [7x1 constant]
   eqlin: [0x0 constant]
   lower: [3x1 constant]
   upper: [3x1 constant]
 iter  =
    75.  
 exitflag  
    1.  
 fopt  =
  - 6.4999498  
 xopt  =
  - 1.9999916  
    1.0000033  
    2.9999933  

With linpro

The following script solves the problem with the linpro function.

S4 = sin(%pi/4)/4;
E2 = exp(2);
c = [ 2; 5; -2.5];
A = [ 
       1  0 S4
      E2 -1 -1
];
b = [ 5; 0];
ci = [-2;1;0];
cs = [2;%inf;3];
[xopt,lagr,fopt]=linpro(c,A,b,ci,cs)

The previous script produces the following output.

-->[xopt,lagr,fopt]=linpro(c,A,b,ci,cs)
 fopt  =
  - 6.5  
 lagr  =
  - 2.   
  - 5.   
    2.5  
    0.   
    0.   
 xopt  =
  - 2.  
    1.  
    3.  

Example #6

Minimize 600*x1 + 600*x2 + 600*x3 + 600*x4 + 600*x5 + 600*x6 + 600*x7 + 200*x8 + 200*x9 + 200*x10 + 200*x11 + 200*x12 + 200*x13 + 200*x14
such that
8*x1 +               8*x4 + 8*x5 + 8*x6 + 8*x7 +  4*x8 +                   4*x11 +  4*x12 +  4*x13 +  4*x14  >=   88
8*x1 + 8*x2 +               8*x5 + 8*x6 + 8*x7 +  4*x8 +  4*x9 +                    4*x12 +  4*x13 +  4*x14  >=  136
8*x1 + 8*x2 + 8*x3 +               8*x6 + 8*x7 +  4*x8 +  4*x9 +  4*x10 +                    4*x13 +  4*x14  >=  104
8*x1 + 8*x2 + 8*x3 + 8*x4 +               8*x7 +  4*x8 +  4*x9 +  4*x10 +  4*x11 +                    4*x14  >=  120
8*x1 + 8*x2 + 8*x3 + 8*x4 + 8*x5 +                4*x8 +  4*x9 +  4*x10 +  4*x11 +  4*x12                    >=  152
       8*x2 + 8*x3 + 8*x4 + 8*x5 + 8*x6 +                 4*x9 +  4*x10 +  4*x11 +  4*x12 +  4*x13           >=  112
              8*x3 + 8*x4 + 8*x5 + 8*x6 + 8*x7 +                  4*x10 +  4*x11 +  4*x12 +  4*x13 +  4*x14  >=  128
                                               - 20*x8 - 20*x9 - 20*x10 - 20*x11 - 20*x12 - 20*x13 - 20*x14  >= -840
xi >= 0 (i = 1,...,14)

There are several solutions to this problem, but all are associated with the objective function value:

fstar = 9200

With karmarkar

The following script solves the problem with the karmarkar function.

c = [600 600 600 600 600 600 600 200 200 200 200 200 200 200]'; 
A =  [
       8 0 0 8 8 8 8   4   0   0   4   4   4   4
       8 8 0 0 8 8 8   4   4   0   0   4   4   4
       8 8 8 0 0 8 8   4   4   4   0   0   4   4
       8 8 8 8 0 0 8   4   4   4   4   0   0   4
       8 8 8 8 8 0 0   4   4   4   4   4   0   0
       0 8 8 8 8 8 0   0   4   4   4   4   4   0
       0 0 8 8 8 8 8   0   0   4   4   4   4   4
       0 0 0 0 0 0 0 -20 -20 -20 -20 -20 -20 -20
      ];  
b = [88 136 104 120 152 112 128 -840]'; 
A = -A;
b = -b;
lb=zeros(14,1);
[xopt,fopt,exitflag,iter,yopt]=karmarkar([],[],c,[],[],[],[],[],A,b,lb)

The previous script produces the following output.

-->[xopt,fopt,exitflag,iter,yopt]=karmarkar([],[],c,[],[],[],[],[],A,b,lb)
 yopt  =
   ineqlin: [8x1 constant]
   eqlin: [0x0 constant]
   lower: [14x1 constant]
   upper: [14x1 constant]
 iter  =
    68.  
 exitflag  =
    1.  
 fopt  =
    9200.0482  
 xopt  =
    0.2130791  
    0.2373697  
    0.2444532  
    0.1395045  
    0.2749702  
    0.0000344  
    0.2240255  
    4.7906317  
    6.9752061  
    8.1870869  
    1.7117333  
    14.116657  
    0.0000689  
    6.2185468  

With linpro

c = [600 600 600 600 600 600 600 200 200 200 200 200 200 200]'; 
A =  [
       8 0 0 8 8 8 8   4   0   0   4   4   4   4
       8 8 0 0 8 8 8   4   4   0   0   4   4   4
       8 8 8 0 0 8 8   4   4   4   0   0   4   4
       8 8 8 8 0 0 8   4   4   4   4   0   0   4
       8 8 8 8 8 0 0   4   4   4   4   4   0   0
       0 8 8 8 8 8 0   0   4   4   4   4   4   0
       0 0 8 8 8 8 8   0   0   4   4   4   4   4
       0 0 0 0 0 0 0 -20 -20 -20 -20 -20 -20 -20
      ];  
A = -A;   
b = [88 136 104 120 152 112 128 -840]'; 
b = -b;
[n,p]=size(A);
ci=zeros(p,1);  
cs=%inf*ones(p,1); 
[xopt,lagr,fopt]=linpro(c,A,b,ci,cs)  

This produces

-->[xopt,lagr,fopt]=linpro(c,A,b,ci,cs)  
 fopt  =
    9200.  
 lagr  =
    0.         
  - 6.519D-15  
  - 6.355D-14  
    3.411D-13  
  - 5.084D-13  
  - 200.       
    0.         
    1.990D-13  
    0.         
    0.         
    0.         
    0.         
  - 100.       
    0.         
    3.038D-14  
    25.        
    0.         
    25.        
    25.        
    0.         
    25.        
    5.         
 xopt  =
    1.475D-15  
    1.872D-15  
  - 9.103D-16  
    0.         
  - 2.483D-16  
    1.448D-15  
    1.3333333  
    0.         
    12.666667  
    10.        
    0.6666667  
    14.666667  
    0.         
    4.         

Acknowledgments

We thank Reinaldo Golmia Dante for providing the initial material for this document.

Appendix

Limitations of karmarkar before Scilab 5.3.1

Before Scilab 5.3.1, the karmarkar function required that we provide a strictly feasible initial guess. This is why the resolution required two steps:

Moreover, the only constraint which was taken into account was the linear equality constraint. This is why we had to introduce slack variables if we wanted to take into account linear inequalities such as A*x <= x.

The feasibility problem (phase 1) and the introduction of slack variables are described in the two next sections. These algorithms are now directly provided by Scilab 5.3.1, so that the user now implicitely use them, but does not have to explicitely call these functions.

Feasibility problem

In this section, we describe a method to find an initial guess x0 which is strictly feasible for a problem in standard form. This method is used by the karmarkar function since Scilab 5.3.1. The method that we present is classical and is presented for example in "A Primal-Dual Exterior Point Algorithm For Linear Programming Problems" by Samaras, Sifaleras, Triantafyllidis. Another version of the same idea was presented in "A modification of karmarkar's linear programming algorithm" by Vanderbei et al.

Assume that we must solve the linear program:

Minimize c'*x
such as:
Aeq*x = beq
x >= 0

In order to find a feasible point, we solve the following problem :

Minimize z(p+1)
such as:
AAeq * z = bbeq 
z >= 0

where

z=[x(1) x(2) ... x(p) x(p+1)].

The matrix AAeq has the same number of rows, but one column more than Aeq. The initial guess for the modified problem is

z0=[1 1 ... 1]'=e(n+1),

where e(n+1) represents a column vector of n+1 ones. The last column of AAeq is

beq-Aeq*e(n)

so that the initial guess z0 satisfies the equation

AAeq*z0=beq.

Then we solve the modified linear program. There are three main cases.

The following function uses the previous method to find a feasible initial guess x0.

function x0 = karmarkar_searchx0 (Aeq,beq,c,eps,gam)
  // Search a stricly feasible initial guess for the linear program
  //
  // Minimize c'*x
  // Aeq*x = b
  // x >= 0
  //
  // Copyright (C) 2010 - DIGITEO - Michael Baudin
  // Must be used under the terms of the CeCILL V2: http://www.cecill.info
  [n,p]=size(Aeq)
  cc = [zeros(p,1);1]
  AAeq = [Aeq,beq-Aeq*ones(p,1)]
  bbeq = beq
  z0 = ones(p+1,1)
  zopt=karmarkar(AAeq,bbeq,cc,z0,eps,gam)
  x0=zopt(1:p)
endfunction

Slack and positive variables

In this section, we show how to change the formulation of an optimization problem in order to manage bounds or linear inequalities. This method is used by the karmarkar function since Scilab 5.3.1.

In practice, we may have to solve linear programs which may not be in standard form. Instead, we may have to solve programs in the form:

Minimize c'*x
A*x <= b

where A is a n-by-p matrix, b is a n-by-1 column vector and c is a p-by-1 column vector. We can introduce the slack variable s, as a n-by-1 column vector which satisfy the equality:

A*x + s = b.

We must have

s >= 0.

The equality constraint can be written as

[A I]*[x;s] = b.

From there, there are two cases, depending on the constraint on x:

  1. either x must be non-negative,
  2. or x is unrestricted.

In the case where the original problem has the additionnal constraint

x >= 0,

we are done. It now suffices to consider the variable z=[x;s] and to modify the linear cost to cc=[c;0], where the zero column vector has n entries.

In the case where the variable x is unrestricted, we can write it as the difference of two positive variables :

x = xp - xn

where xp and xn are both non-negative. This leads to the linear program:

Minimize c'*(xp-xn)
A*(xp-xn) + s = b
xp,xn,s >= 0

The previous program can be written in matrix form:

Minimize [c;-c;0]'*[xp;xn;s]
[A,-A,I]*[xp;xn;s] = b
xp,xn,s >= 0

The previous program is a linear program in standard form :

Minimize cc'*z
Aeq*z = b
z >= 0

where

cc = [c;-c;0]
Aeq=[A,-A,I]

The following function applies the previous method to preprocess a linear program in general form.

function [Aeq,beq,cc] = karmarkar_preprocess ( A , b , c )
  // Converts the linear program
  //
  // Minimize c'*x
  // A*x <= b
  //
  // into
  //
  // Minimize cc'*z
  // Aeq*z = beq
  // z >= 0
  //
  // where x = z(1:p) - z(p+1:2*p).
  //
  // Copyright (C) 2010 - DIGITEO - Michael Baudin
  // Must be used under the terms of the CeCILL V2: http://www.cecill.info
  [n,p]=size(A)
  Aeq = [A -A eye(n,n)]
  beq = b
  cc = [c;-c;zeros(n,1)]
endfunction

An example of karmarkar for Scilab <= 5.3.0

In this section, we present the resolution of a linear program with Scilab versions older than 5.3.1. This example is the example #1.

We introduce slack variables and get:

Minimize 2.x1 + 9.x2 + 3.x3
2.x1 - 2.x2 - x3 + x4      = -1
 -x1 - 4.x2 + x3      + x5 = -1
x >= 0

The following script solves the problem. Here, the initial guess x0 is given.

Aeq = [
 2 -2 -1 1 0
-1 -4  1 0 1
];
beq = [-1;-1];
c = [2;9;3;0;0];
x0 = [0.2;0.7;1;1;1];
xopt=karmarkar(Aeq,beq,c,x0)

This produces the following output.

-->xopt=karmarkar(Aeq,beq,c,x0)
 1.    0.856E+01    0.117E+00
 2.    0.765E+01    0.107E+00
 3.    0.690E+01    0.977E-01
 4.    0.629E+01    0.878E-01
 5.    0.580E+01    0.776E-01
 6.    0.541E+01    0.672E-01
 7.    0.510E+01    0.571E-01
 8.    0.486E+01    0.477E-01
 9.    0.467E+01    0.394E-01
10.    0.452E+01    0.321E-01
[...]
36.    0.400E+01    0.278E-04
37.    0.400E+01    0.209E-04
38.    0.400E+01    0.156E-04
39.    0.400E+01    0.117E-04
40.    0.400E+01    0.880E-05
 xopt  =
 
    0.0000041  
    0.3333474  
    0.3333235  
    0.0000101  
    0.0000704  

Now, assume that the initial guess x0 is unknown.

We solve the feasibility problem by introducing one extra variable x(p+1). The following script solves the problem.

-->x0 = karmarkar_searchx0 (Aeq,beq,c,0,0.999)
 1.    0.100E-02    0.999E+00
 2.    0.100E-05    0.999E-03
 3.    0.100E-08    0.999E-06
 4.    0.100E-11    0.999E-09
 5.    0.100E-14    0.999E-12
 6.    0.100E-17    0.999E-15
 7.    0.100E-20    0.999E-18
 8.    0.100E-23    0.999E-21
 9.    0.100E-26    0.999E-24
10.    0.100E-29    0.999E-27
11.    0.100E-32    0.999E-30
12.    0.100E-35    0.999E-33
13.    0.100E-38    0.999E-36
14.    0.100E-41    0.999E-39
[...]
53.    0.100-158    0.999-156
54.    0.100-161    0.999-159
55.    0.100-161    0.000E+00
 x0  =
 
    0.497293   
    0.7455296  
    1.3277695  
    0.8242427  
    1.1516418  

The previous script allows to produces the initial guess:

x0 = [0.497293;0.7455296;1.3277695;0.8242427;1.1516418]

We now plug the initial guess x0 into the original problem and get:

-->xopt=karmarkar(Aeq,beq,c,x0,1.e-14,0.999)
 1.    0.537E+01    0.541E+00
 2.    0.417E+01    0.222E+00
 3.    0.401E+01    0.402E-01
 4.    0.400E+01    0.108E-02
 5.    0.400E+01    0.195E-03
 6.    0.400E+01    0.316E-04
 7.    0.400E+01    0.101E-05
 8.    0.400E+01    0.156E-06
 9.    0.400E+01    0.244E-07
10.    0.400E+01    0.957E-09
11.    0.400E+01    0.130E-09
12.    0.400E+01    0.193E-10
13.    0.400E+01    0.899E-12
14.    0.400E+01    0.110E-12
15.    0.403E+01    0.155E-13
16.    0.403E+01    0.832E-15
 xopt  =
    3.885D-19  
    0.3361047  
    0.3362025  
    1.059D-16  
    1.218D-16  

References


2022-09-08 09:27