查看: 986|回复: 4|关注: 0

[已解决] MATLAB函数solve求解多元方程组结果全为0如何解决

[复制链接]

新手

7 麦片

财富积分


050


1

主题

4

帖子

0

最佳答案
  • 关注者: 1
本帖最后由 AnnieChinag 于 2019-3-21 14:12 编辑

大家好,我现在在做对一个含有23个变量的公式求偏导 并令23个偏导式子=0 联立求变量估计值的动作。
但是经过多次尝试,最后的输出结果都为23个变量=0。
因为我的联立的偏导式子太长了,matlab无法完全显示,想问问大神们现在怎么解决这个问题呢?
我的代码如下:

  1. [B1,B2,B3,B4,B5,B6,B7,B8,B9,B10,B11,B12,B13,B14,B15,B16,B17,B18,B19,B20,B21,B22,B23]=solve('lnL_1==0.1','lnL_2==0','lnL_3==0','lnL_4==0','lnL_5==0','lnL_6==0','lnL_7==0','lnL_8==0','lnL_9==0','lnL_10==0','lnL_11==0','lnL_12==0','lnL_13==0','lnL_14==0','lnL_15==0','lnL_16==0','lnL_17==0','lnL_18==0','lnL_19==0','lnL_20==0','lnL_21==0','lnL_22==0','lnL_23==0')
复制代码



其中lnL_i一系列式子都运行正常,只是式子太长了,matlab无法完全显示,分子分母均为exp的求和,未知数B位于e的指数上。

跪求各位大神帮助,辛苦,谢谢!

新手

7 麦片

财富积分


050


1

主题

4

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2019-3-21 14:29:50 | 显示全部楼层
因为我的偏导式子过长了,所以不知道这种情况下怎么使用fsolve函数,求帮忙:'(

论坛优秀回答者

权威

3528 麦片

财富积分



2

主题

3730

帖子

791

最佳答案
  • 关注者: 165
发表于 2019-3-21 15:04:30 | 显示全部楼层 |此回复为最佳答案
AnnieChinag 发表于 2019-3-21 14:29
因为我的偏导式子过长了,所以不知道这种情况下怎么使用fsolve函数,求帮忙 ...

加了 ' ',里面的都当作 变量,所以为零解。
数值方法
matlabFunction与fsolve

新手

7 麦片

财富积分


050


1

主题

4

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2019-3-22 00:05:07 | 显示全部楼层
maple1314168 发表于 2019-3-21 15:04
加了 ' ',里面的都当作 变量,所以为零解。
数值方法
matlabFunction与fsolve

您好,万分感谢您的解答,我还有一些问题咨询您,可以劳烦您解答一下吗?谢谢~
1.如果我将式子中所有''都删除运行,理论上删除后可以得到正确答案吗?
2.想问问我solve函数使用正确吗?==用得对吗?solve函数中用==和=有什么区别呢?
3.如果换用fsolve函数的话,我的式子无法完全显示,就不能修改变量为B(1),B(2)...这样怎么调用呢?

真心求帮助,谢谢您!

新手

7 麦片

财富积分


050


1

主题

4

帖子

0

最佳答案
  • 关注者: 1
 楼主| 发表于 2019-3-30 12:10:33 | 显示全部楼层
很抱歉大家,这几天有点事,现在才来回复。
我做出4L的提问是因为没看懂3L大大的意思,后来研究了半天才明白过来。现将我的更改过程列于下:
我先是把方程中的''去掉跑了一遍,但计算机跑了整整一晚上也没出结果。
后来问了认识的博士导师,我的方程已经算超越方程了,超越方程没有解析解,所以说用solve函数跑多久也跑不出来。
于是就更换为fsolve函数,但由于我方程过长没有办法人为转化为B(i)的形式,经过学习,改用3L大大所提到的matlabFunction最后解决了这个问题。
还有就是如果大家数据量过大的话,比如我的这个一万条数据二十三个变量这种,就别用自己的笔记本跑了,纯属浪费时间,最后会无法处理死机的,拿40G或者更好的台式机跑吧。

更改后的代码我就不贴了,因为我是在做论文,害怕影响到时候查重。
最后还是要谢谢大大的帮忙!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表