Проблема с решением простой системи уравнений

Форум пользователей пакета Maple

Модератор: Admin

fenix85
Сообщения: 141
Зарегистрирован: Вт мар 01, 2011 12:06 pm

Проблема с решением простой системи уравнений

Сообщение fenix85 » Вс июн 26, 2016 3:03 pm

Дорого времени суток, мне нужна помощь в решении системи уравнений....появляется сообщение об ошибке вот такое

Error, (in RootFinding:-Isolate) symbolic coefficients are not supported, {(y8^2/(64*y8^2-4900-8000*y7^2))^(1/2)}
додаю код ибо не вижу файла которий я присоединял к сообщению......

Код: Выделить всё

> restart; st := time(); k := -.2; st := time(); Digits := 30;

epsilon := 10^(-2); j := 10^(-1); e := 10.0; tau := .17; delta := 0.1e-1;
>
>
calculating of Gamma

> alpha := 0; y1 := e; y5 := j; mu := proc (y1, y8) options operator, arrow; evalf((1-2/y1)^(1/2)*y8) end proc; f := -y1^2*y7^2+(1-2/y1)*y8^2-1; d := (alpha^2-y1^3)*y7^2-2*alpha*y7*y8+y8^2-3*alpha*epsilon*(y1^2+alpha^2)*y7^2/y1^2+3*epsilon*(y1^2+2*alpha^2)*y7*y8/y1^2-3*alpha*epsilon*y8^2/y1^2+alpha*epsilon*(3*y1^2+alpha^2)*(y1^3-alpha^2)*y7^4/y1^3-alpha*epsilon*(1-2/y1)*y8^4/y1^3+epsilon*(y1^6-3*y1^5-3*alpha^2*y1^3+9*alpha^2*y1^2+4*alpha^4)*y7^3*y8/y1^3+alpha*epsilon*(3*y1^3-11*y1^2-6*alpha^2+2*alpha^2/y1)*y7^2*y8^2/y1^3+epsilon*(4*alpha^2-4*alpha^2/y1-y1^3+3*y1^2)*y7*y8^3/y1^3;
s := RootFinding[Isolate]({d, f}, [y7, y8]);
 L := [];
 for j to nops(s) do if `and`(rhs(s[j, 1]) >= 0, rhs(s[j, 2]) >= 0) then L := [op(L), rhs(s[j, 2])] end if end do;
if nops(L) > 0 then M := mu(y1, max(L)) end if;
d1 := sqrt((y1-2)^2*y8^2/((y1-2)^2*y8^2-y1^2*y5^2-(y1-2)*y1^3*y7^2))-M-delta;
sp := RootFinding[Isolate]({d1, f}, [y7, y8]);
Error, (in RootFinding:-Isolate) symbolic coefficients are not supported, {(y8^2/(64*y8^2-1-8000*y7^2))^(1/2)}

Kitonum
Сообщения: 2084
Зарегистрирован: Ср дек 31, 2008 1:55 pm
Откуда: г. Пенза

Re: Проблема с решением простой системи уравнений

Сообщение Kitonum » Вс июн 26, 2016 7:18 pm

При нахождении sp появляется ошибка, т.к. RootFinding[Isolate] работает только с полиномиальными системами. Я заменил её на solve и ещё кое-что немного подправил. Теперь всё работает:

restart;
k := -0.2: Digits := 30: epsilon := 10^(-2): j := 10^(-1): e := 10.0: tau := 0.17: delta := 0.1e-1: alpha := 0: y1 := e: y5 := j:
mu := y8->evalf((1-2/y1)^(1/2)*y8):
f := -y1^2*y7^2+(1-2/y1)*y8^2-1;
d := (alpha^2-y1^3)*y7^2-2*alpha*y7*y8+y8^2-3*alpha*epsilon*(y1^2+alpha^2)*y7^2/y1^2+3*epsilon*(y1^2+2*alpha^2)*y7*y8/y1^2-3*alpha*epsilon*y8^2/y1^2+alpha*epsilon*(3*y1^2+alpha^2)*(y1^3-alpha^2)*y7^4/y1^3-alpha*epsilon*(1-2/y1)*y8^4/y1^3+epsilon*(y1^6-3*y1^5-3*alpha^2*y1^3+9*alpha^2*y1^2+4*alpha^4)*y7^3*y8/y1^3+alpha*epsilon*(3*y1^3-11*y1^2-6*alpha^2+2*alpha^2/y1)*y7^2*y8^2/y1^3+epsilon*(4*alpha^2-4*alpha^2/y1-y1^3+3*y1^2)*y7*y8^3/y1^3;
s := RootFinding[Isolate]({d, f}, [y7, y8]);
L := [];
for j to nops(s) do if `and`(rhs(s[j, 1]) >= 0, rhs(s[j, 2]) >= 0) then L := [op(L), rhs(s[j, 2])] end if end do;
if nops(L) > 0 then M := mu(max(L)) end if;
d1 := sqrt((y1-2)^2*y8^2/((y1-2)^2*y8^2-y1^2*y5^2-(y1-2)*y1^3*y7^2))-M-delta;
sp := solve({d1, f}, {y7, y8});

Markiyan Hirnyk
Сообщения: 1366
Зарегистрирован: Вс дек 04, 2011 11:07 pm

Другой путь

Сообщение Markiyan Hirnyk » Вс июн 26, 2016 8:50 pm

состоит в использовании DirectSearch (тогда не надо повышать Digits):

Код: Выделить всё

restart; k := -.2; epsilon := 10^(-2); j := 10^(-1); e := 10.0; tau := .17; delta := 0.1e-1; alpha := 0; y1 := e; y5 := j; mu := proc (y8) options operator, arrow; evalf((1-2/y1)^(1/2)*y8) end proc; f := -y1^2*y7^2+(1-2/y1)*y8^2-1; d := (-y1^3+alpha^2)*y7^2-2*alpha*y7*y8+y8^2-3*alpha*epsilon*(alpha^2+y1^2)*y7^2/y1^2+3*epsilon*(2*alpha^2+y1^2)*y7*y8/y1^2-3*alpha*epsilon*y8^2/y1^2+alpha*epsilon*(alpha^2+3*y1^2)*(y1^3-alpha^2)*y7^4/y1^3-alpha*epsilon*(1-2/y1)*y8^4/y1^3+epsilon*(y1^6-3*alpha^2*y1^3-3*y1^5+4*alpha^4+9*alpha^2*y1^2)*y7^3*y8/y1^3+alpha*epsilon*(3*y1^3-11*y1^2-6*alpha^2+2*alpha^2/y1)*y7^2*y8^2/y1^3+epsilon*(4*alpha^2-4*alpha^2/y1-y1^3+3*y1^2)*y7*y8^3/y1^3; s := RootFinding[Isolate]({d, f}, [y7, y8]); L := []; for j to nops(s) do if `and`(rhs(s[j, 1]) >= 0, rhs(s[j, 2]) >= 0) then L := [op(L), rhs(s[j, 2])] end if end do; if nops(L) > 0 then M := mu(max(L)) end if; d1 := sqrt((y1-2)^2*y8^2/((y1-2)^2*y8^2-y1^2*y5^2-(y1-2)*y1^3*y7^2))-M-delta; sp := DirectSearch:-SolveEquations([d1, f], AllSolutions, solutions = 5)

[[6.94785266414444 10^(-23),[[[6.09645667282166 10^(-12)],[5.68434188608080 10^(-12)]]],[y7=3.55175621966238,y8=-39.7255777867208],1723],[1.04249192937082 10^(-22),[[[9.25126641959650 10^(-12)],[4.32009983342141 10^(-12)]]],[y7=-3.55175621966008,y8=-39.7255777866951],1360],[2.32988869288450 10^(-22),[[[-5.27222709933994 10^(-12)],[-1.43245415529236 10^(-11)]]],[y7=3.55175621962527,y8=39.7255777863057],1466],[2.88936904170641 10^(-22),[[[5.32196509084315 10^(-12)],[-1.61435309564695 10^(-11)]]],[y7=-3.55175621962272,y8=39.7255777862773],1194],[0.973122948305498,[[[0.000466532149708598],[-0.986469832611850]]],[y7=0.114173147098315,y8=1.28310215845305],935]]
Пятое решение для проверки.

fenix85
Сообщения: 141
Зарегистрирован: Вт мар 01, 2011 12:06 pm

Re: Проблема с решением простой системи уравнений

Сообщение fenix85 » Пт июл 01, 2016 1:21 pm

Спасибо большое!