2014-12-14 8 views
0

У меня есть задача решить систему уравнений с FindRoot:Mathematica FindRoot решить уравнение

a*x+b*y^2-c*x^2=a-b, a*x^2+b*y^2+b*x-cy=b+c, где а = 10, B = 10, с = 6;

Я очень (!) Новичок в Mathematica и однажды узнаю об этом.

Любые комментарии относительно того, как решить это уравнение, будут высоко оценены!

Спасибо!

+0

http://reference.wolfram.com/language/ref/FindRoot.html – rubenvb

+0

Будет ли это правильно: FindRoot [{a * x + b * y^2 - c * x^2 == a - b , a * x^2 + b * y^2 + b * x - c * y == b + c}, {{x, 1}, {y, 1}}] Это дает мне результат, но я не знаю, правильно ли это. – user3722573

ответ

2

Это начинает поиск корня в x = 0 и y = 0

eq = {a*x + b*y^2 - c*x^2 == a - b, a*x^2 + b*y^2 + b*x - c*y == b + c} 
param = {a -> 10, b -> 10, c -> 6} 
result = FindRoot[eq /. param, {x, 0}, {y, 0}] 

Это дает вам только 1 из двух реальных решений. Solve предоставит вам и (и даже некоторые решения с комплексными числами). Для того, чтобы проверить:

eq /. param /. result 

Это возвращает (True, True), так что вы знаете, что вы нашли правильный корень.

Чтобы найти решение графически, используйте ContourPlot:

ContourPlot[Evaluate[eq /. param], {x, -5, 5}, {y, -5, 5}] 
1

Вот версия с Решать/NSolve

NSolve[{a*x + b*y^2 - c*x^2 == a - b, 
     a*x^2 + b*y^2 + b*x - c*y == b + c} /. {a -> 10, b -> 10, c -> 6}, 
     {x, y}] 

Это даст 4 решения. Если вы используете Solve вместо NSolve, у вас будет (большая) закрытая форма каждого компонента каждого решения.

Если вам нужно больше цифр для решения, добавьте в конце команды NSolve параметр WorkingPrecision->30 (или любое другое число цифр. Это квадратичные числа, они могут быть рассчитаны с любой необходимой точностью).

Смежные вопросы