解决函数而不解决联立方程

时间:2019-01-03 07:41:07

标签: wolfram-mathematica

如何解决3个联立方程的问题?下面显示的我的代码未给出正确的结果。

我试图找到最大面积(A),而长度x和y都遵循以下属性:2x + y = 960。

我已经看过文档,看来我的论点格式是正确的。

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

我不确定这一点,但是,对于Solve函数来说,它可能太复杂了,因为它正在获取变量(D [A])之一的导数。

但是我可以手动解决此问题:

  1. 重新排列第一个方程,以便y = 960-2x

  2. 将y代入第二个等式中,使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 x 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 :(得分:1)

尝试一下

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

使用约束表达式最大化面积,并立即返回x-> 240,y-> 480

当Mathematica需要知道您要区分的变量时,您遇到的困难是使用D[A]

也许其中的某些内容可以帮助您了解衍生产品的状况。

编辑

看看将得到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返回带有A的内容时,这可能会少一些困惑。

如果Mathematica中的某个函数没有给您期望的结果或有意义的结果,那么准确地检查作为参数提供给该函数的内容总是一个好的第一步。

在Mathematica中,总有几种方法可以做任何事情,其中​​有些似乎根本没有道理