24小时热门版块排行榜    

查看: 1570  |  回复: 13

maganet

新虫 (初入文坛)

[求助] 同一个方程,在matab中的答案和在1spopt中结果不一致, 已有2人参与

下面是一个求解价格P的一元一次方程:

(1)   matlab中的代码如下:

p=solve('  (-0.5)*2/0.5331*(    ( p-200+(    (80+0.1*120)/0.1) )*(0.3671+log((1+0.1*(0.5331-0.3671)))/0.1) -  ((0.08*(200+40*0.04)+40)/0.08)/0.08 *((2.71828182845905^((0.08*(0.3671-0.04)))-1)-((0.08*(0.3671-0.04))))    -(40*0.04*0.3671)+(1/2*40*0.04^2)-  ((80+0.1*120)/0.1)*0.5331    )+2*((500-0.5*p)+2)/0.5331*(0.3671+log((1+0.1*(0.5331 -0.3671)))/0.1)+1 ','p')
解得 p=607.05064790464619193396327973728


(2)   1spopt中的代码如下:

Parameters  p[0,]  ;
Function
          (-0.5)*2/0.5331*(    ( p-200+(    (80+0.1*120)/0.1) )*(0.3671+log((1+0.1*(0.5331-0.3671)))/0.1) -  ((0.08*
(200+40*0.04)+40)/0.08)/0.08 *((2.71828182845905^((0.08*(0.3671-0.04)))-1)-((0.08*(0.3671-0.04))))    -
(40*0.04*0.3671)+(1/2*40*0.04^2)-  ((80+0.1*120)/0.1)*0.5331    )+2*((500-0.5*p)+2)/0.5331*(0.3671+log((1+0.1*(0.5331
-0.3671)))/0.1)+1  =0;
解得 p= 705.803382033099

(3)   matlab 先对表达式处理
    w=(-0.5)*2/0.5331*(    ( p-200+(    (80+0.1*120)/0.1) )*(0.3671+log((1+0.1*(0.5331-0.3671)))/0.1) -  ((0.08*(200+40*0.04)+40)/0.08)/0.08 *((2.71828182845905^((0.08*(0.3671-0.04)))-1)-((0.08*(0.3671-0.04))))    -(40*0.04*0.3671)+(1/2*40*0.04^2)-  ((80+0.1*120)/0.1)*0.5331    )+2*((500-0.5*p)+2)/0.5331*(0.3671+log((1+0.1*(0.5331 -0.3671)))/0.1)+1
得到:   
       w=94643453558687378453/78153286502318080 - (2993414659220048125*p)/1500543100844507136
       vpa(w)   得到:1210.9977429532690068640285035303 - 1.9948874894265625590242248762822*p
   p=solve(' 1210.9977429532690068640285035303 - 1.9948874894265625590242248762822*p ','p')
解得 p=607.05064790464619193396327973728

(4)     再一次在 1spopt中输入的代码如下
Parameters  p[0,]  ;
Function
          1210.9977429532690068640285035303 - 1.9948874894265625590242248762822*p =0;
解得 p=607.05064790464619193396327973728

问题:   同一代码,两次在matlab 答案一致,两次在1spopt中 答案不一致,请问何故?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

dingd

铁杆木虫 (职业作家)

【答案】应助回帖

感谢参与,应助指数 +1
Matlab里:Log()是指的自然对数;
1stOpt中:Log()是指10为底的对数,自然对数是:Ln()。

1stOpt第一段代码里把“Log()”改为“Ln()”结果就完全一样了。
4楼2017-07-27 11:53:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

askuyue

铁杆木虫 (著名写手)

经常在小木虫上看到,一直都是不明白,为什么能用稳定的工具matlab求解,非要用1stopt去求解呢?

发自小木虫IOS客户端
HEHE
2楼2017-07-27 03:22:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maganet

新虫 (初入文坛)

当求解两个变量或以上的非线性方程的时候,1spopt存在很大的优势!

发自小木虫Android客户端
3楼2017-07-27 07:16:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maganet

新虫 (初入文坛)

5楼2017-07-27 14:55:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maganet

新虫 (初入文坛)

6楼2017-07-27 14:55:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Mr__Right

专家顾问 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
这是因为 , log 在matlab中时自然对数

在1stOpt中同样的符号代表的是常用对数,以10为底
文章乃身外之物,要多考虑编辑、审稿人和读者的感受。
7楼2017-07-27 20:26:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

Mr__Right

专家顾问 (著名写手)

引用回帖:
7楼: Originally posted by Mr__Right at 2017-07-27 20:26:32
这是因为 , log 在matlab中时自然对数

在1stOpt中同样的符号代表的是常用对数,以10为底

我没看已经有答案了

只看到应助还没有“完结'

太坑人了,碰上楼主这种
文章乃身外之物,要多考虑编辑、审稿人和读者的感受。
8楼2017-07-27 20:27:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maganet

新虫 (初入文坛)

9楼2017-07-28 00:04:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

maganet

新虫 (初入文坛)

10楼2017-07-28 00:04:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 maganet 的主题更新
信息提示
请填处理意见