MATLAB Answers

HAGIWARA
0

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

Asked by HAGIWARA
on 9 Nov 2019
Latest activity Commented on by Yoshio
on 16 Nov 2019 at 5:48
以下のエラーコードが出た場合の対処法を教えていただきたいです。
"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)

  0 Comments

Sign in to comment.

1 Answer

Yoshio
Answer by Yoshio
on 9 Nov 2019
Edited by Yoshio
on 9 Nov 2019
 Accepted Answer

'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 Comments

HAGIWARA
on 13 Nov 2019 at 3:36
親切なご回答に感謝いたします.
パスの確認をし修正した結果, 方程式を解くことができました.
ただ, この"問題が正則として現れる (勾配による測定) ため、fsolve は完了しました"というのは, 解が正常には導出されなかったということでしょうか?
Yoshio
on 16 Nov 2019 at 5:48
停止条件の詳細を見てみると
<停止条件の詳細>
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 未満です。
となっており、解の誤差とこの解の勾配も設定許容値内に入っているので正常終了と思います。

Sign in to comment.