統合プログラム
Dependencies: mbed Servo BMP180
calculate.h@0:e7b7def631c2, 2021-10-21 (annotated)
- Committer:
- minanao
- Date:
- Thu Oct 21 01:58:35 2021 +0000
- Revision:
- 0:e7b7def631c2
- Child:
- 3:a583276d9fef
integrated program
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
minanao | 0:e7b7def631c2 | 1 | #include "mbed.h" |
minanao | 0:e7b7def631c2 | 2 | |
minanao | 0:e7b7def631c2 | 3 | //nの階乗を計算する関数 |
minanao | 0:e7b7def631c2 | 4 | int fact(int n) |
minanao | 0:e7b7def631c2 | 5 | { |
minanao | 0:e7b7def631c2 | 6 | int i, result = 1; |
minanao | 0:e7b7def631c2 | 7 | |
minanao | 0:e7b7def631c2 | 8 | if(n == 0) |
minanao | 0:e7b7def631c2 | 9 | return 1; |
minanao | 0:e7b7def631c2 | 10 | else |
minanao | 0:e7b7def631c2 | 11 | { |
minanao | 0:e7b7def631c2 | 12 | for(i = 1;i <= n;i++) |
minanao | 0:e7b7def631c2 | 13 | { |
minanao | 0:e7b7def631c2 | 14 | result *= i; |
minanao | 0:e7b7def631c2 | 15 | } |
minanao | 0:e7b7def631c2 | 16 | return result; |
minanao | 0:e7b7def631c2 | 17 | } |
minanao | 0:e7b7def631c2 | 18 | } |
minanao | 0:e7b7def631c2 | 19 | |
minanao | 0:e7b7def631c2 | 20 | float my_pow(float x, int n) |
minanao | 0:e7b7def631c2 | 21 | { |
minanao | 0:e7b7def631c2 | 22 | int i; |
minanao | 0:e7b7def631c2 | 23 | float pow_result = 1; |
minanao | 0:e7b7def631c2 | 24 | |
minanao | 0:e7b7def631c2 | 25 | if(n == 0) |
minanao | 0:e7b7def631c2 | 26 | return 1; |
minanao | 0:e7b7def631c2 | 27 | else |
minanao | 0:e7b7def631c2 | 28 | { |
minanao | 0:e7b7def631c2 | 29 | for(i = 0;i < n;i++) |
minanao | 0:e7b7def631c2 | 30 | { |
minanao | 0:e7b7def631c2 | 31 | pow_result *= x; |
minanao | 0:e7b7def631c2 | 32 | } |
minanao | 0:e7b7def631c2 | 33 | return pow_result; |
minanao | 0:e7b7def631c2 | 34 | } |
minanao | 0:e7b7def631c2 | 35 | } |
minanao | 0:e7b7def631c2 | 36 | |
minanao | 0:e7b7def631c2 | 37 | float my_exp(float x) |
minanao | 0:e7b7def631c2 | 38 | { |
minanao | 0:e7b7def631c2 | 39 | int i; |
minanao | 0:e7b7def631c2 | 40 | float result = 0; |
minanao | 0:e7b7def631c2 | 41 | |
minanao | 0:e7b7def631c2 | 42 | |
minanao | 0:e7b7def631c2 | 43 | for(i = 1;i <= 25; i++) |
minanao | 0:e7b7def631c2 | 44 | { |
minanao | 0:e7b7def631c2 | 45 | result += my_pow(x, i) / fact(i); |
minanao | 0:e7b7def631c2 | 46 | } |
minanao | 0:e7b7def631c2 | 47 | |
minanao | 0:e7b7def631c2 | 48 | return result + 1; |
minanao | 0:e7b7def631c2 | 49 | } |
minanao | 0:e7b7def631c2 | 50 | |
minanao | 0:e7b7def631c2 | 51 | float my_log(float x) |
minanao | 0:e7b7def631c2 | 52 | { |
minanao | 0:e7b7def631c2 | 53 | int i; |
minanao | 0:e7b7def631c2 | 54 | float result1, result2; |
minanao | 0:e7b7def631c2 | 55 | |
minanao | 0:e7b7def631c2 | 56 | x -= 1; |
minanao | 0:e7b7def631c2 | 57 | result1 = 0; |
minanao | 0:e7b7def631c2 | 58 | result2 = 0; |
minanao | 0:e7b7def631c2 | 59 | |
minanao | 0:e7b7def631c2 | 60 | for(i = 1;i <= 40;i++) |
minanao | 0:e7b7def631c2 | 61 | { |
minanao | 0:e7b7def631c2 | 62 | if(i % 2 == 1) |
minanao | 0:e7b7def631c2 | 63 | result1 += my_pow(x, i) / i; |
minanao | 0:e7b7def631c2 | 64 | else |
minanao | 0:e7b7def631c2 | 65 | |
minanao | 0:e7b7def631c2 | 66 | result2 += my_pow(x, i) / i; |
minanao | 0:e7b7def631c2 | 67 | } |
minanao | 0:e7b7def631c2 | 68 | |
minanao | 0:e7b7def631c2 | 69 | return result1 - result2; |
minanao | 0:e7b7def631c2 | 70 | } |
minanao | 0:e7b7def631c2 | 71 | |
minanao | 0:e7b7def631c2 | 72 | //累乗 |
minanao | 0:e7b7def631c2 | 73 | float mypow(float x, float y) |
minanao | 0:e7b7def631c2 | 74 | { |
minanao | 0:e7b7def631c2 | 75 | return my_exp(y * my_log(x)); |
minanao | 0:e7b7def631c2 | 76 | } |
minanao | 0:e7b7def631c2 | 77 | |
minanao | 0:e7b7def631c2 | 78 | //高度計算 |
minanao | 0:e7b7def631c2 | 79 | float calculate_h(float dP0FIX,float dp,float dt){ |
minanao | 0:e7b7def631c2 | 80 | float dpow = 1.0/5.256; |
minanao | 0:e7b7def631c2 | 81 | float dP0 = 1013.25; |
minanao | 0:e7b7def631c2 | 82 | float a = (dt+(float)273.15)/(float)0.0065; |
minanao | 0:e7b7def631c2 | 83 | float s = (mypow(dP0/dp,dpow)- mypow(dP0/dP0FIX,dpow))*a - 27; |
minanao | 0:e7b7def631c2 | 84 | return s; |
minanao | 0:e7b7def631c2 | 85 | } |
minanao | 0:e7b7def631c2 | 86 | |
minanao | 0:e7b7def631c2 | 87 | //海面気圧計算 |
minanao | 0:e7b7def631c2 | 88 | float calculate_dp0(float dp,float dt){ |
minanao | 0:e7b7def631c2 | 89 | float s = dp*mypow(1 - (0.0065*27)/(dt+0.0065*27+273.15),-5.257); |
minanao | 0:e7b7def631c2 | 90 | return s; |
minanao | 0:e7b7def631c2 | 91 | } |