coneprog
2 次錐計画法ソルバー
構文
説明
coneprog 関数は、以下で指定された問題の最小値を見つける 2 次錐計画法ソルバーです。
以下の制約に従います。
f、x、b、beq、lb、ub はベクトル、A と Aeq は行列です。i ごとに、行列 Asoc(i)、ベクトルの dsoc(i) と bsoc(i)、およびスカラー γ(i) が、secondordercone を使用して作成された 2 次錐制約に含まれています。
錐制約の詳細については、2 次錐制約を参照してください。
は、次のようにエンコードされた x = coneprog(f,socConstraints)socConstraints 内の制約を使用して 2 次錐計画問題を解きます。
Asoc(i) =
socConstraints(i).Absoc(i) =
socConstraints(i).bdsoc(i) =
socConstraints(i).dγ(i) =
socConstraints(i).gamma
例
1 つの 2 次錐制約を含む問題を設定するには、2 次錐制約オブジェクトを作成します。
Asoc = diag([1,1/2,0]); bsoc = zeros(3,1); dsoc = [0;0;1]; gamma = 0; socConstraints = secondordercone(Asoc,bsoc,dsoc,gamma);
目的関数ベクトルを作成します。
f = [-1,-2,0];
この問題には、線形制約がありません。これらの制約用の空行列を作成します。
Aineq = []; bineq = []; Aeq = []; beq = [];
x(3) の上限と下限を設定します。
lb = [-Inf,-Inf,0]; ub = [Inf,Inf,2];
coneprog 関数を使用して問題を解きます。
[x,fval] = coneprog(f,socConstraints,Aineq,bineq,Aeq,beq,lb,ub)
Optimal solution found.
x = 3×1
0.4851
3.8806
2.0000
fval = -8.2462
解の要素 x(3) は上限値です。錐制約は次の解においてアクティブです。
norm(Asoc*x-bsoc) - dsoc'*x % Near 0 when the constraint is activeans = -2.5677e-08
複数の 2 次錐制約を含む問題を設定するには、制約オブジェクトの配列を作成します。時間とメモリを節約するために、最初に、最もインデックスの高い制約を作成します。
Asoc = diag([1,2,0]); bsoc = zeros(3,1); dsoc = [0;0;1]; gamma = -1; socConstraints(3) = secondordercone(Asoc,bsoc,dsoc,gamma); Asoc = diag([3,0,1]); dsoc = [0;1;0]; socConstraints(2) = secondordercone(Asoc,bsoc,dsoc,gamma); Asoc = diag([0;1/2;1/2]); dsoc = [1;0;0]; socConstraints(1) = secondordercone(Asoc,bsoc,dsoc,gamma);
線形目的関数ベクトルを作成します。
f = [-1;-2;-4];
coneprog 関数を使用して問題を解きます。
[x,fval] = coneprog(f,socConstraints)
Optimal solution found.
x = 3×1
0.4238
1.6477
2.3225
fval = -13.0089
目的関数ベクトルと単一の 2 次錐制約を指定します。
f = [-4;-9;-2]; Asoc = diag([1,4,0]); bsoc = [0;0;0]; dsoc = [0;0;1]; gamma = 0; socConstraints = secondordercone(Asoc,bsoc,dsoc,gamma);
線形不等式制約を指定します。
A = [1/4,1/9,1]; bsoc = 5;
問題を解きます。
[x,fval] = coneprog(f,socConstraints,A,bsoc)
Optimal solution found.
x = 3×1
3.2304
0.6398
4.1213
fval = -26.9225
coneprog ソルバーの反復を観察するには、Display オプションを "iter" に設定します。
options = optimoptions("coneprog",Display="iter");
2 次錐計画問題を作成し、それを options を使用して解きます。
Asoc = diag([1,1/2,0]); bsoc = zeros(3,1); dsoc = [0;0;1]; gamma = 0; socConstraints = secondordercone(Asoc,bsoc,dsoc,gamma); f = [-1,-2,0]; Aineq = []; bineq = []; Aeq = []; beq = []; lb = [-Inf,-Inf,0]; ub = [Inf,Inf,2]; [x,fval] = coneprog(f,socConstraints,Aineq,bineq,Aeq,beq,lb,ub,options)
Iter Fval Primal Infeas Dual Infeas Duality Gap Time 0 0.000000e+00 0.000000e+00 5.714286e-01 2.000000e-01 0.02 1 -7.558066e+00 0.000000e+00 7.151114e-02 2.502890e-02 0.02 2 -7.366973e+00 0.000000e+00 1.075440e-02 3.764040e-03 0.02 3 -8.243432e+00 0.000000e+00 5.191882e-05 1.817159e-05 0.03 4 -8.246067e+00 1.387779e-17 2.430813e-06 8.507845e-07 0.03 5 -8.246211e+00 0.000000e+00 6.154504e-09 2.154077e-09 0.03 Optimal solution found.
x = 3×1
0.4851
3.8806
2.0000
fval = -8.2462
2 次錐計画問題の要素を作成します。時間とメモリを節約するために、最初に、最もインデックスの高い制約を作成します。
Asoc = diag([1,2,0]); bsoc = zeros(3,1); dsoc = [0;0;1]; gamma = -1; socConstraints(3) = secondordercone(Asoc,bsoc,dsoc,gamma); Asoc = diag([3,0,1]); dsoc = [0;1;0]; socConstraints(2) = secondordercone(Asoc,bsoc,dsoc,gamma); Asoc = diag([0;1/2;1/2]); dsoc = [1;0;0]; socConstraints(1) = secondordercone(Asoc,bsoc,dsoc,gamma); f = [-1;-2;-4]; options = optimoptions("coneprog",Display="iter");
problemで説明されているように、必須フィールドを含む問題構造体を作成します。
problem = struct("f",f,... "socConstraints",socConstraints,... "Aineq",[],"bineq",[],... "Aeq",[],"beq",[],... "lb",[],"ub",[],... "solver","coneprog",... "options",options);
coneprog を呼び出して問題を解きます。
[x,fval] = coneprog(problem)
Iter Fval Primal Infeas Dual Infeas Duality Gap Time 0 0.000000e+00 0.000000e+00 5.333333e-01 9.090909e-02 0.05 1 -9.696012e+00 1.850372e-17 7.631901e-02 1.300892e-02 0.06 2 -1.178942e+01 1.850372e-17 1.261803e-02 2.150800e-03 0.06 3 -1.294426e+01 1.850372e-17 1.683078e-03 2.868883e-04 0.06 4 -1.295217e+01 2.775558e-17 8.994595e-04 1.533170e-04 0.06 5 -1.295331e+01 2.775558e-17 4.748841e-04 8.094615e-05 0.06 6 -1.300753e+01 1.850372e-17 2.799942e-05 4.772628e-06 0.06 7 -1.300671e+01 2.775558e-17 2.366136e-05 4.033187e-06 0.06 8 -1.300850e+01 9.251859e-18 8.167602e-06 1.392205e-06 0.07 9 -1.300843e+01 1.850372e-17 7.244794e-06 1.234908e-06 0.07 10 -1.300865e+01 9.251859e-18 2.617163e-06 4.461074e-07 0.07 11 -1.300892e+01 0.000000e+00 2.216272e-08 3.777737e-09 0.07 Optimal solution found.
x = 3×1
0.4238
1.6477
2.3225
fval = -13.0089
2 次錐計画問題を作成します。時間とメモリを節約するために、最初に、最もインデックスの高い制約を作成します。
Asoc = diag([1,2,0]); bsoc = zeros(3,1); dsoc = [0;0;1]; gamma = -1; socConstraints(3) = secondordercone(Asoc,bsoc,dsoc,gamma); Asoc = diag([3,0,1]); dsoc = [0;1;0]; socConstraints(2) = secondordercone(Asoc,bsoc,dsoc,gamma); Asoc = diag([0;1/2;1/2]); dsoc = [1;0;0]; socConstraints(1) = secondordercone(Asoc,bsoc,dsoc,gamma); f = [-1;-2;-4]; options = optimoptions("coneprog",Display="iter"); Aineq = []; bineq = []; Aeq = []; beq = []; lb = []; ub = [];
解法プロセスに関する情報を要求する問題を解きます。
[x,fval,exitflag,output] = coneprog(f,socConstraints,Aineq,bineq,Aeq,beq,lb,ub,options)
Iter Fval Primal Infeas Dual Infeas Duality Gap Time 0 0.000000e+00 0.000000e+00 5.333333e-01 9.090909e-02 0.05 1 -9.696012e+00 5.551115e-17 7.631901e-02 1.300892e-02 0.06 2 -1.178942e+01 0.000000e+00 1.261803e-02 2.150800e-03 0.06 3 -1.294426e+01 9.251859e-18 1.683078e-03 2.868883e-04 0.06 4 -1.295217e+01 9.251859e-18 8.994595e-04 1.533170e-04 0.07 5 -1.295331e+01 0.000000e+00 4.748841e-04 8.094615e-05 0.07 6 -1.300753e+01 0.000000e+00 2.799942e-05 4.772628e-06 0.07 7 -1.300671e+01 9.251859e-18 2.366136e-05 4.033187e-06 0.07 8 -1.300850e+01 9.251859e-18 8.251573e-06 1.406518e-06 0.07 9 -1.300842e+01 4.625929e-18 7.332583e-06 1.249872e-06 0.07 10 -1.300866e+01 9.251859e-18 2.616719e-06 4.460317e-07 0.07 11 -1.300892e+01 1.850372e-17 2.215835e-08 3.776991e-09 0.07 Optimal solution found.
x = 3×1
0.4238
1.6477
2.3225
fval = -13.0089
exitflag = 1
output = struct with fields:
iterations: 11
primalfeasibility: 1.8504e-17
dualfeasibility: 2.2158e-08
dualitygap: 3.7770e-09
algorithm: 'interior-point'
linearsolver: 'augmented'
message: 'Optimal solution found.'
反復表示と出力構造体の両方に、
coneprogが 11 回の反復を実行して解に到達したことが示されます。終了フラグ値
1とoutput.message値'Optimal solution found.'は、解が信頼できることを示します。output構造体には、双対性ギャップと同様に、解法プロセスを通して実行不可能性が減少する傾向にあることが示されます。fval出力は、f'*xを乗算することによって再現できます。
f'*x
ans = -13.0089
2 次錐計画問題を作成します。時間とメモリを節約するために、最初に、最もインデックスの高い制約を作成します。
Asoc = diag([1,2,0]); bsoc = zeros(3,1); dsoc = [0;0;1]; gamma = -1; socConstraints(3) = secondordercone(Asoc,bsoc,dsoc,gamma); Asoc = diag([3,0,1]); dsoc = [0;1;0]; socConstraints(2) = secondordercone(Asoc,bsoc,dsoc,gamma); Asoc = diag([0;1/2;1/2]); dsoc = [1;0;0]; socConstraints(1) = secondordercone(Asoc,bsoc,dsoc,gamma); f = [-1;-2;-4];
他のすべての coneprog 出力とともに解における双対変数を要求する問題を解きます。
[x,fval,exitflag,output,lambda] = coneprog(f,socConstraints);
Optimal solution found.
返された lambda 構造体を調査します。唯一の問題制約が錐制約のため、lambda 構造体内の soc フィールドだけを調査します。
disp(lambda.soc)
5.9426
4.6039
2.4624
制約には、解において制約が有効であることを示す非ゼロの双対値が含まれています。
入力引数
係数ベクトル。実数ベクトルまたは実数配列として指定されます。係数ベクトルは、目的関数 f'*x を表します。表記では、f が列ベクトルになっていますが、行ベクトルや配列も使用できます。coneprog は配列 f を列ベクトル f(:) に内部的に変換します。
例: f = [1,3,5,-6]
データ型: double
2 次錐制約。SecondOrderConeConstraint オブジェクトのベクトルまたは cell 配列として指定します。secondordercone 関数を使用してこれらのオブジェクトを作成します。
socConstraints が次の制約をエンコードします。
ここで、配列と方程式の対応付けを以下に示します。
Asoc(i) =
socConstraints.A(i)bsoc(i) =
socConstraints.b(i)dsoc(i) =
socConstraints.d(i)γ(i) =
socConstraints.gamma(i)
例: Asoc = diag([1 1/2 0]); bsoc = zeros(3,1); dsoc = [0;0;1]; gamma = -1; socConstraints = secondordercone(Asoc,bsoc,dsoc,gamma);
実数行列として指定される線形不等式制約です。A は M 行 N 列の行列で、M は不等式の数、N は変数の数 (f の長さ) です。大規模な問題の場合は、A をスパース行列として渡します。
A は M 個の線形不等式を符号化します。
A*x <= b,
ここで、x は N 個の変数 x(:) の列ベクトル、b は M 個の要素をもつ列ベクトルです。
たとえば、次の不等式を考えてみましょう。
x1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30.
次の制約を入力することによって、不等式を指定します。
A = [1,2;3,4;5,6]; b = [10;20;30];
例: x 成分の和が 1 以下になるように指定するために、A = ones(1,N) と b = 1 をとります。
データ型: double
実数ベクトルで指定される線形不等式制約です。b は、行列 A に関連する M 要素ベクトルです。b を行ベクトルとして渡す場合、ソルバーは b を列ベクトル b(:) に内部的に変換します。
b は M 個の線形不等式を符号化します。
A*x <= b,
ここで、x は N 個の変数 x(:) の列ベクトル、A は M 行 N 列の行列です。
たとえば、次の不等式を考えてみましょう。
x1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30.
次の制約を入力することによって、不等式を指定します。
A = [1,2;3,4;5,6]; b = [10;20;30];
例: x の成分の和が 1 以下であることを指定するには、A = ones(1,N) と b = 1 を使用します。
データ型: single | double
実数行列として指定される線形等式制約です。Aeq は Me 行 N 列の行列で、Me は等式の数、N は変数の数 (f の長さ) です。大規模な問題の場合は、Aeq をスパース行列として渡します。
Aeq は Me 個の線形等式を符号化します。
Aeq*x = beq,
ここで、x は N 個の変数 x(:) の列ベクトル、beq は Me 個の要素をもつ列ベクトルです。
たとえば、次の等式を考えてみましょう。
x1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x3 = 20.
次の制約を入力することによって、等式を指定します。
Aeq = [1,2,3;2,4,1]; beq = [10;20];
例: x 成分の和が 1 になるように指定するために、Aeq = ones(1,N) と beq = 1 をとります。
データ型: double
実数ベクトルで指定される線形等式制約です。beq は、行列 Aeq に関連する Me 要素ベクトルです。beq を行ベクトルとして渡す場合、ソルバーは beq を列ベクトル beq(:) に内部的に変換します。
beq は Me 個の線形等式を符号化します。
Aeq*x = beq,
ここで、x は N 個の変数 x(:) の列ベクトル、Aeq は Me 行 N 列の行列です。
たとえば、次の等式を考えてみましょう。
x1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x3 = 20.
次の制約を入力することによって、等式を指定します。
Aeq = [1,2,3;2,4,1]; beq = [10;20];
例: x の成分の和が 1 であることを指定するには、Aeq = ones(1,N) と beq = 1 を使用します。
データ型: single | double
下限。実数ベクトルまたは実数配列として指定されます。f の長さが lb の長さと等しい場合、lb は次を指定します。
x(i) >= lb(i) (すべての i について)
numel(lb) < numel(f) の場合、lb は次を指定します。
x(i) >= lb(i) (1 <= i <= numel(lb))
この場合、ソルバーによって警告が発行されます。
例: すべての x 成分が正になるように指定するには、lb = zeros(size(f)) を使用します。
データ型: double
実数ベクトルまたは実数配列として指定される上限です。f の長さが ub の長さと等しい場合、ub は次を指定します。
x(i) <= ub(i) (すべての i について)
numel(ub) < numel(f) の場合、ub は次を指定します。
x(i) <= ub(i) (1 <= i <= numel(ub))
この場合、ソルバーによって警告が発行されます。
例: すべての x 成分が 1 未満になるように指定するには、ub = ones(size(f)) を使用します。
データ型: double
最適化オプション。optimoptions の出力として指定されます。
| MATLAB オプション | |
|---|---|
| オプション | 説明 |
ConstraintTolerance | 制約の実行可能性の許容誤差で非負のスカラー。 |
| 表示レベル (反復表示を参照):
|
LinearSolver | 反復における 1 ステップを解くためのアルゴリズム:
スパースの例については、coneprog アルゴリズムの速度の比較を参照してください。 |
| 反復の最大許容回数 (非負の整数)。既定値は |
MaxTime | アルゴリズムの秒単位の最大実行時間 (非負の数値または |
| 相対的な双対性ギャップに関する終了許容誤差 (非負のスカラー)。定義については、式 5を参照してください。既定値は |
| コード生成 | |
ConstraintTolerance | 制約の実行可能性の許容誤差で非負のスカラー。 |
| 表示レベル (反復表示を参照):
反復表示では、生成コードに時間の列は表示されません。 |
LinearSolver | 反復における 1 ステップを解くためのアルゴリズム: コード生成では、 |
| 反復の最大許容回数 (非負の整数)。既定値は |
| 双対実行可能性に関する終了許容誤差 (非負のスカラー)。既定値は |
コード生成では、MaxTime オプションはサポートされていません。
例: optimoptions("coneprog",Display="iter",MaxIterations=100)
次のフィールドをもつ構造体として指定される問題構造体です。
| フィールド名 | エントリ |
|---|---|
| 線形目的関数ベクトル f |
| 2 次錐制約の構造体配列、または cons = {soc1 soc2 soc3};
problem.socConstraints = {cons}; |
| 線形不等式制約の行列 |
| 線形不等式制約のベクトル |
| 線形等式制約の行列 |
| 線形等式制約のベクトル |
lb | 下限のベクトル |
ub | 上限のベクトル |
| 'coneprog' |
| optimoptions で作成されたオプション |
データ型: struct
出力引数
解での目的関数値。実数として返されます。一般的に、fval = f'*x になります。fval の出力は、exitflag の値が -2、-3、または -10 の場合は空 (コード生成では NaN) になります。
coneprog の停止理由。整数として返されます。
| 値 | 説明 |
|---|---|
| 関数が解 |
| 反復回数が |
| 実行可能な点が見つかりません。 |
| 問題が非有界です。 |
| 探索方向が小さくなりすぎ、これ以上進むことができないことを示します。 |
| 未定義のステップ。システムが特異であるため、アルゴリズムを続行できません。スパース データのみを使用したコード生成です。スパースではなく非スパース データに切り替えると、ソルバーを正常に完了できます。 |
| 問題が数値的に不安定です。 |
ヒント
終了フラグ値として 0、-7、または -10 を取得した場合は、LinearSolver オプションの値を変えてみてください。
最適化プロセスに関する情報。次のフィールドをもつ構造体として返されます。
| フィールド | 説明 |
|---|---|
algorithm |
|
dualfeasibility | 双対制約違反の最大値 |
dualitygap | 双対性ギャップ |
iterations | 反復回数 |
message | 終了メッセージ — コード生成では使用不可 |
primalfeasibility | 制約違反の最大値 |
linearsolver | 使用される内部ステップ ソルバー アルゴリズム |
output のフィールドの algorithm、dualfeasibility、dualitygap、linearsolver、および primalfeasibility は、exitflag の値が -2、-3、または -10 の場合は空 (コード生成では数値が NaN) になります。
iterations フィールドはコード生成では int32 型であり、double ではありません。
詳細
制約の
が 2 次錐制約と呼ばれる理由3 次元空間で x-y 平面が楕円形の断面で、直径が z 座標に直交している円錐を考えます。y 座標のスケールは ½ で、x座標のスケールは 1 です。[0,0,0] にある点でこの円錐の内部を定義する不等式は次のとおりです。
coneprog 構文では、この円錐は次の引数をとります。
A = diag([1 1/2 0]); b = [0;0;0]; d = [0;0;1]; gamma = 0;
円錐の境界をプロットします。
[X,Y] = meshgrid(-2:0.1:2); Z = sqrt(X.^2 + Y.^2/4); surf(X,Y,Z) view(8,2) xlabel 'x' ylabel 'y' zlabel 'z'

b 引数と gamma引数によって、円錐が移動します。A 引数と d引数によって、円錐が回転し、その形状が変化します。
アルゴリズム
アルゴリズムは内点法を使用します。詳細については、2 次錐計画法アルゴリズムを参照してください。
代替機能
アプリ
[最適化] ライブ エディター タスクが coneprog にビジュアル インターフェイスを提供します。
拡張機能
使用上の注意および制限:
coneprogは、関数codegen(MATLAB Coder) または MATLAB® Coder™ アプリを使用したコード生成をサポートしています。コードを生成するには MATLAB Coder ライセンスが必要です。ターゲット ハードウェアは、標準的な倍精度浮動小数点計算をサポートしていなければなりません。
コード生成ターゲットは、MATLAB ソルバーと同じ数学カーネル ライブラリを使用しません。そのため、コード生成解法は、特に、条件付けが不十分な問題の場合に、ソルバー解法と異なる可能性があります。
コード生成の場合、
coneprogはproblem引数をサポートしていません。[x,fval] = coneprog(problem) % Not supportedconeprogの入力行列 (A、Aeq、secondordercone入力、lb、ubなど) はすべて完全でもスパースでもかまいません。スパース入力を使用するには、動的メモリ割り当てを有効にする必要があります。コード生成の制限 (MATLAB Coder)を参照してください。非ゼロのエントリの割合が少ない場合、スパース入力を使用するとソルバーは良好なパフォーマンスを示します。錐制約は、
SecondOrderConeConstraintオブジェクトの配列としてではなく、それらのオブジェクトの cell 配列として渡します。錐制約がない場合は、空の cell{}を渡します。lb引数とub引数は、問題変数の数と同じ数のエントリをもつか、空[]でなければなりません。ターゲット ハードウェアが無限境界をサポートしていない場合は、
optim.coder.infboundを使用します。組み込みプロセッサを使用する高度なコード最適化には、Embedded Coder® ライセンスも必要です。
コード生成では、次の
optimoptionsのオプションをサポートしています。ConstraintToleranceDisplayLinearSolverMaxIterationsOptimalityTolerance
生成コードでは、オプションに対して限られたエラー チェックしか行われません。オプションの更新方法として、
optimoptionsではなく、ドット表記を使用することを推奨します。opts = optimoptions("coneprog",ConstraintTolerance=1e-4); opts = optimoptions(opts,MaxIterations=1e4); % Not preferred opts.MaxIterations = 1e4; % Recommended
coneprogは、コードで作成されたオプションだけでなく、ソルバーに渡されたオプションをサポートします。サポートされていないオプションを指定すると、通常はコード生成の際にそのオプションは無視されます。信頼できる結果を得るために、サポートされているオプションのみを指定します。
バージョン履歴
R2020b で導入coneprogコード生成の入力行列 (A、Aeq、lb、ub、secondorderconeへの入力など) はすべて完全でもスパースでもかまいません。新しい
exitflag-8は、スパース データを使用したコード生成にのみ適用されます。optimoptionsを使用してオプションを更新できるようになりましたが、ドット表記を使用する方法が推奨されます。opts = optimoptions("coneprog",ConstraintTolerance=1e-4); opts = optimoptions(opts,MaxIterations=1e4); % Not preferred opts.MaxIterations = 1e4; % Recommended
詳細については、coneprog 用のコード生成の背景を参照してください。
coneprog で C/C++ コードを生成できます。詳細については、coneprog 用のコード生成の背景とconeprog のコード生成を参照してください。コード生成に対応するために、2 次錐制約を SecondOrderConeConstraint オブジェクトの cell 配列として渡せるようになりました。これは、コード生成で必要となる構文です。詳細については、言語制約 (MATLAB Coder)を参照してください。
密なデータをもつ問題で速度を上げるには、LinearSolver オプションを 'normal-dense' に設定します。例については、coneprog アルゴリズムの速度の比較を参照してください。
coneprog lambda の出力引数フィールド lambda.eq および lambda.ineq の名前は、それぞれ lambda.eqlin、lambda.ineqlin に変更されました。この変更により、coneprog lambda 構造体フィールドの名前が、他のソルバーの同等フィールドの名前と統一されます。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)