使用函数int
你的理解是错误的:
a*(dx/dt)在t1到t2间求积分,求出结果为a(x(t2)-x(t1))明显是错误的
结果应该为a(t2-t1),英文x是积分变量,被t1替换掉了,不会变成复合函数
程序
syms a x t1 t2
int(a*diff(x),x,t1,t2)
运行结果为:a*(t2-t1)
clear;
syms t t1 t2 a;
x=a;
int(x,t,t1,t2)
结果应该是:-a*(t1 - t2)
你是自己把自己绕糊涂了,可以换成这样的:
f(x)=a*x^0
y=∫f(x)(dy/dx) (其中x积分上下限是x2,x1)
这样就好写程序了:
clear;
syms x f x1 x2 a;
f=a*x^0;
y=int(f,x,x1,x2)
结果是:
y = -a*(x1 - x2)
1、你要求解的东西答案很明确,为什么要用matlab来求解呢?
2、很多问题用软件求解的时候,都需要把问题进行适当的变换,成为软件能够接受的形式,而你的这个问题无法用matlab描述。
3、主要原因在于,matlab的符号数学工具箱不支持定义一般形式的函数,比如x(t)表示x是t的函数,而是某个符号如果是另一个符号的函数,则必需有具体的函数表达式。所以你的问题虽然看起来很简单,但的确超出了matlab的能力。
syms a x t1 t2
f=a;%函数
int(f,x,t1,t2);%函数对x求积分
这个可以出来,不用那个diff了,直接分别写,思路清晰
望采纳,谢谢
不太懂
你是要做个通用函数解该类型的积分(就是每次都给定x的函数式和a的值)
还是要用matlab直接求解这样积分公式(不需要a的具体值)