Я пытаюсь решить систему уравнений в Matlab.Ложные решения при решении системы уравнений
Система уравнений определяется следующим образом:
syms x1 x2 lambda
Grad =
2*lambda*x1 + (8*x1*(((x2 - 10)^2 + x1^2)^(1/2) - 10))/((x2 - 10)^2 + x1^2)^(1/2) + (4*x1*(((x2 + 10)^2 + x1^2)^(1/2) - 10))/((x2 + 10)^2 + x1^2)^(1/2) - 5
2*lambda*x2 + (4*(((x2 - 10)^2 + x1^2)^(1/2) - 10)*(2*x2 - 20))/((x2 - 10)^2 + x1^2)^(1/2) + (2*(((x2 + 10)^2 + x1^2)^(1/2) - 10)*(2*x2 + 20))/((x2 + 10)^2 + x1^2)^(1/2) - 10
x1^2 + x2^2 - 36
Я попытался решить ее с помощью:
[X1 X2 LAMBDA] = solve([Grad(1) == 0, Grad(2) == 0, Grad(3) == 0],[x1, x2, lambda]);
и
[X1 X2 LAMBDA] = solve(Grad,[x1, x2, lambda]);
Но я получаю ошибку:
Warning: Possibly spurious solutions.
> In symengine
In mupadengine/evalin (line 102)
In mupadengine/feval (line 158)
In solve (line 292)
In Ex (line 63)
Я не понимаю, почему Matlab делает это, у меня есть три уравнения с тремя переменными, поэтому Matlab должен иметь возможность найти решение правильно?
Предупреждение [поясняется здесь] (http://www.mathworks.com/matlabcentral/answers/106744-solve-function-solution-question#answer_115763) – Daniel
Существует множество ситуаций, в которых «N уравнений в N неизвестные "будут вызывать дополнительные или неточные решения. Это неизбежно из-за разницы между математической (абсолютной точностью) и реальными данными, не говоря уже о прецизионных ограничениях цифровой обработки данных. –