【问题标题】:How to solve integral in Matlab having an upper limit set as the sine function?如何在Matlab中求解具有上限设置为正弦函数的积分?
【发布时间】:2015-10-16 13:18:46
【问题描述】:

我在执行以下代码以在 matlab 中计算一个简单积分时出错。代码如下。

%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' 类型的输入参数的未定义函数或方法'integral'。

==> MIT 在 29 时出错 vs = 积分(fun,0,vg);""

【问题讨论】:

  • 您的变量fun 是双向量,而不是函数句柄。积分的第一个输入必须是函数句柄。
  • @Daniel..请问有什么可能的解决方案。
  • 我不知道正确的解决方案,因为我不知道您要实现什么功能。
  • 你是否试图将一个从 0 到 vg 的恒定乐趣整合到一个范围内?或者您是否尝试将正弦波 (5*sin t) 从 0 集成到恒定的乐趣?
  • @user1543042....我正在尝试将常量函数从 0 集成到 vg,其中 vg 是 tike 本身的正弦函数。

标签: matlab math integration calculus


【解决方案1】:

再次阅读您的标题,听起来您想将常数从 0 整合到不同的界限。所以有两件事错了:

  1. 你的函数不仅仅是一个双精度函数,要修复这个变化,让fun像这样一个匿名函数

    fun=@(t) (1-(c_t/c_g))*ones(size(t));
    

    ones(size(t)) 只是让每个输入都有一个输出。

  2. 您需要有一个积分的上限和下限,以将积分固定在arrayfun 中,如下所示:

    vs = arrayfun(@(xu) integral(fun,0,xu), vg);
    

    有关arrayfun的更多信息。

这里有完整的代码

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')

【讨论】:

  • @user1543043 我按照您的说明执行了代码,但仍然收到错误“???未定义的函数或方法'integral'用于'function_handle'类型的输入参数。==>中的错误@ (xu)integral(fun,0,xu) 谢谢你的帮助。你能帮我纠正这个错误吗?
  • 我按照您的说明执行了代码,但仍然收到错误“???未定义的函数或方法'integral'对于'function_handle'类型的输入参数。==>中的错误@(xu )integral(fun,0,xu) 谢谢你的帮助。你能帮我纠正这个错误吗?
  • 您使用的是什么版本的 Matlab,因为它可以在我的机器上运行。
  • 我的matlab版本是7.12.0 (R2011a)
  • 那是你的问题integral 是在 R2012a 中引入的(见页面底部mathworks.com/help/matlab/ref/integral.html)。
猜你喜欢
  • 2011-07-03
  • 1970-01-01
  • 2016-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-31
  • 2014-02-27
  • 2022-10-07
相关资源
最近更新 更多