如何用Matlab求以下积分

来源:百度知道 编辑:UC知道 时间:2024/06/28 15:30:56
被积函数如下

y=(20*a1*(E1-b1*log10(x)-R1*x-m1*exp(n1*x))-20*a2*(E2-b2*log10(x)-R2*x-m1*exp(n2*x)))^2

x的范围可以自己给定,其余E、b、R、m、n均为常数。

我的程序如下:

model.m

function y=model(x)
global alpha1 alpha2 area m1 n1 m2 n2 E01 E02 b1 b2 R1 R2
y=(20*alpha1*(E01-b1*log10(i)-R1*i-m1*exp(n1*i))-20*alpha2*(E02-b2*log10(i)-R2*i-m2*exp(n2*i)))^2

y=eval(int('model',u,v));

其中(u,v)为积分区间

求数值积分可用quad函数。

function test()
clear all;clc;
global alpha1 alpha2 m1 n1 m2 n2 E01 E02 b1 b2 R1 R2
alpha1=1;
alpha2=1;
m1=.2;
n1=.3;
m2=.4;
n2=.5;
E01=.6;
E02=.7;
b1=.8;
b2=.9;
R1=1;
R2=1;
u=0;
v=.01;

Q = quad(@model,u,v)
end

function y=model(i)
global alpha1 alpha2 m1 n1 m2 n2 E01 E02 b1 b2 R1 R2
y=(20*alpha1*(E01-b1*log10(i)-R1*i-m1*exp(n1*i))-20*alpha2*(E02-b2*log10(i)-R2*i-m2*exp(n2*i))).^2;

end

老大,额是小学生

用符号变量可以做:
syms alpha1 alpha2 area m1 n1 m2 n2 E01 E02 b1 b2 R1 R2

y=(20*alpha1*(E01-b1*log10(i)-R1*i-m1*exp(n1*i))-20*alpha2*(E02-b2*log10(i)-R2*i-m2*exp(n2*i)))^2

int(y,x)