大黄菜头 2021-10-20 00:14 采纳率: 20%
浏览 41

用sym符号变量的方法推导得到二阶微分方程组,形式较为复杂,想直接用该方程式进行数值求解(无解析解)

我利用matlab的sym符号变量对某个物体运动二阶微分方程进行推导,遇到了一些问题。将问题整理简化,结果如下:
问题1、定义了变量 a b(t) c(t) d,列写了关于上述四个变量的等式,用solve求解变量。在此过程中发现,当变量取为b或者c的时候,无法输出结果,而取为a和d的时候,solve则可以求解。结果如图1所示。由于我的方程是微分方程,在最后的结果中需要将某个关于t的变量进行表示,也就是说我需要将b(t)和c(t)用其他的字母来表示。因此,我不知道有什么办法可以做到将方程进行这样的移项变换。有一个我自个发现的不同的点是,当变量定义为 a和a(t)的时候,软件保存的数据是不一样的,前者是sym,后者是symfun,以至于在使用subs替换函数的时候,无法将带有t的变量用不带有t的变量进行替换。这个思路在查看诸多博客论坛之后,做种还是没有能够解决。

img


图1、代码及运行结果图

问题2、由于我使用了符号变量的方法对运动行为进行推导,如果上述的问题解决了之后,我想要将该符号变量推导得到的的方程式直接进行求解,以避免重新手动输入方程。我有什么办法可以做到??按照以往的做法,我想要利用matlab内置函数ode45来求解微分方程的数值解(因为解析解求解不了),我需要得到函数的dy=f(x)的方程或者方程组,如图2.1所示。现在的问题是,我推导得到的矩阵很大,(如图2.2所示),我很难用完整准确的将这些方程组重新手动输入并用于定义图2.1中的函数f。最好的办法应该是直接用sym变量得到的这个方程式等式直接用用于微分方程的数值求解。请问有什么方法??

img


图2.1、ode45常微分方程求解

img


图2.2、实际公式(低自由度版本,高自由度的放不下)

以上是两个问题,查看诸多的博客论坛都没有得到解决的办法。在此请问。感谢。

  • 写回答

1条回答 默认 最新

  • joel_1993 2021-10-20 00:54
    关注

    第一个问题建议用isolate函数,很容易实现,第二个问题,既然第一个都实现了,第二个就不是问题,自己subs就行

    评论

报告相同问题?

问题事件

  • 创建了问题 10月20日

悬赏问题

  • ¥15 随身WiFi网络灯亮但是没有网络,如何解决?
  • ¥15 gdf格式的脑电数据如何处理matlab
  • ¥20 重新写的代码替换了之后运行hbuliderx就这样了
  • ¥100 监控抖音用户作品更新可以微信公众号提醒
  • ¥15 UE5 如何可以不渲染HDRIBackdrop背景
  • ¥70 2048小游戏毕设项目
  • ¥20 mysql架构,按照姓名分表
  • ¥15 MATLAB实现区间[a,b]上的Gauss-Legendre积分
  • ¥15 delphi webbrowser组件网页下拉菜单自动选择问题
  • ¥15 linux驱动,linux应用,多线程