
如果积分区间太长,他的步长就会变短。如果希望保持精度,还是自己编底层代码吧,自己划分区间。
>> x=[0000001:0001:1000];
>> y = x^3/(exp(x) - 1);
>> sum(0001y)
ans =
64939
这不是辛普森法,而是矩形法。划分够精细,就可以够精确。
Matlab计算定积分的具体步骤如下:
1、以f(x)=e^2x+sin(x+π/3) ,积分下限:a=0,积分上限:b=π/4 为例。首先,建立被积函数M文件;点击New,选择Function;
2、在编辑器中输入指令:function f=f(x);f=exp(2x)sin(x+pi/3);(注意,用 )
3、保存函数文件到自己的工作路径,比如G:\matlab\work。
输入指令:cd G:\matlab\work,是该路径成为当前路径。
4、matlab中计算积分的两种指令:
1F=quad('fname',a,b,tol,trace) Simpson数值积分法
2F=quad8('fname',a,b,tol,trace) Newton-Cotes数值积分法
其中: fname是被积函数表达式或函数名,a,b分别是上下限,tol可以控制积分精度,省略则取0001;trace=1则用图形表示积分过程,trace=0,没有图形。
两者 比较,quad8精度更高。
5、调用积分函数squad进行计算。输入指令: F=quad('f(x)',0,pi/4),如图,回车后可得到计算结果18612。其他函数,只要修改函数文件中的表达式即可。
基本不管多复杂的式子,MATLAB都能解决,只要你输入正确,解出来只是时间问题,我给你一个解题的参考格式。设f为你的被积函数,只能自己输,别输错;x为积分变量,a,b分别为积分下限和上限。MATLAB中计算函数f的不定积分的格式如下:
syms
x;int(f,x)
计算定积分的格式如下:
syms
a
b
x;int(f,x,a,b)。
1、使用int函数,函数由integrate缩写而来,int 函数表达式,变量,积分上限,积分下限。
2、比如求一个Fx = ax^2,在区间(m,n)对x进行积分,
首先要将 m,x,a,b 这四个变量定义为符号变量
syms m x a b;
Fx = ax^2;
int(Fx,x,m,n)
3、通过上面这个方法,就能够求得任意一个函数在给定区间的积分,如果想看到书写的格式,可以用pretty命令,这样显示更接近平常的表示方法。
1、在matlab中,积分运算有多种方式,为了便于查看不同方式处理异同,以下面这个积分为例:
2、梯形积分法
第一种,采用最简单的方式,以函数trapz为例,z = trapz(x,y) 其中x表示积分区间的离散化向量,y是与x同维数的向量,表示被积函数,z是返回的积分近似值。
clc,clear。
% 梯形积分法
x = -1:0001:1,
y = exp(-x^2),
s = trapz(x,y)
% 计算结果: s = 14936
3、高精度数值积分(1)
为了克服梯形积分法精度低的问题,可以采用高精度积分方式,第一种可以采用 z = quad(Fun,a,b) 该方式是自适应步长Simpson计分法求得函数Fun在区间[a,b]上定积分,如下:
clc;clear;
% 梯形积分法
s = quad(inline('exp(-x^2)'),-1,1)
% 计算结果: s = 14936
4、高精度数据积分(2)
采用高精度Lobatto积分法,格式: z = quadl(Fun,a,b)
clc;clear;
% 梯形积分法
s = quadl(inline('exp(-x^2)'),-1,1)
% 计算结果: s = 14936
1、双击matlab软件图标,打开matlab软件,如下图所示。
2、使用syms命令,创建七个符号变量a、b、c、d、x、y、z,如下图所示。
3、这里进行一个较为复杂的积分举例,使用符号变量a、b、x、y、z,创建多元函数A,其中A=32a+b^5+sin(7z)+xy,如下图所示。
4、使用函数int(A,'a'),求解多元函数A关于变量a的积分,得出答案,如下图所示。
5、使用函数int(A,'b'),求解多元函数A关于变量b的积分,得出答案,如下图所示。
6、使用函数int(A,'z'),求解多元函数A关于变量z的积分,得出答案,如下图所示。
7、使用函数int(A,'x'),求解多元函数A关于变量x的积分,得出答案,如下图所示。
matlab编程求无穷限定积分:
用如下程序:
syms x
f = exp(-x^2);
int(f, x, 0, inf)
结果是pi^(1/2)/2,即2分之根号派
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。
MATLAB是matrix&laboratory两个词的组合,意为矩阵工厂(矩阵实验室)。是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。
它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
MATLAB和Mathematica、Maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
MATLAB的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用MATLAB来解算问题要比用C、FORTRAN等语言完成相同的事情简捷得多。
并且MATLAB也吸收了像Maple等软件的优点,使MATLAB成为一个强大的数学软件。在新的版本中也加入了对C,FORTRAN,C++,JAVA的支持。
用matlab可以如下数值积分法,来求解定积分、二重积分、三重积分的数值解问题。
1、梯形数值积分计算 trapz()
X = 0:pi/100:pi;
Y = sin(X);
Z = pi/100trapz(Y)
2、自适应辛普森数值积分计算 quad()
F = @(x)1/(x^3-2x-5);
Q = quad(F,0,2);
3、自适应Lobatto积分计算 quadl()
function y = myfun(x)
y = 1/(x^3-2x-5);
end
Q = quadl(@myfun,0,2);
4、自适应Gauss Kronrod quadrature积分计算 quadgk()
function y = myfun(x)
y = exp(-x^2)log(x)^2;
end
Q = quadgk(@myfun,0,Inf)
5、平面区域的二重积分的数值计算 quad2d()
fun = @(x,y) 1/( sqrt(x + y) (1 + x + y)^2 )
ymax = @(x) 1 - x
Q = quad2d(fun,0,1,0,ymax)
6、矩形区域的的二重积分数值计算 dblquad()
function z = integrnd(x, y)
z = ysin(x)+xcos(y);
end
Q = dblquad(@integrnd, pi, 2pi, 0, pi)
7、三重积分数值计算 triplequad()
function f = integrnd(x, y, z)
f = ysin(x)+zcos(x);
end
Q = triplequad(@integrnd, 0, pi, 0, 1, -1, 1)
以上是最基本的求解数值积分方法。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)