找回密码
 注册
Simdroid-非首页
查看: 180|回复: 6

一个小问题,关于jacobian矩阵

[复制链接]
发表于 2011-2-23 16:27:35 | 显示全部楼层 |阅读模式 来自 陕西西安
今天遇到的一个问题,代码具体如下:
  1. clear;clc;
  2. syms x y z
  3. a=sin(x)+y+z^2*exp(x)-4;
  4. b=x+y*z;
  5. c=x*y*z;
  6. F=[a;b;c];
  7. x0=[1,1,1.1];

  8. Fx = subs(F,findsym(F),x0);
  9. var = findsym(F);
  10. dF = Jacobian(F,var);
复制代码

然后得的结果dF在workspace中看到是<3X1 sym>,显然,这个结果不正确。dF应该为<3X3 sym>,请大家帮忙看看。
ps:使用的matlab版本为,matlab 7.9.0(R2009b)
发表于 2011-2-23 19:50:35 | 显示全部楼层 来自 英国
Simdroid开发平台
本帖最后由 nwcwww 于 2011-2-23 19:55 编辑

你实际需要的var类型应该是sym,大小1*3或者3*1
但是findsym得到的结果var='x,y,z',类型是char,大小1*5
所以你直接jacobian(F,var)的时候自然会和预想的结果有偏差,
程序实际的效果只是就x求了偏导数,因此workspace里才会是3*1而非3*3。

这个程序改动一下命令就行,不要用findsym,用symvar代替:
  1. clear;clc;
  2. syms x y z
  3. a=sin(x)+y+z^2*exp(x)-4;
  4. b=x+y*z;
  5. c=x*y*z;
  6. F=[a;b;c];
  7. x0=[1,1,1.1];

  8. Fx = subs(F,findsym(F),x0);
  9. var = symvar(F);
  10. dF = jacobian(F,var);
复制代码

评分

1

查看全部评分

回复 不支持

使用道具 举报

 楼主| 发表于 2011-2-23 20:59:34 | 显示全部楼层 来自 陕西西安
2# nwcwww
恩,谢谢,O(∩_∩)O!我在R2009b上验证了一下,按照你的做法,生成的var确实是sym类型的变量,也就能够正常的求解。
但是我还有一个疑问就是,我下午用R2010a也做了一下,用var=findsym(F),最后生成的var却是sym类型的,能够得到正确解。而且,在R2010a中,用var=symvar(F)会出现如下的错误提示:
??? Error using ==> sym.eq at 39
Error using ==> maplemex
Error, invalid input: MTM:-eq uses a 2nd argument, B,
which is missing
Error in ==> symvar at 27
[b,e] = findrun(s==' ');
Error in ==> testsmart at 10
var = symvar(F);
回复 不支持

使用道具 举报

 楼主| 发表于 2011-2-23 21:00:38 | 显示全部楼层 来自 陕西西安
3# mhkmars
顺便说一下,我在R2010a中使用的符号计算引擎为maple
回复 不支持

使用道具 举报

发表于 2011-2-24 08:37:05 | 显示全部楼层 来自 河北廊坊
不知道是不是你安装的有问题,我在2010b中运行没有问题
回复 不支持

使用道具 举报

 楼主| 发表于 2011-2-24 10:30:42 | 显示全部楼层 来自 陕西西安
5# qibbxxt
行,我试试重装一下,谢谢咯
回复 不支持

使用道具 举报

 楼主| 发表于 2011-2-24 13:18:08 | 显示全部楼层 来自 陕西西安
5# qibbxxt
不知道版主使用的是maple还是mupad,我试着安装R2010b后,然后将符号引擎设置为maple14,仍然显示的为上面的错误。。。
我在matlab钟help symvar后发现,说symvar是从一个字符串里去寻找符号变量,是不是应为F为一个符号变量表示的矩阵,所以不行呢?而且在R2010b钟symvar返回的类型是cell,并不是像R2009b中一样返回的为sym类型的。
假如真是这样的话,不是matlab高版本对较低版本的代码兼容就变得差了么?还是说我哪里出错了?
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-5 01:16 , Processed in 0.041004 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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