Решить функцию, не решая одновременных уравнений - PullRequest
0 голосов
/ 03 января 2019

Как мне решить проблему с 3 уравнениями одновременно? Мой код, показанный ниже, не дает правильных результатов.

Я пытаюсь найти максимальную площадь (A), в то время как длины x и y соответствуют следующему свойству: 2x + y = 960.

Я уже посмотрел документацию, и кажется, что формат моих аргументов правильный.

Solve[{2 x + y == 960, A == x*y, D[A] == 0}, {x, y}]

Я не уверен в этом, однако это может быть слишком сложно для работы функции Solve, поскольку она получает производную от одной из переменных (D [A]).

Однако я могу сделать этот вопрос вручную:

  1. Переставьте 1-е уравнение так, чтобы y = 960 - 2x

  2. Подставим y во 2-е уравнение так, чтобы A = x (960 - 2x) = 2x ^ 2 + 960x

  3. Получить производную: 4x + 960 и решить для 4x + 960 = 0

  4. x = 240

  5. Заменить x = 240 на y = 960 - 2x

  6. y = 960 - 2 (240) = 960 - 480 = 480

  7. Поэтому размеры составляют 240 х 480.

Я ожидаю, что результат будет {240, 480}. Спасибо:)

РЕДАКТИРОВАТЬ: Вот что я напечатал в Mathematica:

Clear[x, y, A]

Solve[{2 x + y == 960, A == x*y, D[A, x] == 0}, {x, y}]

OUT: {{x -> 1/2 (480 - Sqrt[2] Sqrt[115200 - A]), 
  y -> 480 + Sqrt[2] Sqrt[115200 - A]}, {x -> 
   1/2 (480 + Sqrt[2] Sqrt[115200 - A]), 
  y -> 480 - Sqrt[2] Sqrt[115200 - A]}

NMaximize[{x*y, 2 x + y == 960}, {x, y}]

OUT: {115200., {x -> 240., y -> 480.}}

1 Ответ

0 голосов
/ 03 января 2019

Попробуйте это

NMaximize[{x*y,2x+y==960},{x,y}]

, которая максимизирует область с вашим выражением ограничения и которая мгновенно возвращает x-> 240, y-> 480

Сложность, с которой вы столкнулись при использовании D[A], когда Mathematica должна знать, по какой переменной вы дифференцируетесь.

Возможно, что-то в этом поможет вам понять, что происходит с вашей производной.

EDIT

Посмотрите, что будет дано Solve

Clear[x,y,A];
A == x*y;
D[A, x]

, который дает 0. Почему это? Вы берете производную A по x, но A никогда не присваивалось никакого значения, вы только объявили, что A и x * y равны. Таким образом

Clear[x,y,A];
{2 x + y == 960, A == x*y, D[A, x] == 0}

передает

{2*x + y == 960, A == x*y, True}

до Solve, и это, возможно, менее озадачивает, когда Solve возвращает что-то с буквой А.

Если какая-то функция в Mathematica не дает ожидаемого результата или имеет смысл, тогда проверка того, что именно дается этой функции в качестве аргументов, всегда является хорошим первым шагом.

В Mathematica всегда есть несколько способов что-либо сделать, и некоторые из них, похоже, вообще не имеют никакого смысла

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...