作业帮 > 语文 > 作业

MATLAB求助!计算地球子午圈曲率半径、卯酉圈曲率半径和纬圈半径; 计算赤道到纬度为 的子午线弧长等

来源:学生作业帮 编辑:拍题作业网作业帮 分类:语文作业 时间:2024/04/27 12:15:12
MATLAB求助!计算地球子午圈曲率半径、卯酉圈曲率半径和纬圈半径; 计算赤道到纬度为 的子午线弧长等
另外还有计算赤道到纬度为之间的1弧度经差纬差的球面梯形面积.标题打不下了.代码运行不了.
以下是代码:
a = 6378245; b = 6356863; %长短半轴
e = realsqrt((realpow(a,2)-realpow(b,2))/realpow(a,2)); %第一偏心率
fai = [0:0.5:90]; %纬度数组
%计算曲率半径
m = a.*(1-realpow(e,2))./realpow((1-realpow(e.*sind(fai),2)),3./2);
M = vpa(m,8);
n = a./realpow((1-realpow(e.*sind(fai),2)),1./2);
N = vpa(n,8);
r = N.*cosd(fai);
R = vpa(r,8);
fun = @m;
s = quad(fun,0,fai);
lamda1 = 0;
lamda2 = 1;
t = @m.*n.*cosd(fai);
T = dblquad(T,0,fai,lamda1,lamda2,8);
disp('子午圈曲率半径:');
disp(M);
disp('卯酉圈曲率半径:');
disp(N);
disp('纬圈半径:');
disp(r);
disp('赤道到纬度为 的子午线弧长:');
disp(s);
disp('赤道到纬度为 之间的1弧度经差纬差的球面梯形面积:');
disp(T);
这三个地方出了问题,注释如下
fai = [0:0.5:90]; %纬度数组
错误:Use of brackets [] is unnecessary,use parentheses to group,if needed.
m = a.*(1-realpow(e,2))./realpow((1-realpow(e.*sind(fai),2)),3./2);
错误:The value assigned to variable 'm' might be unused.
t = @m.*n.*cosd(fai);
错误:'m' might be used incompatibly or redefined.
你所说的应该是M-Lint给出的提示信息,不一定是错误.
M-Lint是M语言的代码分析工具,能对你程序中可疑的地方给出提示和建议,有三种颜色:
红色表示存在错误(你说的第三个就是);
橙色表示警告,或者代码有改进可能,并不是错误(前两个是这种情况);
如果M-Lint没检测出问题,编辑器右上角会显示绿色.
 
善用M-Lint,注意按照它给的提示修改程序直至变绿对于提高代码质量和你的MATLAB编程水平都很有帮助.就你说的三个问题而言:
第一个是改进建议,告诉你没必要使用中括号,删掉括号即可;
第二个是警告m该处赋的值可能未使用,其实这个警告和第三个问题相关;
第三个问题不仅是你说的那行,还包括前面的
fun = @m;
也存在同样的问题.此处是个错误,原因是m在前面定义成变量,而@m的写法意味着把m作为函数名称.至于为什么这么写,我猜作者可能把前面m的表达式当成函数用了.
 
除了M-Lint检查出的三个问题外,这个句子也是有问题的:
    s = quad(fun,0,fai);
积分的上限只能是标量,而这里fai是一个向量.
再问: 额……作者就是我>_