【发布时间】:2014-03-18 09:38:28
【问题描述】:
我正在尝试求解一个包含四个变量的四个方程组。我已经阅读了许多关于类似问题的主题,并尝试遵循这些建议。但我认为这有点乱,因为这里的日志和交叉产品。这是确切的系统:
7*w = (7*w+5*x+2*y+z) * ( 0.76 + 0.12*Log[w] -0.08*Log[x] -0.03*Log[y] -0.07*Log [7*w+5*x + 2*y + z]),
5*x = (7*w+5*x+2*y+z) * ( 0.84 - 0.08*Log[w] +0.11*Log[x] -0.02*Log[y] -0.08*Log[7* w+5*x + 2*y + z]),
2*y = (7*w+5*x+2*y+z) * (-0.45 - 0.03*Log[w] -0.02*Log[x] +0.05*Log[y] +0.12*Log[7 *w+5*x + 2*y + z]),
1*z = (7*w+5*x+2*y+z) * (-0.16 + 0*Log[w] - 0*Log[x] - 0*Log[y] + 0.03*Log[7 *w+5*x + 2*y + z])
(仅供参考-我是一名年轻的经济学家,这是消费者需求系统的延伸。)理论上,我们知道这个系统存在一个独特的解决方案,它是积极的。
试试
Solve & NSolve :因为应该有解决方案,所以我尝试了这些,但都不起作用。我猜系统有太多日志需要处理。
-
FindRoot :我从数据中获得的初始值 (14,15,10,100) 开始。 FindRoot 返回最后一个值(不满足我的系统)和以下消息。
FindRoot::lstol:线搜索将步长减小到 AccuracyGoal 和 PrecisionGoal 指定的容差范围内,但无法.....
我尝试了不同的初始值,包括 FindRoot 返回的值。我试图在每一步分析解决方案值的模式。我没有看到任何模式,但注意到 z 值在此过程的早期变为负数。所以我对这些值设置了界限。这只是在最小值 0.1 处停止代码。我还尝试了指数系统而不是日志,同样的问题。
Reap[FindRoot[{
7*w==(7*w+5*x + 2*y + z)*(0.76 + 0.12*Log[w] -0.08*Log[x] -0.03*Log[y] -0.07*Log[7*w+5*x + 2*y + z]),
5*x==(7*w+5*x + 2*y + z)*(0.84 -0.08*Log[w] +0.11*Log[x] -0.02*Log[y] -0.08*Log[7*w+5*x + 2*y + z]),
2*y==(7*w+5*x + 2*y + z)*(-0.45 - 0.03*Log[w] -0.02*Log[x] +0.05*Log[y] +0.12*Log[7*w+5*x + 2*y + z]),
z==(7*w+5*x + 2*y + z)*(-0.16 + 0*Log[w] -0*Log[x] -0*Log[y] +0.03*Log[7*w+5*x + 2*y + z])},
{{w,14,0.1,500},{x,15,0.1,500},{y,10,0.1,500},
{z,100,0.1,500}},EvaluationMonitor:>Sow[{w,x,y,z}] ]]
- FindMinimum :因为我们可以将此问题写为最小化问题,所以我尝试了这个(按照这里的建议)。返回的值没有将系统或方程收敛到零。我只尝试了前两个方程,并且那种收敛到零。
希望这对这里的专家来说足够有吸引力!有什么想法我应该如何找到解决方案,或者为什么我不能?这是我第一次使用 Mathematica,不幸的是我第一次凭经验解决系统/优化问题!非常感谢。
{g1,g2,g3, g4}={7*w - (7*w+5*x+2*y+z)* (0.76+0.12*Log[w]-0.08*Log[x]-0.03*Log[y] -0.07*Log[7*w+5*x+2*y+z]),5*x - (7*w+5*x+2*y+z)*(0.84-0.08*Log[w]+0.11*Log[x]-0.02*Log[y] -0.08*Log[7*w+5*x+2*y+z]),2*y - (7*w+5*x+2*y+z)*(-0.45-0.03*Log[w]-0.02*Log[x]+0.05*Log[y]+0.12*Log[7*w+5*x+2*y+z]), 1*z - (7*w+5*x+2*y+z)*(-0.16+0*Log[w]-0*Log[x]-0*Log[y]+0.03*Log[7*w+5*x+2*y+z])};subdomain=0<w<100 &&0<x<100 && 0<y<100 && 0<z<100;res=FindMinimum[{Total[{g1,g2,g3, g4}^2],subdomain},{w,x,y,z},AccuracyGoal->5]{g1,g2,g3,g4}/.res[[2]]
【问题讨论】:
标签: wolfram-mathematica mathematical-optimization equation-solving