怎么用matlab计算这个二重积分 如何用matlab求二重积分
www.zhiqu.org 时间: 2020-12-07
题主给出的二重积分,用matlab的int()函数无法得到其解析值。如l=0.5,R=0.39,则可以通过下列代码,求得其数值解
l=0.5,R=0.39
syms x y
x0=sqrt(R^2-l^2/2);
x1=l/2;
y0=sqrt(R^2-l^2*x^2/4);
y1=l/2;
fun=R./sqrt(R^2-x.^2-y.^2);
I=int(int(fun,y,y0,y1),x,x0,x1);
I=vpa(I)
double(int(int('y*(x+y)/4',1,y),1,10))
里边第一重是积y:
ans =
(y*(3*y + 1)*(y - 1))/8
第二重是积x:
ans =
27135/32
最后一个double是将符号变成数值:
ans =
847.9688
double(int(int('y*(x+y)/4',1,y),1,10))
里边第一重是积y:
ans =
(y*(3*y + 1)*(y - 1))/8
第二重是积x:
ans =
27135/32
最后一个double是将符号变成数值:
ans =
847.9688
代码如下:
function q=DblSimpson(f,a,A,b,B,m,n)
if(m==1 && n==1) %zgdjm公式
q=((B-b)*(A-a)/9)*(subs(sym(f),findsym(sym(f)),{a,b})+...
subs(sym(f),findsym(sym(f)),{a,B})+...
subs(sym(f),findsym(sym(f)),{A,b})+...
subs(sym(f),findsym(sym(f)),{A,B})+...
4*subs(sym(f),findsym(sym(f)),{(A-a)/2,b})+...
4*subs(sym(f),findsym(sym(f)),{(A-a)/2,B})+...
4*subs(sym(f),findsym(sym(f)),{a,(B-b)/2})+...
4*subs(sym(f),findsym(sym(f)),{A,(B-b)/2})+...
16*subs(sym(f),findsym(sym(f)),{(A-a)/2,(B-b)/2}));
else %复合zgdjm公式
q=0;
for i=0:n-1
for j=0:m-1
x=a+2*i*(A-a)/2/n;
y=b+2*j*(B-b)/2/m;
x1=a+(2*i+1)*(A-a)/2/n;
y1=b+(2*j+1)*(B-b)/2/m;
x2=a+2*(i+1)*(A-a)/2/n;
y2=b+2*(j+1)*(B-b)/2/m;
q=q+subs(sym(f),findsym(sym(f)),{x,y})+...
subs(sym(f),findsym(sym(f)),{x,y2})+...
subs(sym(f),findsym(sym(f)),{x2,y})+...
subs(sym(f),findsym(sym(f)),{x2,y2})+...
4*subs(sym(f),findsym(sym(f)),{x,y1})+...
4*subs(sym(f),findsym(sym(f)),{x2,y1})+...
4*subs(sym(f),findsym(sym(f)),{x1,y})+...
4*subs(sym(f),findsym(sym(f)),{x1,y2})+...
16*subs(sym(f),findsym(sym(f)),{x1,y1});
end
end
end
q=((B-b)*(A-a)/36/m/n)*q;
叫我雷锋!
integral2 函数没有 'ArrayValued' 选项,应该是不能向量化积分的。不知道你解决了吗,最近也遇到这种计算,用循环的话,感觉计算效率有点不能接受。
matlab计算二重积分_
: syms x y; %定义两个符号变量 a=int(int(x^y,x,0,1),y,1,2) %积分 b=simple(a) %化简 c=vpa(b,4) %得到4位近似解,也可以任意N位解
怎么用Matlab计算这个二重积分_
: 使用matlab的int函数可以方便的计算积分,以及多重积分.设二重积分还是表达式为 z=z(x,y),积分域为下限 y1(x) 上限 y2(x),从 x1 到 x2,则二重积分代码为:int(int(z,y,y1,y2),x,x1,x2) 需要先定义符号变量 x,y,以及表达式 z,y1,y2 和数值 x1,x2 的值.下面举例在半径为1,以原点为圆心的圆上,对 z=x^2+y^2+xy 做二重积分:向左转|向右转 int ,函数功能强大,可以计算积分、定积分、广义积分以及一些特殊积分(如 sin(x)/x 的无穷积分、满意的野狼积分、伽马积分等),对于学习高等数学的同学很有应有价值.
Matlab中如何计算二重积分_
: 两个方法:1. 使用两次符号积分函数int()2. 直接使用二重数值积分函数dblquad()
如何用matlab做二重积分的数值计算_
: double(int(int('y*(x+y)/4',1,y),1,10)) 里边第一重是积y:ans = (y*(3*y + 1)*(y - 1))/8 第二重是积x:ans = 27135/32 最后一个double是将符号变成数值:ans = 847.9688
matlab中如何计算二重积分
:
%假设x,y的积分限均为(-0.1,0.1)
clc
clear
s=linspace(0,sqrt(3));
k=zeros(size(s));
for i=1:length(s)
rhom=2*pi/3/sqrt(3)/s(i);
rho1=@(x,y)abs(1-sqrt(x.^2+y.^2)-rhom);
rho2=@(x,...
Matlab计算二重积分求助..
: 这个要用符号积分,不过matlab积不出结果,符号运算能力弱 int(int(((Wa-x).^2+(6-y).^2+36).^-1.5,x,-30,30),y,-40,40)Warning: Explicit integral could not be found. Warning: Explicit integral could not be found. ans = int(int(1/((y - 6)^2 + (Wa - x)^2 + 36)^(3/2), x = -30..30), y = -40..40) mathematics可以算出结果
matlab求二重积分
: 符号计算syms x y; %定义两个符号变量a=int(int(x^y,x,0,1),y,1,2) %积分x,0,1 ,y,1,2b=simple(a) %化简c=vpa(b,4) %得到4位近似解,也可以任意N位解数值计算%%二重积分f= @(x,y)exp(sin(x))*ln(y),y从5*x积分到x^2,x从10积分到201 (7.X后版本才...
求用matlab编写一个程序 计算一个二重积分 积分函数是如下,恳求各位matlabwxdbq,毕业答辩在即..谢谢了
: format longR=27.9749e-3;fun=@(r,alpha)r.*(R-r.*cos(alpha)./(R^2+R^2-2*R*r.*cos(alpha)).^(3/2));a=quad2d(fun,16.129e-3,16.51e-3,0,2*pi)format short
matlab求二重积分
: >> syms x y epsilonr1=int(int((1/150)*(1/150)*exp((-i)*(0.0419*x+0.0419*y)),x,0,75),y,0, 75) double(epsilonr1) epsilonr1 = (4*i*((10000*sin(1257/400))/419 - (20000*i*sin(1257/800)^2)/419))/(3771*exp((1257*i)/400)) - (80000*sin(1257/800)^2)/1580049 - (40000*i*sin(1257/400))/1580049 ans = -0.1013 + 0.0001i >>
matlab中如何求二重积分_
: 你的图片挂了,我觉得用符号数学可以解决你的问题,先syms定义符号变量,再通过int函数进行计算.