查看: 496|回复: 2|关注: 0

[已解决] 在自定义的一个function中对另一个函数做积分运算

[复制链接]

新手

16 麦片

财富积分


050


3

主题

8

帖子

0

最佳答案
各位大佬,小弟自定义了一个function遇到问题:
  1. function [MeanFree]=calMeanFree(CD,Kc,L,q, C_out, C_in)
  2.     k=-q/L*log(C_out/C_in);
  3.     Drug=@(d)C_in*exp(k*d);
  4.     F=(-(Kc*(CD-Drug)+1)+((Kc*(CD-Drug)+1)^2+4*Kc*Drug)^(1/2))/(2*Kc*Drug);
  5.     MeanFree=integral(F,0,L)/L;
  6. end
复制代码

其中只有d一个自变量,想求得F对d在(0到L)的定积分。当我随便赋值运行函数的时候,系统报错:

                               
登录/注册后可看大图

请问这是什么情况,我需要这个负号啊??
另外,我看MATLAB的官网上integral()调用的函数都用了矩阵的运算符,请问这是必须的吗?我是否需要将代码中的运算符都换成矩阵运算符?

谢谢各位大佬
回复主题 已获打赏: 0 积分

举报

新手

16 麦片

财富积分


050


3

主题

8

帖子

0

最佳答案
 楼主| 发表于 2020-8-21 19:56:56 | 显示全部楼层
图片好像显示不出来,报错的内容是:
'function_handle' 类型的操作数不支持运算符 '-'。
出错 calMeanFree (line 4)
    DrugFree=(-(Kc*(CD-Drug)+1)+((Kc*(CD-Drug)+1)^2+4*Kc*Drug)^(1/2))/(2*Kc);
回复此楼 已获打赏: 0 积分

举报

MATLAB 基础讨论
版块优秀回答者

入门

247 麦片

财富积分


50500


1

主题

119

帖子

26

最佳答案
  • 关注者: 1
发表于 2020-8-23 10:05:30 | 显示全部楼层 |此回复为最佳答案
Drug 是一个有输入输出的匿名函数,对它的调用必须是有输入参数的,不能对它通过加减乘除构造新的函数句柄
Drug=@(d)C_in*exp(k*d);
F=@(x) (-(Kc*(CD-Drug(x))+1)+((Kc*(CD-Drug(x))+1)^2+4*Kc*Drug(x))^(1/2))/(2*Kc*Drug(x));

一般还是把匿名函数的 运算符改成 .*  .^  ./  吧
回复此楼 已获打赏: 2 积分

举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

快速回复 返回顶部 返回列表