天天看点

matlab-梯形积分

1、内容简介

2、内容说明

clear
 clc
 close all
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 f = @(x) 2*x.^2-1; % 定义函数
 % ==============================
 xstart = 0;
 xstop = 2;
 num_steps = 20;
 xpoints = linspace(xstart,xstop,num_steps);
 ypoints = f(xpoints); % 调用之前的函数
 integral = trap_integrate(ypoints,xstart,xstop,num_steps)
 % 理论积分数值 16/3-2
% ==============================
 xstart = 0;
 xstop = 2;
 num_steps = 50;
 xpoints = linspace(xstart,xstop,num_steps);
 ypoints = f(xpoints);
 integral = trap_integrate(ypoints,xstart,xstop,num_steps)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 f = @(x) tan(x);
 % ==============================
 xstart = 0;
 xstop = pi/3;
 num_steps = 100;
 xpoints = linspace(xstart,xstop,num_steps);
 ypoints = f(xpoints);
 integral = trap_integrate(ypoints,xstart,xstop,num_steps)
% ==============================
 xstart = 0;
 xstop = pi/3;
 num_steps = 200;
 xpoints = linspace(xstart,xstop,num_steps);
 ypoints = f(xpoints);
 integral = trap_integrate(ypoints,xstart,xstop,num_steps)
 %% 
 C = 33.3e-6;
 R = 200;
 sys = tf([1 0],[R 1/C]); %传递函数
 step(sys)
 xstart=0;
 xstop=10;
 num_steps=1000;
 t = linspace(xstart,xstop,num_steps); % 时间 
 U = @(t)200*cos(300*t);
 in = U(t);
 i = lsim(sys,in,t);% 仿真
 plot(t,i)
 integral = trap_integrate(i.^2,xstart,xstop,num_steps);
 rms = sqrt(integral/(xstop-xstart))      
function integral = trap_integrate(ypoints,xstart,xstop,num_steps)
data = linspace(xstart,xstop,num_steps); %生成x数据
integral = 0;
if length(data)~=length(ypoints)
    error('输入的x,y数据长度不相等,请检查输入') % 判断输入的数据是不是合理
end
step =data(2)- data(1); % x数据间隔
for i = 1:num_steps-1
    integral = integral+(ypoints(i)+ypoints(i+1))*step/2; % 梯形积分累加
end      

3、仿真分析

4、参考论文

继续阅读