Здравствуйте.
Сразу скажу, что я только начал изучать Scilab.
Пытаюсь решить систему нелинейных уравнений через функцию function.
Получается решить систему из 8 уравнений, но когда добавляю ещё 2, то выдаётся ошибка:
"fsolve([XB0 YB0 XC0 YC0 XD0 YD0 XE0 YE0],funkt)
--error 98
Функция аргумента scilab вернула некорректную переменную." Не могу понять, что я делаю не так...
Ниже пример работающей программы с 8-ю уравнениями и 8-ю неизвестными. Если раскомментировать строки
Код:
#y(9)=((x(8)-YF)/(x(7)-XF)-(x(6)-YF)/(x(5)-XF))/(1+(x(8)-YF)/(x(7)-XF)*(x(6)-YF)/(x(5)-XF))-tgEFD;
#y(10)=(x(2)/x(1)-x(4)/x(3))/(1+(x(2)/x(1))*(x(4)/x(3)))-tgCAB;
то выдастья вышеописанная ошибка.
Код:
XF=185
YF=-10
XB0=40;
XC0=45;
XD0=139;
XE0=148;
XF0=180;
YB0=60;
YC0=92;
YD0=91;
YE0=64;
YF0=-5;
tgCAB=(YB0/XB0-YC0/XC0)/(1+(YB0/XB0)*(YC0/XC0));
tgEFD=((YE0-YF0)/(XE0-XF0)-(YD0-YF0)/(XD0-XF0))/(1+(YE0-YF0)/(XE0-XF0)*(YD0-YF0)/(XD0-XF0));
LDE=sqrt((XD0-XE0)^2+(YD0-YE0)^2);
LFE=sqrt((XF0-XE0)^2+(YF0-YE0)^2);
LFD=sqrt((XF0-XD0)^2+(YF0-YD0)^2);
LAB=sqrt(XB0^2+YB0^2);
LAC=sqrt(XC0^2+YC0^2);
LCB=sqrt((XC0-XB0)^2+(YC0-YB0)^2);
LDB=sqrt((XD0-XB0)^2+(YD0-YB0)^2);
LEC=sqrt((XE0-XC0)^2+(YE0-YC0)^2);
function [y]=funkt(x)
y(1)=(x(7)-XF)^2+(x(8)-YF)^2-LFE^2;
y(2)=(x(5)-x(7))^2+(x(6)-x(8))^2-LDE^2;
y(3)=(XF-x(5))^2+(YF-x(6))^2-LFD^2;
y(4)=x(1)^2+x(2)^2-LAB^2;
y(5)=x(3)^2+x(4)^2-LAC^2;
y(6)=(x(3)-x(1))^2+(x(4)-x(2))^2-LCB^2;
y(7)=(x(5)-x(1))^2+(x(6)-x(2))^2-LDB^2;
y(8)=(x(7)-x(3))^2+(x(8)-x(4))^2-LEC^2;
#y(9)=((x(8)-YF)/(x(7)-XF)-(x(6)-YF)/(x(5)-XF))/(1+(x(8)-YF)/(x(7)-XF)*(x(6)-YF)/(x(5)-XF))-tgEFD;
#y(10)=(x(2)/x(1)-x(4)/x(3))/(1+(x(2)/x(1))*(x(4)/x(3)))-tgCAB;
endfunction
fsolve([XB0 YB0 XC0 YC0 XD0 YD0 XE0 YE0],funkt)
Система из 8 уравнений не устраивает, т.к. она имеет несколько решений, не все из которых подходят для моей задачи, а добавленными уравнениями хочу добиться одного действительного решения.