查看: 405|回复: 3|关注: 0

[已答复] matlab中如何用diff函数或者其他方法求导中间变量

[复制链接]

新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
发表于 2019-1-11 22:33:42 | 显示全部楼层 |阅读模式
一个问题需要大致如下:
x1=f1(t);
x2=f2(t);
y=f3(x1,x2);
需要y对x1求偏导数后再对t求导,简化的程序如下:

  1. [color=#006400]syms t[/color][color=#006400]x1=2*t;[/color]
  2. [color=#006400]x2=3*t;[/color]
  3. [color=#006400]y=5*x1^2;[/color]
  4. [color=#006400]z=diff(y,x1);[/color]
  5. [color=#006400]a=diff(z,t);[/color]
复制代码

错误信息:
错误使用 sym/diff (line 67)
The second argument must be a variable or a nonnegative integer specifying the number of differentiations.

出错 Untitled1 (line 5)
z=diff(y,x1);


因为在第2行和第3行的赋值中就已经把x1、x2赋值成t了,所以y=20*t^2,y中不包含x1和x2,无法求偏导。
请问如何解决这个问题

新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
 楼主| 发表于 2019-1-11 22:37:22 | 显示全部楼层
前后删除了吧,不知道从哪发出来的

syms t
x1=2*t;
x2=3*t;
y=5*x1^2;
z=diff(y,x1);
a=diff(z,t);

论坛优秀回答者

权威

9058 麦片

财富积分



9

主题

1万

帖子

1986

最佳答案
  • 关注者: 489
发表于 2019-1-12 10:11:31 | 显示全部楼层
刘健_muYiH 发表于 2019-1-11 22:37
前后和删除了吧,不知道从哪发出来的

syms t

改变一下顺序
  1. syms x1 x2 t
  2. y=5*x1^2
  3. z=diff(y,x1)
  4. x1=2*t;
  5. x2=3*t;
  6. a=diff(subs(z),t)
复制代码

新手

5 麦片

财富积分


050


1

主题

3

帖子

0

最佳答案
 楼主| 发表于 2019-1-12 14:50:10 | 显示全部楼层

解决了!谢谢大神
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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