谁帮我看看这一段matlab的积分程序,错在哪里?非常感谢!
syms x y
for i=0.01:0.01:1
for j= 0.01:0.01:1
y(round(i*100),round(j*100))=int(int(200*exp(x*y),x,i-0.01,i),y,j-0.01,j);
end
end
y
clc
clear
syms x y
f=zeros(10,10);
for i=1:1:10
for j= 1:1:10
f(i,j)=int(int(200*exp(x*y),x,i-1,i),y,j-1,j);
end
end
double(f)
按上余凯肆面竖轿语孙模句试试
因为你不坦陆配断改变了y变量的符号值,积分越来越让指复杂,符号解求悉咐不出来。
我的理解是 y(round(i*100),round(j*100))这个变量应该是你失误的,修改成z,可以运行,但是时间比较长,100x100的符号解,很慢。
clear ;clc
syms x y
for i=0.01:0.01:1
for j= 0.01:0.01:1
z(round(i*100),round(j*100))=int(int(200*exp(x*y),x,i-0.01,i),y,j-0.01,j);
end
end
z
我认为像这种积分,应该用数值方法解,例如:
for i=0.01:0.01:0.1%仅仅为说明,把1改为0.1
for j= 0.01:0.01:0.1%仅仅为说明,把1改为0.1
z(round(i*100),round(j*100))=dblquad('200*exp(x*y)',i-0.01,i,j-0.01,j);
end
end
z
结果:
z =
Columns 1 through 5
0.0200 0.0200 0.0200 0.0200 0.0200
0.0200 0.0200 0.0200 0.0200 0.0200
0.0200 0.0200 0.0200 0.0200 0.0200
0.0200 0.0200 0.0200 0.0200 0.0200
0.0200 0.0200 0.0200 0.0200 0.0200
0.0200 0.0200 0.0200 0.0200 0.0200
0.0200 0.0200 0.0200 0.0200 0.0201
0.0200 0.0200 0.0200 0.0201 0.0201
0.0200 0.0200 0.0200 0.0201 0.0201
0.0200 0.0200 0.0200 0.0201 0.0201
Columns 6 through 10
0.0200 0.0200 0.0200 0.0200 0.0200
0.0200 0.0200 0.0200 0.0200 0.0200
0.0200 0.0200 0.0200 0.0200 0.0200
0.0200 0.0200 0.0201 0.0201 0.0201
0.0200 0.0201 0.0201 0.0201 0.0201
0.0201 0.0201 0.0201 0.0201 0.0201
0.0201 0.0201 0.0201 0.0201 0.0201
0.0201 0.0201 0.0201 0.0201 0.0201
0.0201 0.0201 0.0201 0.0201 0.0202
0.0201 0.0201 0.0201 0.0202 0.0202