Witam wszystkich, niedawno dałem krótkie zadanie, teraz mam sporo dłuższe.
Muszę napisać program liczacy Algorytm Kivjoja (Geodezja Wyższa), ale mam problem z funkcjami trygonometrycznymi.
//Kivjoj.cpp
#include<iostream>
#include<math.h>
int main()
{
using namespace std;
double Fip[100];
double lambdap[100];
float SAB;
double Aab[100];
double a = 6378137;
double e = 0.0066943800229;
cout << "Podaj dane w [rad]: " << endl;
cout << "Fip = ";
cin >> Fip[0];
cout << "Lambdap = ";
cin >> lambdap[0];
cout << "Sab = ";
cin >> SAB;
cout << "Azymut Aab = ";
cin >> Aab[0];
// Punkt I. Dzielimy całą długość linii geodezyjnej s na n elementów ds.
cout << "Pkt I. Dzielimy cala dlugosc linii geodezyjnej s na n elementow ds";
int podzial;
cout << "Podaj liczbe odcinkow: ";
cin >> podzial;
double ds;
ds = SAB / podzial;
cout << "Odcinek ds = " << ds;
// Początek petli Kivjoj'a
int i;
double M[100];
double N[100];
double FFi1[100];
double Fim[100];
for(i = 0; i < podzial; i++)
{
// Obliczam M i N;
// Obliczam sinus
double sinus[100];
sinus[i] = double sin( double Fip[i]);
//Obliczam potege sinusa
double potega[100];
double y = 2;
potega[i] = double pow( double sinus[i], double y);
// Obliczam x
double x[100];
x[i] = (1 - e * potega[i]);
//Obliczam pierwiastek
double pierwiastek[100];
pierwiastek[i] = double sqrt(double x);
//Obliczam M
M[i] = (a*(1-e))/(pierwiastek[i]);
//Obliczam N
N[i] = (a) / (pierwiastek[i]);
//Obliczam pierwszy przyrost
// Obliczam cosinusa
double cosinusA[100];
cosinusA[i] = double cos( double Aab[i]);
// Obliczam Fi male
FFi1[i] = (ds * cosinusA[i]) / M[i];
// Obliczam φmi
Fim[i] = Fip[i] + ( 0.5 * FFi1[1]);
// Obliczam Mmi i Nmi
//Obliczam sinus posredni
double sinusm[100];
sinusm[i] = double sin( double Fim[i]);
//Obliczam potege sinusa
double potegam[100];
potegam[i] = double pow ( double sinusm[i], double y);
//Obliczam x
double xm[100];
xm[i] = (1 - e * potegam[i]);
//Obliczam pierwiastek
double pierwiastekm[100];
pierwiastekm[i] = double sqrt(double xm[i]);
//Obliczam Mmi
double Mmi[100];
Mmi[i] = (a * (1 - e))/pierwiastekm[i];
//Obliczam Nmi
double Nmi[100];
Nmi[i] = (a) / ( pierwiastekm[i])
// Obliczam Ami
// Obliczam sinusa
double sinusA[100];
sinusA[i] = double sin( double Aab[i]);
// obliczam Tangensa
double tangensFi[100];
tangensFi[i] = double tan( double Fim[i]);
// obliczam Ami posrednie
double pAmi[100];
pAmi[i] = ( ds * sinusA[i] * tangensFi[i]) / (Nmi[i]);
double Ami[100];
Ami[i] = Aab[i] + (0.5 * pAmi[i]);
//Obliczam dla elemntu ds
// Obliczam cosinus
double cosinusAmi[100];
cosinusAmi[i] = double cos(double Ami[i]);
// Obliczam Yi
double Yi[100];
Yi[i] = ( ds * cosinusAmi[i] ) / Mmi[i];
// Obliczam sinusAmi
double sinusAmi[100];
sinusAmi[i] = double sin(double Ami[i]);
//Obliczam cosinusFi
double cosFi[100];
cosFi[i] = double cos( double Fim[i]);
// Obliczam Li
double Li[100];
Li[i] = ( ds * sinusAmi[i]) / ( Nmi[i] * cosFi[i]);
// Obliczam Ai
double Ai[100];
Ai[i] = (ds * sinusAmi[i] * tangensFi[i]) / Nmi[i]);
// Kończenie pęteli dane pkt 2.
//Obliczam Fip[1]
Fip[i+1] = Fip[i] + Yi[i];
//Obliczam lambdap[1]
lambdap[i+1] = lambdap[i] + Li[i];
//Obliczam Aab[1]
Aab[i+1] = Aab[i] + Ai[i];
}
cout << "Podaje wyniki: " << endl;
cout << "Fip = " << Fip[podzial];
cout << "Lambdap = " << lambdap[podzial];
cout << "Aab = " << Aab[podzial];
system("pause");
return 0;
}