[已解决] 变上限积分函数求解

[复制链接]
651191666 发表于 2021-4-29 17:26:45
本帖最后由 651191666 于 2021-4-29 17:54 编辑

类似这样的变上限积分如何实现,求助老师们




屏幕截图 2021-04-29 174903.png

最佳答案


WarnerChang 发表于 7 天前
651191666 发表于 2021-4-29 19:50
老师您好,这个只能计算某一个数值的,我想问的是积分上限是一个数组,是变化的,比如x在【0:9】,步长 ...

看明白了就会了:
syms x
f=x*exp(x);
R=int(f,[1 x]);
Rf=matlabFunction(R);
Rf(2);% 计算x=2时的值
RfT=vpa(int(f,[1 2]))% 测试计算的值是否准确

Rv=vectorize(R);
Rfv=eval(['@(x)',Rv]);
RR=Rfv([1:10])% 计算x=1:10时的值
RR(2)

Rfvv=vectorize(Rf);
Rfvvf=eval(Rfvv);
RRv=Rfvvf([1:10])% 计算x=1:10时的值
RRv(2)

7 条回复


651191666 发表于 2021-4-29 17:28:05



TouAkira 发表于 2021-4-29 18:45:37
这跟变不变上限有啥关系,简单待积分式能求出原函数,直接把定积分变成原函数在区间两端之差,就行了

WarnerChang 发表于 2021-4-29 18:51:06
syms x
f=x*exp(x);
R=int(f,[1 x]);
Rf=matlabFunction(R)
Rf(2)% 计算x=2时的值

RfT=vpa(int(f,[1 2]))% 测试计算的值是否准确

651191666 发表于 2021-4-29 19:50:34
WarnerChang 发表于 2021-4-29 18:51
syms x
f=x*exp(x);
R=int(f,[1 x]);

老师您好,这个只能计算某一个数值的,我想问的是积分上限是一个数组,是变化的,比如x在【0:9】,步长为1

651191666 发表于 2021-4-29 19:56:34
TouAkira 发表于 2021-4-29 18:45
这跟变不变上限有啥关系,简单待积分式能求出原函数,直接把定积分变成原函数在区间两端之差,就行了 ...

因为被积函数函数很复杂,机器算出来特别长,无法整理。只能通过向量化函数出来的数据我才能用。

WarnerChang 发表于 2021-4-29 20:31:38
651191666 发表于 2021-4-29 19:50
老师您好,这个只能计算某一个数值的,我想问的是积分上限是一个数组,是变化的,比如x在【0:9】,步长 ...

最简单的你自己给写个for循环不就可以了吗?
或者使用vectorize函数向量化一下

WarnerChang 发表于 7 天前
651191666 发表于 2021-4-29 19:50
老师您好,这个只能计算某一个数值的,我想问的是积分上限是一个数组,是变化的,比如x在【0:9】,步长 ...

看明白了就会了:
syms x
f=x*exp(x);
R=int(f,[1 x]);
Rf=matlabFunction(R);
Rf(2);% 计算x=2时的值
RfT=vpa(int(f,[1 2]))% 测试计算的值是否准确

Rv=vectorize(R);
Rfv=eval(['@(x)',Rv]);
RR=Rfv([1:10])% 计算x=1:10时的值
RR(2)

Rfvv=vectorize(Rf);
Rfvvf=eval(Rfvv);
RRv=Rfvvf([1:10])% 计算x=1:10时的值
RRv(2)
回复此楼
您需要登录后才可以回帖 登录 | 注册

本版积分规则

热门教程
站长推荐
快速回复 返回顶部 返回列表