請有人能解釋一下我的代碼有什么問題。我嘗試用 fsolve 求解多個方程組。
`clear
clc
close all
Modellpar.Sp11 = 0.025;
Modellpar.Sp12 = 0.8;
Modellpar.Sp21 = 0.04;
Modellpar.Sp22 = 0.96;
Modellpar.Sp31 = 0.04;
Modellpar.Sp32 = 0.96;
Sp11 = Modellpar.Sp11;
Sp12 = Modellpar.Sp12;
Sp21 = Modellpar.Sp21;
Sp22 = Modellpar.Sp22;
Sp31 = Modellpar.Sp31;
Sp32 = Modellpar.Sp32;
func = @(X)[(0.5) X(11) X(7) - X(1);
(0.5) X(12) X(8) - X(2);
(1) - X (5) - X(3);
(2) - X (6) - X(4);
(5) - X (11) - X(13);
(6) - X (12) - X(14);
(3) - X (9) - X(7);
(4) - X (10) - X(8);
(3) - (Sp11 * X (1));
(4) - (Sp12 * X (2));
(11) - (Sp21 * X (5));
(12) - (Sp22 * X (6));
(9) - (Sp31 * X (3));
(10) - (Sp32 * X (4))];
initial = [0;0;0;0;0;0;0;0;0;0;0;0;0;0];
solns = fsolve(func, initial, optimoptions('fsolve', 'Display', 'off'));`
我得到了錯誤:
Script_ProjektWS 中的錯誤(第 120 行)
solns = fsolve(func, initial, optimoptions('fsolve', 'Display', 'off'));
原因:初始目標函式評估失敗。FSOLVE 無法繼續。
uj5u.com熱心網友回復:
問題似乎對我來說很好:
clear
clc
close all
Sp11 = 0.025;
Sp12 = 0.8;
Sp21 = 0.04;
Sp22 = 0.96;
Sp31 = 0.04;
Sp32 = 0.96;
func = @(X)[(0.5) X(11) X(7) - X(1);
(0.5) X(12) X(8) - X(2);
(1) - X(5) - X(3);
(2) - X(6) - X(4);
(5) - X(11) - X(13);
(6) - X(12) - X(14);
(3) - X(9) - X(7);
(4) - X(10) - X(8);
(3) - (Sp11 * X(1));
(4) - (Sp12 * X(2));
(11) - (Sp21 * X(5));
(12) - (Sp22 * X(6));
(9) - (Sp31 * X(3));
(10) - (Sp32 * X(4))];
initial = [0;0;0;0;0;0;0;0;0;0;0;0;0;0];
solns = fsolve(func, initial, optimoptions('fsolve', 'Display', 'off'))

我發現的唯一問題是,在函式定義的某些行中,索引與變數func用空格分隔,如X
(6) - X (12) - X(14);
這實際上創建了一個包含比預期更多元素的向量。我更正了這些空格,代碼運行良好。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/517736.html
標籤:matlab方程求解解决
