首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Matlab中求解以上限集为正弦函数的积分?

如何在Matlab中求解以上限集为正弦函数的积分?
EN

Stack Overflow用户
提问于 2015-07-26 07:35:54
回答 1查看 354关注 0票数 0

在matlab中计算一个简单的积分时,我在执行下面的代码时出错了。代码如下所示。

代码语言:javascript
复制
%Parameter Innitizlation

epsilon0=8.85*10^-12;
d_mos=6*10^-9;
epsilon_mos=5*epsilon0;
d_g=30*10^-9;
epsilon_g=19*epsilon0;
vt=-2;
e=1.6*10^-19;
n=[];
i=1;
t2=[];
u=60; % cm^2/v*S
h=1.05*10^-34;  % ev*s


%Capacitor Calaculation
c_g=(epsilon_g/d_g);
c_mos=(epsilon_mos/d_mos);
c_t=1/((1/c_g)+(1/c_mos));


%Input Voltage 
t = 0:0.2:10;
vg = 5*sin(t);

%Surface Voltage
fun=1-(c_t/c_g);
vs = integral(fun,0,vg);

figure 
plot(t,vs)
title('vs vs time')

误差

对于'double‘类型的输入参数,我所得到的错误是“?未定义的函数或方法’积分‘。

==>麻省理工学院在29 vs =积分处的错误(有趣,0,vg);

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-26 12:57:50

再读一遍你的标题,听起来好像你想把常量从0积分到不同的边界。所以有两件事是错的:

  1. 您的函数不是一个函数,而是一个双值函数,要修复此更改,请将fun作为一个匿名函数,如下所示 fun=@(t) (1-(c/c))*1(T); ones(size(t))就是这样做的,所以每个输入都有一个输出。
  2. 您需要有一个积分的上、下界,才能将积分固定在arrayfun中,如下所示: vs = arrayfun(@(xu)积分(fun,0,xu),vg); 有关arrayfun的更多信息。

这里有完整的代码

代码语言:javascript
复制
epsilon0=8.85*10^-12;
d_mos=6*10^-9;
epsilon_mos=5*epsilon0;
d_g=30*10^-9;
epsilon_g=19*epsilon0;
vt=-2;
e=1.6*10^-19;
n=[];
i=1;
t2=[];
u=60; % cm^2/v*S
h=1.05*10^-34;  % ev*s


%Capacitor Calaculation
c_g=(epsilon_g/d_g);
c_mos=(epsilon_mos/d_mos);
c_t=1/((1/c_g)+(1/c_mos));


%Input Voltage 
t = 0:0.2:10;
vg = 5*sin(t);

%Surface Voltage
fun=@(t) (1-(c_t/c_g))*ones(size(t));
vs = arrayfun(@(xu) integral(fun,0,xu), vg);

figure 
plot(t,vs)
title('vs vs time')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31634729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档