主题:不明白哪里出错了
sophiazhao2009
[专家分:0] 发布于 2009-11-18 22:02:00
%有限长水平圆柱体
%几点说明:柱体长度为2L,这里去L=10m,轴线埋藏深度为D,这里取D=20m,
%单位长度的剩余质量A,剩余密度为σ,这里取a=0.5
%R为柱体半径,这里去R=2,pi=3.1415,重力异常为gl
G=6.72e-11;
pi=3.1415;
a=0.5;
R=2;
D=20;
L=10;
A=pi*R^2*a;
for x=-100:100;
gl=2*G*A*D*1/(x^2+L^2+D^2)^(1/2)*1/(x^2+D^2);
end
plot(x,gl,'r')
*****不出图,不知道是为什么,请高手帮忙解答,万分感激~~~~
最后更新于:2009-11-18 22:07:00
回复列表 (共5个回复)
沙发
johnliu1983 [专家分:100] 发布于 2009-11-19 13:39:00
G=6.72e-11;
pi=3.1415;
a=0.5;
R=2;
D=20;
L=10;
A=pi*R^2*a;
x=-100:100;
gl=2*G*A*D*1./(x.^2+L^2+D^2).^(1/2)*1./(x.^2+D^2);
plot(x,gl,'r')
板凳
sophiazhao2009 [专家分:0] 发布于 2009-11-19 16:46:00
貌似主要问题不是这样子的,有人给我了解答,拿出来与大家共享~~
plot函数要画出一条曲线出来,则需要很多坐标值。你这里x到最后就是一个值100,gl也是一个值,这样只能画出一个点出来。可以这样改
G=6.72e-11;
pi=3.1415;
a=1.5;
R=2;
D=20;
L=10;
A=pi*R^2*a;
x=-100:100;
gl=zeros(201,1)
k=1;
for i=-100:100;
B=(i^2+L^2+D^2)^(1/2)*(i^2+D^2)
gl(k)=2*G*A*D*L/B;
k=k+1;
end
plot(x,gl,'r');
3 楼
johnliu1983 [专家分:100] 发布于 2009-11-20 10:44:00
我给你改了错了。你不说声谢谢,不好好看看就说我的不对,有点儿不讲究吧。你第一个帖中有一个符号错了。和第三个帖中不一样,乘法和除法写反了。你第三个程序是对的。但for循环运行太慢了。现在矩阵小可能感觉不出来,要是矩阵大了就太慢了。看来以后我还是少没事多事了。
4 楼
sophiazhao2009 [专家分:0] 发布于 2009-11-20 21:22:00
我没有那个意思啊,我很感谢你对于我的帮助,我只是说我的意见而已啊,你把我的错误点放在矩阵要加点号,但是我要完成的是一条曲线,主要问题在循环的问题。再有我第一个中式子里用的是两个除号,但是我在第三个里面,是先经后两部分乘起来然后再整体除,跟连除效果是一样的~~~
5 楼
Neptune_zx [专家分:10] 发布于 2009-12-19 13:55:00
%有限长水平圆柱体
%几点说明:柱体长度为2L,这里去L=10m,轴线埋藏深度为D,这里取D=20m,
%单位长度的剩余质量A,剩余密度为σ,这里取a=0.5
%R为柱体半径,这里去R=2,pi=3.1415,重力异常为gl
G=6.72e-11;
pi=3.1415;
a=0.5;
R=2;
D=20;
L=10;
A=pi*R^2*a;
x=-100:100;
gl=2*G*A*D*1./(x.^2+L^2+D^2).^(1/2).*1./(x.^2+D^2);
plot(x,gl,'r')
我来回复