matlab函数用法的问题 40C

一个函数
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个回答

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

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

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))显示数值计算结果

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问