修正済みby皆川

Dependencies:   mbed Servo cansat_integrated_2 BMP180

Dependents:   cansat_integrated_2

Committer:
tsubasa_nakajima
Date:
Thu Oct 28 13:50:27 2021 +0000
Revision:
6:6fe6e3554a46
Child:
8:7209c810309d
fixed indicate

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tsubasa_nakajima 6:6fe6e3554a46 1 #include "mbed.h"
tsubasa_nakajima 6:6fe6e3554a46 2
tsubasa_nakajima 6:6fe6e3554a46 3 //nの階乗を計算する関数
tsubasa_nakajima 6:6fe6e3554a46 4 int fact(int n){
tsubasa_nakajima 6:6fe6e3554a46 5 int i, result = 1;
tsubasa_nakajima 6:6fe6e3554a46 6
tsubasa_nakajima 6:6fe6e3554a46 7 if(n == 0)
tsubasa_nakajima 6:6fe6e3554a46 8 return 1;
tsubasa_nakajima 6:6fe6e3554a46 9 else
tsubasa_nakajima 6:6fe6e3554a46 10 {
tsubasa_nakajima 6:6fe6e3554a46 11 for(i = 1;i <= n;i++)
tsubasa_nakajima 6:6fe6e3554a46 12 {
tsubasa_nakajima 6:6fe6e3554a46 13 result *= i;
tsubasa_nakajima 6:6fe6e3554a46 14 }
tsubasa_nakajima 6:6fe6e3554a46 15 return result;
tsubasa_nakajima 6:6fe6e3554a46 16 }
tsubasa_nakajima 6:6fe6e3554a46 17 }
tsubasa_nakajima 6:6fe6e3554a46 18
tsubasa_nakajima 6:6fe6e3554a46 19 float my_pow(float x, int n)
tsubasa_nakajima 6:6fe6e3554a46 20 {
tsubasa_nakajima 6:6fe6e3554a46 21 int i;
tsubasa_nakajima 6:6fe6e3554a46 22 float pow_result = 1;
tsubasa_nakajima 6:6fe6e3554a46 23
tsubasa_nakajima 6:6fe6e3554a46 24 if(n == 0)
tsubasa_nakajima 6:6fe6e3554a46 25 return 1;
tsubasa_nakajima 6:6fe6e3554a46 26 else
tsubasa_nakajima 6:6fe6e3554a46 27 {
tsubasa_nakajima 6:6fe6e3554a46 28 for(i = 0;i < n;i++)
tsubasa_nakajima 6:6fe6e3554a46 29 {
tsubasa_nakajima 6:6fe6e3554a46 30 pow_result *= x;
tsubasa_nakajima 6:6fe6e3554a46 31 }
tsubasa_nakajima 6:6fe6e3554a46 32 return pow_result;
tsubasa_nakajima 6:6fe6e3554a46 33 }
tsubasa_nakajima 6:6fe6e3554a46 34 }
tsubasa_nakajima 6:6fe6e3554a46 35
tsubasa_nakajima 6:6fe6e3554a46 36 float my_exp(float x)
tsubasa_nakajima 6:6fe6e3554a46 37 {
tsubasa_nakajima 6:6fe6e3554a46 38 int i;
tsubasa_nakajima 6:6fe6e3554a46 39 float result = 0;
tsubasa_nakajima 6:6fe6e3554a46 40
tsubasa_nakajima 6:6fe6e3554a46 41
tsubasa_nakajima 6:6fe6e3554a46 42 for(i = 1;i <= 25; i++)
tsubasa_nakajima 6:6fe6e3554a46 43 {
tsubasa_nakajima 6:6fe6e3554a46 44 result += my_pow(x, i) / fact(i);
tsubasa_nakajima 6:6fe6e3554a46 45 }
tsubasa_nakajima 6:6fe6e3554a46 46
tsubasa_nakajima 6:6fe6e3554a46 47 return result + 1;
tsubasa_nakajima 6:6fe6e3554a46 48 }
tsubasa_nakajima 6:6fe6e3554a46 49
tsubasa_nakajima 6:6fe6e3554a46 50 float my_log(float x)
tsubasa_nakajima 6:6fe6e3554a46 51 {
tsubasa_nakajima 6:6fe6e3554a46 52 int i;
tsubasa_nakajima 6:6fe6e3554a46 53 float result1, result2;
tsubasa_nakajima 6:6fe6e3554a46 54
tsubasa_nakajima 6:6fe6e3554a46 55 x -= 1;
tsubasa_nakajima 6:6fe6e3554a46 56 result1 = 0;
tsubasa_nakajima 6:6fe6e3554a46 57 result2 = 0;
tsubasa_nakajima 6:6fe6e3554a46 58
tsubasa_nakajima 6:6fe6e3554a46 59 for(i = 1;i <= 40;i++)
tsubasa_nakajima 6:6fe6e3554a46 60 {
tsubasa_nakajima 6:6fe6e3554a46 61 if(i % 2 == 1)
tsubasa_nakajima 6:6fe6e3554a46 62 result1 += my_pow(x, i) / i;
tsubasa_nakajima 6:6fe6e3554a46 63 else
tsubasa_nakajima 6:6fe6e3554a46 64
tsubasa_nakajima 6:6fe6e3554a46 65 result2 += my_pow(x, i) / i;
tsubasa_nakajima 6:6fe6e3554a46 66 }
tsubasa_nakajima 6:6fe6e3554a46 67
tsubasa_nakajima 6:6fe6e3554a46 68 return result1 - result2;
tsubasa_nakajima 6:6fe6e3554a46 69 }
tsubasa_nakajima 6:6fe6e3554a46 70
tsubasa_nakajima 6:6fe6e3554a46 71 //累乗
tsubasa_nakajima 6:6fe6e3554a46 72 float mypow(float x, float y)
tsubasa_nakajima 6:6fe6e3554a46 73 {
tsubasa_nakajima 6:6fe6e3554a46 74 return my_exp(y * my_log(x));
tsubasa_nakajima 6:6fe6e3554a46 75 }
tsubasa_nakajima 6:6fe6e3554a46 76
tsubasa_nakajima 6:6fe6e3554a46 77 //高度計算
tsubasa_nakajima 6:6fe6e3554a46 78 float calculate_h(float dP0FIX,float dp,float dt){
tsubasa_nakajima 6:6fe6e3554a46 79 float dpow = 1.0/5.256;
tsubasa_nakajima 6:6fe6e3554a46 80 float dP0 = 1013.25;
tsubasa_nakajima 6:6fe6e3554a46 81 float a = (dt+(float)273.15)/(float)0.0065;
tsubasa_nakajima 6:6fe6e3554a46 82 float s = (mypow(dP0/dp,dpow)- mypow(dP0/dP0FIX,dpow))*a - 27;
tsubasa_nakajima 6:6fe6e3554a46 83 return s;
tsubasa_nakajima 6:6fe6e3554a46 84 }
tsubasa_nakajima 6:6fe6e3554a46 85
tsubasa_nakajima 6:6fe6e3554a46 86 //海面気圧計算
tsubasa_nakajima 6:6fe6e3554a46 87 float calculate_dp0(float dp,float dt){
tsubasa_nakajima 6:6fe6e3554a46 88 float s = dp*mypow(1 - (0.0065*27)/(dt+0.0065*27+273.15),-5.257);
tsubasa_nakajima 6:6fe6e3554a46 89 return s;
tsubasa_nakajima 6:6fe6e3554a46 90 }