将下列c转化为matlab: Ni = a; Hi = sqrt(X*X + Y*Y + Z*Z) - sqrt(a*b); double Mi_temp = (Z / (sqrt(X*X + Y*Y))) / (1 - e2*Ni / (Ni + Hi)); Mi = atand(Mi_temp, 1); for (int i = 0; i < 100; i++) { double lastMi = Mi, lastNi = Ni; Ni = a / sqrt(1 - e2*sind(lastMi)*sind(lastMi)); Hi = sqrt(X*X + Y*Y) / cosd(lastMi) - lastNi; double Mi_temp = (Z / (sqrt(X*X + Y*Y))) / (1 - e2*Ni / (Ni + Hi)); Mi = atand(Mi_temp, 1); if (abs(lastMi - Mi) < 0.0000000001) { break; } }
时间: 2023-06-19 18:04:08 浏览: 44
Ni = a;
Hi = sqrt(X*X + Y*Y + Z*Z) - sqrt(a*b);
Mi_temp = (Z / (sqrt(X*X + Y*Y))) / (1 - e2*Ni / (Ni + Hi));
Mi = atand(Mi_temp);
for i = 1:100
lastMi = Mi;
lastNi = Ni;
Ni = a / sqrt(1 - e2*sind(lastMi)*sind(lastMi));
Hi = sqrt(X*X + Y*Y) / cosd(lastMi) - lastNi;
Mi_temp = (Z / (sqrt(X*X + Y*Y))) / (1 - e2*Ni / (Ni + Hi));
Mi = atand(Mi_temp);
if abs(lastMi - Mi) < 0.0000000001
break;
end
end
相关问题
编写程序计算公式:y=log(x+sqrt(x*x+1))
好的,我可以回答这个问题。以下是计算公式的 C 代码:
#include <stdio.h>
#include <math.h>
int main() {
double x, y;
printf("请输入 x 的值:");
scanf("%lf", &x);
y = log(x + sqrt(x * x + 1));
printf("y 的值为:%lf\n", y);
return 0;
}
希望能对您有所帮助。
用c++求5*x**2+4*x-6=0的x值,其中x1=(-b+sqrt(b*b-4*a*c))/(2*a),x2=(-b-sqrt(b*b-4*a*c))/(2*a)
这是一个二次方程,可以使用求根公式来求解。根据给定的方程5*x**2+4*x-6=0,可以将其转化为一般形式ax^2+bx+c=0,其中a=5,b=4,c=-6。
根据求根公式,可以得到两个解x1和x2:
x1 = (-b + sqrt(b*b - 4*a*c)) / (2*a)
x2 = (-b - sqrt(b*b - 4*a*c)) / (2*a)
将a、b、c的值代入上述公式,可以计算出x1和x2的值。
计算过程如下:
1. 计算b*b - 4*a*c:
b*b - 4*a*c = 4*4 - 4*5*(-6) = 16 + 120 = 136
2. 计算sqrt(b*b - 4*a*c):
sqrt(136) ≈ 11.66
3. 计算x1和x2:
x1 = (- 11.66) / (2*5) ≈ -3.133
所以,方程5*x**2+4*x-6=0的解为x ≈ 0.733 和 x ≈ -3.133。