24小时热门版块排行榜    

查看: 1399  |  回复: 9

jollage

银虫 (正式写手)

[求助] 在几个条件下求解

我把mathematica的文件上传了,懂的帮忙看一下,就是在条件求a3,a4,我不太会用mathematica,谢了。
回复此楼

» 本帖附件资源列表

  • 欢迎监督和反馈:小木虫仅提供交流平台,不对该内容负责。
    本内容由用户自主发布,如果其内容涉及到知识产权问题,其责任在于用户本人,如对版权有异议,请联系邮箱:xiaomuchong@tal.com
  • 附件 1 : Solvea3a4.nb
  • 2013-06-21 04:34:27, 5.83 K

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

walk1997

金虫 (著名写手)

在最后加一句  NMinimize[{Ob, Dk > 0, Dkp > 0, Pi > k > 0}, {k, a3, a4}]

求出的结果是 {-8.44065*10^9,{k->0.,a3->3.74431*10^9,a4->-2.3325*10^9}}
不知道合理不 结合题目判断下
2楼2013-06-21 16:40:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jollage

银虫 (正式写手)

引用回帖:
2楼: Originally posted by walk1997 at 2013-06-21 16:40:31
在最后加一句  NMinimize

求出的结果是 {-8.44065*10^9,{k->0.,a3->3.74431*10^9,a4->-2.3325*10^9}}
不知道合理不 结合题目判断下

这个也是我之前试的,不是合理的答案。

有没有办法用作图的办法?知道怎样把Dk>0,Dkp>0,0<k<pi的图做出来吗?
3楼2013-06-22 03:05:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

walk1997

金虫 (著名写手)

引用回帖:
3楼: Originally posted by jollage at 2013-06-22 03:05:19
这个也是我之前试的,不是合理的答案。

有没有办法用作图的办法?知道怎样把Dk>0,Dkp>0,0<k<pi的图做出来吗?...

奇怪,这次试了下,发现结果报告是无下限。
同时,直接取k=1,代入进去求,也是无下限,
而且 从表达式上看,Dk,Dkp,OB 都是a3,a4的线性叠加,
而且系数比(a3系数/a4系数)分别是0.324和0.348之间
而OB的表达式中比例系数比0.38多点,这导致全局无上下限
(因为这种情况下,可以取a3/a4=0.35,a3=-Inifinity,满足约束,但Ob负无穷大.)
取k为其他数时,相互间的比例系数变化很大,不存在一个比值落在所有的Ob 表达式
我觉得可能是你OB表示式中a3,a4前面系数的比值不对
或者是a3,a4还有些限制
在k=1的时候, 把Ob改成=0.33a3+a4 (常数和比例因子扔了)
这时候有极小值.....


问题本身是不是求全局的极值 还是求局部的?
本身对a3,a4是不是还有约束条件?
画图的
4楼2013-06-22 07:55:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jollage

银虫 (正式写手)

引用回帖:
4楼: Originally posted by walk1997 at 2013-06-22 07:55:27
奇怪,这次试了下,发现结果报告是无下限。
同时,直接取k=1,代入进去求,也是无下限,
而且 从表达式上看,Dk,Dkp,OB 都是a3,a4的线性叠加,
而且系数比(a3系数/a4系数)分别是0.324和0.348之间
而OB的表达式中 ...

知不知道什么命令可以画带参数的不等式?比如z=ax+by+c, a,b,c,x,y都有范围,然后来作图?

我知道a3,a4的正确答案,在-1 到1 之间。
5楼2013-06-23 04:31:40
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

walk1997

金虫 (著名写手)

引用回帖:
5楼: Originally posted by jollage at 2013-06-23 04:31:40
知不知道什么命令可以画带参数的不等式?比如z=ax+by+c, a,b,c,x,y都有范围,然后来作图?

我知道a3,a4的正确答案,在-1 到1 之间。...

有点明白问题所在了
前面的代码不太对 因为你题目的要求是对任何的k都要求是约束 而不是单独的k 重新做了下 速度慢了点
做出的结果是
{0.00235097 ,{a3->-0.0492965,a4->0.0097175}}
不知对否
6楼2013-06-23 13:28:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jollage

银虫 (正式写手)

引用回帖:
6楼: Originally posted by walk1997 at 2013-06-23 13:28:23
有点明白问题所在了
前面的代码不太对 因为你题目的要求是对任何的k都要求是约束 而不是单独的k 重新做了下 速度慢了点
做出的结果是
{0.00235097 ,{a3->-0.0492965,a4->0.0097175}}
不知对否...

太好了,很接近,正确答案是a3=-0.045211119360,a4=0.008228661760,但是我觉得应该是我给你的条件没有弄清楚,你的方法应该是对的,可以把代码给我看看吗?我不懂什么是“对任何的k都要求是约束”。谢了
7楼2013-06-23 15:58:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

walk1997

金虫 (著名写手)

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
jollage(xzhdty代发): 金币+10, 代楼主发放金币 2013-06-25 07:13:49
引用回帖:
7楼: Originally posted by jollage at 2013-06-23 15:58:49
太好了,很接近,正确答案是a3=-0.045211119360,a4=0.008228661760,但是我觉得应该是我给你的条件没有弄清楚,你的方法应该是对的,可以把代码给我看看吗?我不懂什么是“对任何的k都要求是约束”。谢了...

可能你给的表达式有点差别 (或者这里有个零点的问题 )
我试了下 你给的值比上面的值 用附件的表达式要大些
下面是代码 可能效率比较低 算一下大概3分钟(全局最小值)
代码给了2个结果 我觉得第一个结果更合理
(这里面比较奇怪的是 第一条件其实应该比第二个强 但是得到的最小值却比第二个小-- 这点我也还没想明白 细致之处需要进一步考虑)
Clear["Global`*"];
Dk = 16 a3 + 6 (1/16 - 2 a3 - 4 a4) + 30 a4 +
    2 (-9 a3 - 4 (1/16 - 2 a3 - 4 a4) - 16 a4) Cos[k] +
    2 (1/16 - 2 a3 - 4 a4) Cos[2 k] + 2 a3 Cos[3 k] + 2 a4 Cos[4 k] //
    FullSimplify;
Dkp = 5 (16 a3 + 6 (1/16 - 2 a3 - 4 a4) + 30 a4 +
       2 (-9 a3 - 4 (1/16 - 2 a3 - 4 a4) - 16 a4) Cos[k] +
       2 (1/16 - 2 a3 - 4 a4) Cos[2 k] + 2 a3 Cos[3 k] +
       2 a4 Cos[4 k]) +
    k (-2 (-9 a3 - 4 (1/16 - 2 a3 - 4 a4) - 16 a4) Sin[k] -
       4 (1/16 - 2 a3 - 4 a4) Sin[2 k] - 6 a3 Sin[3 k] -
       8 a4 Sin[4 k]) // FullSimplify;
Ob = 0.08904499121480983 + 3.616287830531132 a3 + 9.423861054539543 a4;
f1[at3_?NumericQ, at4_?NumericQ] :=
  NMinimize[Dk /. {a3 -> at3, a4 -> at4}, {k}][[1]];
f2[at3_?NumericQ, at4_?NumericQ] :=
  NMinimize[Dkp /. {a3 -> at3, a4 -> at4}, {k}][[1]];
re1 = NMinimize[{Ob, f1[a3, a4] > 0, f2[a3, a4] > 0}, {a3, a4},
   MaxIterations -> 1000] // AbsoluteTiming
\[Epsilon] = 10^-20;
f3[at3_?NumericQ, at4_?NumericQ] :=
  NMinimize[{Dk /. {a3 -> at3, a4 -> at4},
     Pi - \[Epsilon] > k > \[Epsilon]}, {k}][[1]];
f4[at3_?NumericQ, at4_?NumericQ] :=
  NMinimize[{Dkp /. {a3 -> at3, a4 -> at4},
     Pi - \[Epsilon] > k > \[Epsilon]}, {k}][[1]];
re2 = NMinimize[{Ob, f3[a3, a4] > 0, f4[a3, a4] > 0}, {a3, a4},
   MaxIterations -> 1000] // AbsoluteTiming
8楼2013-06-23 17:44:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jollage

银虫 (正式写手)

引用回帖:
8楼: Originally posted by walk1997 at 2013-06-23 17:44:25
可能你给的表达式有点差别 (或者这里有个零点的问题 )
我试了下 你给的值比上面的值 用附件的表达式要大些
下面是代码 可能效率比较低 算一下大概3分钟(全局最小值)
代码给了2个结果 我觉得第一个结果更合理
...

谢谢。

几个问题:
(1)NumericQ是判断是否是一个数值,我查了一下。你这里的_?是什么意思?为什么要判断它是不是一个数值呢?
(2)[[1]]取第一个值?结果里有很多值吗?
(3)如何查看在取到那个最小值的k是多少?


有值得推荐的mathematica的入门书吗?谢谢。能不能帮我把我在这个版的另外一个帖子也看一下,http://muchong.com/bbs/viewthread.php?tid=6041689&fpage=1.谢了
9楼2013-06-23 20:06:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

walk1997

金虫 (著名写手)

引用回帖:
9楼: Originally posted by jollage at 2013-06-23 20:06:49
谢谢。

几个问题:
(1)NumericQ是判断是否是一个数值,我查了一下。你这里的_?是什么意思?为什么要判断它是不是一个数值呢?
(2)[[1]]取第一个值?结果里有很多值吗?
(3)如何查看在取到那个最小 ...

(1) 只是定义下自变量是数值
(2)第一个是目标函数Dp等的值 还有其他的 是相应的k的取值不需要
(3) Ob的最小值和k无关 只和a3 a4有关
只是所选的a3 a4 保证对任意的k(差不多任意) 都有Dp Dpk>0

mathemcatic的入门书很多 可以先随便找本普通书看看 了解下基本命令
然后 可以看看 Mathematica&Ograve; programming: an advanced introduction
by Leonid Shifrin
基本应该差不多了 再进阶 就各种具体问题了
这书这论坛好像有下载 该作者在mathematic的论坛也好像比较活跃
10楼2013-06-23 20:40:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 jollage 的主题更新
信息提示
请填处理意见