"XXXX"は次の実行ではより多くの入力引数を必要とします。というエラーについて
3 views (last 30 days)
Show older comments
以下のエラーコードが出た場合の対処法を教えていただきたいです。
"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
Accepted Answer
Yoshio
on 9 Nov 2019
Edited: Yoshio
on 9 Nov 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 Comments
Yoshio
on 16 Nov 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 未満です。
となっており、解の誤差とこの解の勾配も設定許容値内に入っているので正常終了と思います。
More Answers (0)
See Also
Categories
Find more on 特別な値 in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!