matlab如何给未知数及包含未知数的函数赋值


这其实是个很简单的问题,但是我在网上很少能找出这个问题的答案,所以这里帮各位扫个盲。

其实就是用matlab的eval函数,作用是将字符串转换为matlab可执行语句。

比如 首先我们定义九个未知量 syms u1 u2 u3 d1 d2 d3 h0 h1 h2;

然后我们通过一些中间计算得到Lgav_final是个超复杂的式子

 =
 
(h0*(conj(h0) + conj(h1)*conj(u2) + conj(h2)*(conj(d2) + conj(u2)^2/4)))/(6*(conj(h1) + (conj(h2)*conj(u2))/2)) + (h2*(u2^2/4 + d2)*(conj(h0) + conj(h1)*conj(u2) + conj(h2)*(conj(d2) + conj(u2)^2/4)))/(6*(conj(h1) + (conj(h2)*conj(u2))/2)) + (h1*u2*(conj(h0) + conj(h1)*conj(u2) + conj(h2)*(conj(d2) + conj(u2)^2/4)))/(6*(conj(h1) + (conj(h2)*conj(u2))/2)) + (h0*(h1 + (h2*u2)/2)*(conj(h0) + conj(h1)*conj(u1) + conj(h2)*(conj(d1) + conj(u1)^2/4)))/(6*(h1 + (h2*u1)/2)*(conj(h1) + (conj(h2)*conj(u1))/2)) + (h0*(h1 + (h2*u2)/2)*(conj(h0) + conj(h1)*conj(u3) + conj(h2)*(conj(d3) + conj(u3)^2/4)))/(6*(h1 + (h2*u3)/2)*(conj(h1) + (conj(h2)*conj(u3))/2)) + (h1*u1*(h1 + (h2*u2)/2)*(conj(h0) + conj(h1)*conj(u1) + conj(h2)*(conj(d1) + conj(u1)^2/4)))/(6*(h1 + (h2*u1)/2)*(conj(h1) + (conj(h2)*conj(u1))/2)) + (h1*u3*(h1 + (h2*u2)/2)*(conj(h0) + conj(h1)*conj(u3) + conj(h2)*(conj(d3) + conj(u3)^2/4)))/(6*(h1 + (h2*u3)/2)*(conj(h1) + (conj(h2)*conj(u3))/2)) + (h2*(h1 + (h2*u2)/2)*(u1^2/4 + d1)*(conj(h0) + conj(h1)*conj(u1) + conj(h2)*(conj(d1) + conj(u1)^2/4)))/(6*(h1 + (h2*u1)/2)*(conj(h1) + (conj(h2)*conj(u1))/2)) + (h2*(h1 + (h2*u2)/2)*(u3^2/4 + d3)*(conj(h0) + conj(h1)*conj(u3) + conj(h2)*(conj(d3) + conj(u3)^2/4)))/(6*(h1 + (h2*u3)/2)*(conj(h1) + (conj(h2)*conj(u3))/2)) 

此时,我们想求出某特殊点,即u1=-1;u2=0;u3=1; d1=-1;d2=0;d3=1; 时,这个式子关于(h0,h1,h2)的函数。

如果直接赋值 , 然后重新再打印 ,依然会是原本的式子,不会真的将u1,u2,u3,d1,d2,d3当成已知量。

u1=-1;u2=0;u3=1;  d1=-1;d2=0;d3=1; 
Lgav_final

而这个时候如果,输入

eval(Lgav_final)

就可以得到赋值前六个未知数,留存的关于(h0,h1,h2)的函数。而u1 u2 u3 d1 d2 d3等值依然可以作为未知量,依旧可以用Lgav_final的式子求六个未知量的导数,Jacobian等有用信息。

  • 16
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值