"XXXX"は次の実​行ではより多くの入力​引数を必要とします。​というエラーについて

4 visualizaciones (últimos 30 días)
HAGIWARA
HAGIWARA el 9 de Nov. de 2019
Comentada: Yoshio el 16 de Nov. de 2019
以下のエラーコードが出た場合の対処法を教えていただきたいです。
"XXXX"は次の実行ではより多くの入力引数を必要とします。
関数または変数 'x' が認識されません。
加えて, XXXX(x)の()の中身を変更するよう催促されました。
以下に使用したコードを添付させていただきます。
ご助力お願いいたします。
function F = A1_phiv_initial_value(x)
F(1) = x(1)*cos(2.0*pi*0.75) + x(3)*sin(2.0*pi*0.75) - x(2) * cos(2.0*pi*2.0909) - x(4) * sin(2.0*pi*0.7841) + (4.3719 * x(6)) / (4.3719 - 1.0)*sin(2.0*pi*0.375 + x(5)) - (1.0 / (10.7488 + 1.0));
F(2)= x(1) - x(2) * cos(2.0*pi*2.0909) + x(4) * sin(2.0*pi*2.0909) + (4.3719 * x(6)) / (4.3719 - 1.0)*sin(x(5)) - (1.0 / (10.7488 + 1.0));
F(3) = -2.0 * x(1) * sin(2.0 * pi*0.75) + 2.0 * x(3) * cos(2.0 * pi*0.75)- (-2.0909 * x(2) * sin(2.0 * pi*0.7841) + 2.0909 * x(4) * cos(2.0 * pi*0.7841) - (4.3719 * x(6)) / (4.3719 - 1.0)*cos(2.0 * pi*0.375 + x(5)));
F(4) = 2.0 * x(3) + 2.0909 *x(2) * sin(2.0*pi*2.0909) - 2.0909 * x(4) * cos(2.0*pi*2.0909) + (4.3719 * x(6)) / (4.3719 - 1.0)*cos(x(5));
F(5) = (10.7488 / (10.7488 + 1.0)) + x(6) * sin(x(5))*(4.3719 / (4.3719-1.0) - (10.7488 + 1.0))- (x(2) * cos(2.0*pi*2.0909) + x(4) * sin(2.0*pi*2.0909));
F(6) = (2.0*pi*10.7488 / (10.7488 + 1.0))*(1.0 - 0.375) + x(6) * (cos(2.0*pi*0.375 + x(5)) - cos(x(5)))*((4.3719 *x(6)) / (4.3719 - 1.0) - (10.7488 + 1.0))+ (x(2) / 2.0909)*(sin(2.0*pi*0.7841) - sin(2.0*pi*2.0909)) + (x(4) / 2.0909)*(cos(2.0*pi*2.0909) - cos(2.0*pi*0.7841));
fun = @A1_phiv_initial_value;
x0 = [0,0,0,0,0,0];
x = fsolve(fun,x0)

Respuesta aceptada

Yoshio
Yoshio el 9 de Nov. de 2019
Editada: Yoshio el 9 de Nov. de 2019
'9.7.0.1216025 (R2019b) Update 1' では以下のコードを一つのファイルにして実行したところ問題無く動作しました。
optimizatino Toolboxはお持ちですか?
which fsolve
で確認できます。
また動作環境(OS, MATLABバージョン)もご確認ください。
加えて、ご質問については、
もご参照ください。
clear all;
fun = @A1_phiv_initial_value;
x0 = [0,0,0,0,0,0];
F = A1_phiv_initial_value(x0)
x = fsolve(fun,x0)
function F = A1_phiv_initial_value(x)
F(1) = x(1)*cos(2.0*pi*0.75) + x(3)*sin(2.0*pi*0.75) - x(2) * cos(2.0*pi*2.0909) - x(4) * sin(2.0*pi*0.7841) + (4.3719 * x(6)) / (4.3719 - 1.0)*sin(2.0*pi*0.375 + x(5)) - (1.0 / (10.7488 + 1.0));
F(2)= x(1) - x(2) * cos(2.0*pi*2.0909) + x(4) * sin(2.0*pi*2.0909) + (4.3719 * x(6)) / (4.3719 - 1.0)*sin(x(5)) - (1.0 / (10.7488 + 1.0));
F(3) = -2.0 * x(1) * sin(2.0 * pi*0.75) + 2.0 * x(3) * cos(2.0 * pi*0.75)- (-2.0909 * x(2) * sin(2.0 * pi*0.7841) + 2.0909 * x(4) * cos(2.0 * pi*0.7841) - (4.3719 * x(6)) / (4.3719 - 1.0)*cos(2.0 * pi*0.375 + x(5)));
F(4) = 2.0 * x(3) + 2.0909 *x(2) * sin(2.0*pi*2.0909) - 2.0909 * x(4) * cos(2.0*pi*2.0909) + (4.3719 * x(6)) / (4.3719 - 1.0)*cos(x(5));
F(5) = (10.7488 / (10.7488 + 1.0)) + x(6) * sin(x(5))*(4.3719 / (4.3719-1.0) - (10.7488 + 1.0))- (x(2) * cos(2.0*pi*2.0909) + x(4) * sin(2.0*pi*2.0909));
F(6) = (2.0*pi*10.7488 / (10.7488 + 1.0))*(1.0 - 0.375) + x(6) * (cos(2.0*pi*0.375 + x(5)) - cos(x(5)))*((4.3719 *x(6)) / (4.3719 - 1.0) - (10.7488 + 1.0))+ (x(2) / 2.0909)*(sin(2.0*pi*0.7841) - sin(2.0*pi*2.0909)) + (x(4) / 2.0909)*(cos(2.0*pi*2.0909) - cos(2.0*pi*0.7841));
end
実行結果
方程式が解かれました。
関数値のベクトルがゼロに近く
(関数の許容誤差値による測定)、
問題が正則として現れる (勾配による測定) ため、fsolve は完了しました。
<停止条件の詳細>
x =
-4.2435 -4.2205 3.1149 0.4730 -0.6943 -0.6295
  2 comentarios
HAGIWARA
HAGIWARA el 13 de Nov. de 2019
親切なご回答に感謝いたします.
パスの確認をし修正した結果, 方程式を解くことができました.
ただ, この"問題が正則として現れる (勾配による測定) ため、fsolve は完了しました"というのは, 解が正常には導出されなかったということでしょうか?
Yoshio
Yoshio el 16 de Nov. de 2019
停止条件の詳細を見てみると
<停止条件の詳細>
x =
-4.2435 -4.2205 3.1149 0.4730 -0.6943 -0.6295
方程式が解かれました。関数値の二乗和、r = 4.776923e-29 が
sqrt(options.FunctionTolerance) = 1.000000e-03 未満です。r の勾配の相対ノルム、9.076301e-14 が options.OptimalityTolerance = 1.000000e-06 未満です。
となっており、解の誤差とこの解の勾配も設定許容値内に入っているので正常終了と思います。

Iniciar sesión para comentar.

Más respuestas (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!