如何用matlab求积分
于无法求得exp(x^2)的原函数,我们只能用数值算法来求解,可以用复化梯形公式、Romberg公式、Gauss公式等,有好多种。我用Matlab编了一个用Gauss公式求解积分的函数。
function S=GaussIntegrate()
%运用Gauss求积公式计算数值积分
%f为被积函数,Rho为权函数,二者均为符号函数
x=sym('x');
f=exp(x^2);
Rho=1;
%a,b分别为求积区间的左界和右界
a=1;
b=2;
%n表示求积结点的个数,是一正整数
n=8;
%本程序利用线性变换将区间[a,b]变换到[-1.1],
%同时令g=f*Rho为被积函数,然后利用
%古典的Gauss求积公式进行计算,此时直交多项式即为Legendre多项式
if n=0||n~=floor(n)
error('错误,n必须是一个非负整数!');
end;
if a>b
error('错误,区间的左界a一定不大于右界b!');
end;
%计算n次Legendre多项式
syms x;
P=1/(2^n*factorial(n))*diff((x^2-1)^n,n);
w=roots(sym2poly(P));
%计算数值积分
A=zeros(1,n);
S=0;
for k=1:n
A(k)=2/((1-w(k)^2)*(subs(diff(P),w(k))^2));
t=a+(b-a)/2*(w(k)+1);
g=(b-a)/2*subs(f*Rho,t);
S=S+A(k)*g;
end;
--------------------------------
我取了8个结点,计算精度就已经达到了小数点后8位,效率还是很高的。
注意:由于Matlab调用Maple的符号计算工具箱,第一次运行时会加载一小会,耐心等待。
以后再运行速度就很快了。
int
Integrate symbolic expression
Syntax
int(expr)
int(expr, v)
int(expr, a, b)
int(expr, v, a, b)
算了,给你举两个例子吧
x^2 积分:
>> syms x;
>> int(x^2,x)
ans =
x^3/3
x^2 从 1 积分到 5:
>> int(x^2,x,1,5)
ans =
124/3
注意前面一句话,syms表示定义变量
自己遇到问题多看手册或者自己谷歌,百度知道上面专业人士不多的
1、使用int函数,函数由integrate缩写而来,int 函数表达式,变量,积分上限,积分下限。
2、比如求一个Fx = a*x^2,在区间(m,n)对x进行积分,
首先要将 m,x,a,b 这四个变量定义为符号变量
syms m x a b;
Fx = a*x^2;
int(Fx,x,m,n)
3、通过上面这个方法,就能够求得任意一个函数在给定区间的积分,如果想看到书写的格式,可以用pretty命令,这样显示更接近平常的表示方法。
用函数int.
符号积分命令int
int(fun):求函数fun的不定积分;
int(fun,var):求函数fun关于变量var的不定积分;
int(fun, var, a,b,):求函数fun的在[a,b]间的定积分或广义积分;
示例
>> clear;syms x y z;
>> int(sin(x*y+z),z)
ans =
-cos(x*y+z)
帮助
在MATLAB命令窗口中输入doc int查看int的帮助信息。
举个例子:函数是w(x,y),y上下限是a到b,x上下线限是0到sqrt(1600-y^2),这样的二重积分
你可以用一个函数quad2d()
y1=quad2d(@(x,y)w(x,y),a,b,0,@(y)sqrt(1600-y^2))
也可以用两次积分:
y2 =quadl(@(x) arrayfun(@(x) quadl(@(y)w(x,y),a,b),x),0,sqrt(1600-y^2))
或者
y3 = dblquad(@(x,y)w(x,y).*(y>=a & y<=b),0,sqrt(1600-b^2),a,b)
有两种方式:
方式一:用符号函数int,求符号表达式的积分(精确的解析解)
方式二:用quad函数,求函数的数值积分(近似的数值解)
matlab用for循环求n阶乘怎么写?
matlab求1-10的阶乘的函数源码如下:function p = factorial()p=1;for a=1:10%设置要求的阶乘 for i=1:a%循环遍历从1到a p=p*i;%遍历相乘 end;\/\/函数结束 p%输出结果 p=1;%p还原其初始值 end end matlab特点:1、高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来...
怎样用matlab求这个函数的和?
lambda = 1;k0 = 1;Pi = pi;fs = 1;ps = 1;ls = 1;n = 300;ti = 243:n;d = lambda\/fs\/k0\/(Pi-ps)\/ls*(ti(1)-ti).*sqrt(ti);sd = sum(d);<<<>> sdsd = -1.2943e+004
如何用matlab求下式函数
syms a b x y1=3\/x^2 y2=int(y1,-a,x);y3=exp(1\/x^2)exp(y2);y4=int(y3,-a,b);m=1\/(1-y4)
用matlab表示分段函数取值求和
关于关键字end:建议无论何时都在函数末尾加上end。2.语法二:匿名函数,f=@(参数列表)(函数表达式)例如:f=@(x)(x^2)注意:应用场景:匿名函数通常在脚本文件中或命令行中被创建,由于形式简单便于构建绘图中的函数,或者复合函数,或者微积分的计算,然后是一些基础函数使用:3.创建全零数组:...
用matlab如何求出一个数组中最接近某个数的两个数的下标??
A= [189 188 187 184 178 169 155 137 118 99 80 64 51 39 30 10 12 15 20 30 44 63 86 112 136 157 171 180 185 189 190 190 191];B=abs(A-82);[x,index]=sort(B);A1=[A...
用matlab求函数表达式怎样求
x=[]'y=[]'fun=inline('exp(-(x-a(1))^2\/(2*(a(2))^2))','a','x')x0=[0 0][a,resnorm,residual,exitflag]=lsqcurvefit(fun,x0,x,y)a(1)即μ,a(2)即σ
用matlab怎么求解含有三角函数的非线性方程
求解含有三角函数的非线性方程的方法:1、对于简单的含有三角函数的非线性方程,可以用solve()函数求解。solve('表达式')2、较复杂的含有三角函数的非线性方程,可以用fsolve()函数求解。或用其他数值分析方法(如二分法,牛顿法等)求解。func=@(x) 表达式 %自定义函数 fsolve(func,x0) %x0...
怎么用matlab批量求解方程,求高手,本人不会用MATLAB,求给详细的编程
参考代码:>> l=solve('l^2*log(l\/5)-tP','l');>> t=100;P=0.1:0.1:4;>> l=subs(l,t*P);>> [P;l]'ans = 0.1000 6.3883 0.2000 7.2870 0.3000 7.9948 0.4000 8.5938 0.5000 9.1205 0.6000 9.5947 0.7000 10.0286...
如何用matlab 求面积?
interv_x = zeros( 1, N - 1 );mid_y = zeros( 1, N - 1);for i = 2 : length(x)mid_y(i-1) = ( y(i) + y(i-1) ) \/ 2;interv_x(i - 1) = x(i) - x(i-1);end 面积 area = interv_x * mid_y';对于1分钟,2分钟的数据,直接调用这段代码都可以计算。
用Matlab怎么求下面的方程?
>> syms C0 m h Ey x v K;Expression=(C0+m\/(h*sqrt(pi*Ey*x*v)))*exp(-K*x\/v);X=solve(Expression,'x')X = m^2\/(C0^2*Ey*pi*h^2*v)参考资料:hyyly520 专门解答 MATLAB VB 基础问题
策送明目: 程序: fun=sin(0.5*pi*x./y);%% a=int(int(fun,y,sqrt(x),x),x,1,2); b=simple(a) %化简 I=vpa(b,4) %得到4位近似解,也可以任意N位解 结果: I = 0.2719
花溪区18231619545: 用MATLAB算积分 - ?
策送明目: 使用MATLAB软件,可以用int()计算不定积分或定积分.计算方法如下:syms x int((log(x))^2/x) %这里 ln(x) 用 log(x) 来表示 计算结果 log(x)^3/3 %ln³(x)/3
花溪区18231619545: 在matlab中怎样求带有参数的定积分 - ?
策送明目:[答案] 设被积函数为f=ax+b,积分区间为(c,d) MATLAB代码如下: syms a b c d x; f=a*x+b; answer=int(f,x,c,d).
花溪区18231619545: 用matlab定积分怎么求 - ?
策送明目: int(s,v,a,b):以v为自变量,对被积函数s在区间[a,b]上的定积分.a和b可以是两个具体的数,也可以是一个符号表达式,还可以是无穷(inf).例:syms x %定义符号变量 f=int(x^3,x,1,2) % 求x^3在区间[1,2]上的定积分
花溪区18231619545: 怎样用matlab编程求解积分 - ?
策送明目: int函数 例如s = sin(x),求积分int('s'),即可
花溪区18231619545: 怎么用MATLAB求积分 - ?
策送明目: 基本不管多复杂的式子,MATLAB都能解决,只要你输入正确,解出来只是时间问题,我给你一个解题的参考格式.设f为你的被积函数,只能自己输,别输错;x为积分变量,a,b分别为积分下限和上限.MATLAB中计算函数f的不定积分的格式如下: syms x;int(f,x) 计算定积分的格式如下: syms a b x;int(f,x,a,b).
花溪区18231619545: matlab中怎么求函数的积分 - ?
策送明目: 用 quad 命令: 具体用法如下:1 2y = @(x)(sin(x)); quad(y,0,pi)
花溪区18231619545: matlab 如何求积分?
策送明目: quad('函数名',a,b)我这里的a和b指的是积分下限和上限
花溪区18231619545: 怎么用matlab算广义积分? - ?
策送明目: 用matlab算广义积分方法:%符号积分 int(f,v) int(f,v,a,b)%数值积分 trapz(x,y)%梯形法沿列方向求函数Y关于自变量X的积分 cumtrapz(x,y)%梯形法沿列方向求函数Y关于自变量X的累计积分 quad(fun,a,b,tol)%采用递推自适应Simpson法计算积分 quad1(fun,a,b,tol)%采用递推自适应Lobatto法求数值积分 dbquad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol)%二重(闭型)数值积分指令 triplequad(fun,xmin,xmax,ymin,ymax,zmin,zmax,tol)%三重(闭型)数值积分指令 .