weixin_38531507
weixin_38531507
采纳率0%
2018-08-16 09:38 阅读 677

matlab函数用法的问题

40

一个函数
function dx=f(t,x)

global c
dx=zeros(2,1);
dx(1)=x(2);
dx(2)=-20*c*x(2)-199*x(1);

然后是另外一个函数
clear all;
global c
c=0.1;
x0=[1,0]; %初值
[t1,x2]=ode23(@f,[0,4],x0);

第一个函数就是建立一个方程给ode23用
问题:dx为什么要再赋值呢,并且x(1),x(2)是什么意思

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

3条回答 默认 最新

  • ys20111016 ys20111016 2018-08-16 12:23

    function [输出变量] = 函数名称(输入变量) dx(标号),括号内不属于赋值吧。x(1)应该是书写错误吧?

    点赞 评论 复制链接分享
  • qq_15153797 qq_15153797 2018-09-07 08:05

    dx是函数f(t,x)的运算结果,x是一行两列的矩阵,所以dx也是一行两列的矩阵。x(1)表示x第一行第一列的元素,x(2)表示x的第一行第二列的元素。

    点赞 评论 复制链接分享
  • zhuye1530 zhuye1530 2018-10-10 14:50

    MATLAB求解微分方程时是这么书写的,第一个函数存为f.m,是微分方程的函数文件;第二个函数是一段脚本,可以存为.m文件,也可以在命令行直接执行。
    第一个函数里面,dx为输出,必须是一个列向量,dx(1)表示x的一阶导,dx(2)表示二阶导,等号右边的代码中,x(1)代表x本身,x(2)代表x的一阶导,微分方程为x'' = -20*c*x' - 199*x

    第二个函数,[t1,x2]=ode23(@f,[0,4],x0);其中[0,4]表示t1的数值计算范围,也可以是一些固定点,x0是初始值,[1,0]里面的1指x在t=0时,值为1;x的一阶导在t=0时,值为0
    最后可以用plot(t1,x2(:,1))显示数值计算结果

    点赞 评论 复制链接分享

相关推荐