matlab求积分:y=sin(x),t=y^2/(a+b*y),积分范围(0,pi),

我是这样编写的:
syms x a b
y=sin(x);
int(y^2/(b*y+a),0,pi)
结果显示:Warning: Explicit integral could not be found.
求高手指点下,错在哪里,我该怎么求这个积分

首先,你的语句没问题。

但这个函数对于MATLAB来说过于复杂,MATLAB的数值计算能力很强,但是符号计算能力有限。所以他警告:Warning: Explicit integral could not be found. (就是说积不出显性表达式)。


如果可以的话,把a,b换成数字应该是可以积出数值结果的。


如果一定要积出符号解的话,可以用Mathematica,或maple它们的符号计算能力比较强。

下面给出Mathematica积出的结果(Mathematica也积了好久,怪不得MATLAB积不出来)


追问

我电脑上没有安Mathematica,请问matlab有办法求得出来嘛

追答

这个还真没办法,直接在MATLAB的符号计算引擎MuPAD里也试过了,积不出来,就是积不出来。

MATLAB符号计算能力有限。除非用其他软件或者将a,b换成数字。

刚才看了看lhmhz的回答,我又用14a的MuPAD试了一下,还真积出来了,

不过对于这样的结果,你能满意吗?

输出的结果显然没有Mathematica好,

1 没有对a,b的分类讨论结果。

2 有复数 i 在结果中


所以个人建议,不要指望MATLAB做复杂符号计算,充分发挥它的数值计算能力

温馨提示:内容为网友见解,仅供参考
第1个回答  2014-10-03
可以解。
>> syms x a b
>> y=sin(x)
y =
sin(x)
>> s=int(y^2/(b*y+a),0,pi)
s =
-(-i*a^2*log(-i*a/(a^2-b^2)^(1/2))+i*a^2*log(i*a/(a^2-b^2)^(1/2))+a*(a^2-b^2)^(1/2)*pi+2*a^2*atan(1/(a^2-b^2)^(1/2)*b)-2*b*(a^2-b^2)^(1/2))/b^2/(a^2-b^2)^(1/2)追问

>> syms x a b
>> y=sin(x)

y =

sin(x)

>> s=int(y^2/(b*y+a),0,pi)
Warning: Explicit integral could not be found.

s =

int(sin(x)^2/(a + b*sin(x)), x = 0..pi)
为什么我的计算不出来呢?

追答

这跟Matlab的版本有关,我用的是R14.。可能Matlab2008以上都会出现这个警告语。

本回答被网友采纳

如何用matlab对这个函数进行积分。
2、使用syms命令,创建七个符号变量a、b、c、d、x、y、z,如下图所示。3、这里进行一个较为复杂的积分举例,使用符号变量a、b、x、y、z,创建多元函数A,其中A=32*a+b^5+sin(7*z)+x*y,如下图所示。4、使用函数int(A,'a'),求解多元函数A关于变量a的积分,得出答案,如下图所示。5...

matlab怎样计算积分?
matlab计算积分,可以用int函数,具体实现如下:syms x; % 定义变量xy = x*exp(-x); % 函数形式int(y, 0, inf); % 计算y在0到正无穷的定积分% 以上程序运行后,输出1 int函数的一般调用形式为:int(s):没有指定积分变量和积分阶数时,系统按findsym函数指示的默认变量对被积函数或符号表...

matlab积分怎么算?
x = -1:0.001:1,y = exp(-x.^2),s = trapz(x,y)计算结果: s = 1.4936 3、高精度数值积分(1)为了克服梯形积分法精度低的问题,可以采用高精度积分方式,第一种可以采用 z = quad(Fun,a,b) 该方式是自适应步长Simpson计分法求得函数Fun在区间[a,b]上定积分,如下:clc;clear...

matlab中在[0,3π]区间,求y=sin x的值
x=linspace(0,3*pi,100) % define the variable 'x'y=sin(x); %equation.plot(x,y) %make it visible sinx函数,即正弦函数,三角函数的一种。正弦函数是三角函数的一种。对于任意一个实数x都对应着唯一的角(弧度制中等于这个实数),而这个角又对应着唯一确定的正弦值sinx。锐角正弦函...

用matlab求极限,求导,积分,矩阵。。。
首先是定义符号 syms x y z r a b c;问题一:计算极限. 采用limit函数.fprintf("---计算极限---\\n")fun1 = ((1+tan(x)) \/ (1+sin(x)))^(1\/x^3);fprintf("x ->0, fun1->%s\\n", limit(fun1));fun2 = x * y \/ sqrt(x^2 + y^2);fprintf("(x, y)->0, ...

如何用matlab求取函数的不定积分与定积分
结果,x*atan(z)2、定积分 int(S,a,b)S——单变量被积函数表达式,f(x)a,b——积分区间 例3:syms x;int(x*log(1 + x), 0, 1)结果,1\/4 int(S,v,a,b)S——多变量被积函数表达式,f(x,y)v——积分变量x或y a,b——积分区间 例4:syms x t;int(2*x, sin(t), 1...

matlab求函数的数值积分
trapz(X,Y)%X—自变量【a,b】区间的等差向量,Y—对应于X的被积函数值 2、对于二重积分,有quad2d【平面区域的数值积分】,dblquad【矩形区域的数值积分】,其调用格式分别为 quad2d(fun,xmin,xmax,ymin,ymax)dblquad(fun,xmin,xmax,ymin,ymax)3、对于三重积分,有triplequad【三维矩形区域的...

matlab里面如何对一个矩阵求积分
>> intf=int(fun,x,0,1)intf = [ -cos(1)+1, 3\/2][ 4, 1+sin(1)]>> intf2=quadv(inline(fun),0,1)intf2 = 0.4597 1.5000 4.0000 1.8415 也可以使用arrayfun函数对quadl等积分函数进行矢量化运算来达到相同的目录 matlab中如何求某一个矩阵的标准差和均值 方法:...

用matlab中在0到2π上求sinx的最小值
;a=0;b=pi\/2;x=a:h:b;y=sin(x);z1=(y(1)+y(n))*h\/2; z2=sum(y(2:n-1))*h; z=z1+z2,syms t f=sin(t); intf=int(f,t,a,b)(计算精确值), Fs=double(intf),Juewucha8000=abs(z8000-Fs)(计算误差)辛普森公式 a=0;b=π\/2;; h=(b-a)\/(2*m); x=a:...

Matlab的符号积分
clear;clcf=@(x,y)sin(x.*y)F=@(y,a,b)integral(@(x)f(x,y),a,b)%积分后的函数Fv=@(y,a,b)arrayfun(@(y)F(y,a,b),y)%矢量化的函数ezplot(@(y)Fv(y,3,4))f = 包含以下值的 function_handle:(x,y)sin(x.*y)F = 包含以下值的 function_handle:(y,a,b)integral...

相似回答