На самом деле мне приходится вычислять значения 3 переменных из, вероятно, 8 или 9 нелинейных уравнений (может быть больше для точности).Решение по определенному нелинейному уравнению в matlab
Я использовал lsqnonlin и fsolve. Используя lsqnonlin, он говорит, что решатель остановлен преждевременно (в основном из-за значения итерации, funEvals и допуска), а выход находится далеко от точного решения. Я попытался, но не знаю, на каком основании я должен установить эти параметры.
Использование fsolve говорит, что решение не найдено.
Я также использовал LMFnlsq и LMFsolve, но он не дает выхода нигде рядом с точным решением? Я также попытался изменить другие параметры, но я не смог довести эти решения до моих желаемых значений.
Есть ли другой способ решения этих переопределенных нелинейных уравнений?
Мой код до сих пор:
x0 = [20 40 275];
eqn = @(x)[((((x(1)-Sat(1,1))^2+(x(2)-Sat(1,2))^2+(x(3)-Sat(1,3))^2))-dis(1)^2);
((((x(1)-Sat(2,1))^2+(x(2)-Sat(2,2))^2+(x(3)-Sat(2,3))^2))-dis(2)^2);
((((x(1)-Sat(3,1))^2+(x(2)-Sat(3,2))^2+(x(3)-Sat(3,3))^2))- dis(3)^2);
((((x(1)-Sat(4,1))^2+(x(2)-Sat(4,2))^2+(x(3)-Sat(4,3))^2))- dis(4))^2;
((((x(1)-Sat(5,1))^2+(x(2)-Sat(5,2))^2+(x(3)-Sat(5,3))^2))- dis(5))^2;
((((x(1)-Sat(6,1))^2+(x(2)-Sat(6,2))^2+(x(3)-Sat(6,3))^2))- dis(6))^2;
((((x(1)-Sat(7,1))^2+(x(2)-Sat(7,2))^2+(x(3)-Sat(7,3))^2))- dis(7))^2;
((((x(1)-Sat(8,1))^2+(x(2)-Sat(8,2))^2+(x(3)-Sat(8,3))^2))- dis(8))^2;
((((x(1)-Sat(9,1))^2+(x(2)-Sat(9,2))^2+(x(3)-Sat(9,3))^2))- dis(9))^2;
((((x(1)-Sat(10,1))^2+(x(2)-Sat(10,2))^2+(x(3)-Sat(10,3))^2))- dis(10))^2];
lb = [0 0 0];
ub = [100 100 10000];
options = optimoptions('lsqnonlin','MaxFunEvals',3000,'MaxIter',700,'TolFun',1e-18);%,'TolX',1);
x= lsqnonlin(eqn,x0,lb,ub,options)
**Error:**
**Solver stopped prematurely.**
lsqnonlin stopped because it exceeded the iteration limit,
options.MaxIter = 700 (the selected value).
x = 20.349 46.633 9561.5
Надеясь для некоторых предложений!
Заранее благодарен!
Покажите нам, что вы пробовали. Невозможно предложить вещи, если мы не видели, что вы пробовали до сих пор. – rayryeng
Вы * можете * получить лучший ответ на http://math.stackexchange.com/ – RoadieRich
Я добавил код, который я сделал. Надеюсь, это сработает @rayryeng – Prajan