山口屋~活動日誌~

私生活で主な出来事をピックアップ

C言語 三角関数 誤差 精度向上 fmod math.h 円周率 M_PI

2020-08-30 13:16:38 | ソフトウェア開発
C言語でmath.hに定義される定数の使い方→数値演算定数

#define _USE_MATH_DEFINES // for C++
#include <cmath>

#define _USE_MATH_DEFINES // for C
#include <math.h>

また、三角関数のsinを計算する際、fmod()で引数の剰余を求め範囲を-2π<θ<2πとすることで精度向上をすることができる。
使用例
sin(fmod(x,2.0*M_PI))

これだけでは、θ=0.5π、π、1.5πなどで本来、-1、0、+1になるはずのところでわずかに一致しないことがあり、sinとcosの変換等を利用して、-0.25π≦θ≦0.25πあるいは0≦θ≦0.25πでの計算に帰着させると、有効桁末尾の数桁分が精度向上し、本来の-1、0、+1に一致するようになる。

なお、Visual Studio 2017 のライブラリ関数では、-θとθでの値の絶対値が一致していたで、-0.25π≦θ≦0.25πへの帰着で良さそう。
マクローリン展開で自力で計算する場合は、まだ確認していないので、わからない。

πなど2進数で表しきれない数値を扱った時点で丸め誤差が発生し、sinやcosを計算する前の角度の加減乗除の際に誤差が伝搬するが、象限三角関数を用いると、45°単位で取り扱う限りはsinやcosを計算する前の角度の加減乗除では誤差が生じないようだ。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

C言語 n乗根

2020-08-23 16:24:33 | ソフトウェア開発
「xのn乗根」について、普通に思いつく計算方法は、

→pow(x,1/n)

であるが、

→exp(ln(x)/n)

なんて計算方法もある。どっちのほうが精度がよいのだろうか?

いろいろ試してみたが、有効数字15桁では同じ結果が得られた。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

SIMフリー APN キャリア IMEI制限

2020-08-20 12:41:57 | パソコン
キャリアSIMでSIMフリー端末を使うための設定の参考用

docomo APN
docomo お客様サポート
SoftBank APN
SoftBank お客さまサポート
・IMEI制限により、4Gでは音声通話もデータ通信もできない。
au APN
au サポート
Y!mobile APN
Y!mobile よくあるご質問

docomo:SIMロック解除対応機種および対応周波数帯(リンク切れ)→800MHzバンド19、1.5GHzバンド21、1.7GHzバンド3
SoftBank:機種別対応周波数→900MHzバンド8、1.5GHzバンド11、1.7GHzバンド3
Y!mobile:機種別対応周波数→900MHzバンド8、1.5GHzバンド11、1.7GHzバンド3
au:SIMロック解除が可能なau携帯電話などの実装周波数帯一覧→800MHzバンド18、800MHzバンド26、1.5GHzバンド11

2.0GHzバンド1はキャリア別に細かく区分されるが、auの使用周波数は、PHSの使用周波数に近接しており、技術基準適合証明(技適)が必要。
700MHzバンド28はテレビ放送の使用周波数に近接しており、テレビの古いブースターが受信してしまう可能性がある。

また、LTEの方式は、Band 1-32をFDD-LTE、Band 34-44をTD-LTE、で分けられているとのこと。

<参考>
Gadget and Radio:700, 900MHzのプラチナバンドLTEには上りに制限があるというおはなし
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

階乗 オーバーフロー 浮動小数点数 整数

2020-08-15 10:54:45 | ソフトウェア開発
階乗:n!や二重階乗:n!!を、Excel(倍精度浮動小数点数)で試算してみた。

階乗は、n≦170までは計算できたが、n≧171ではオーバーフローを起こした。nを整数型で指示する場合、1Byteの符号なし整数型で十分なようだ。

二重階乗は、n≦300までは計算できたが、n≧301ではオーバーフローを起こした。
コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Android マウス USB Type-C HDMI DisplayPort Alternate Mode

2020-08-14 09:37:44 | パソコン
Androidの映像出力で、以前はMHL(Mobile High-definition Link)に対応している機種もあったが端子がMicro-Bであり、端子がType-Cの機種では事情が違う模様で、少しだけ調べてみた。

USB 3.1 のケーブルを使った伝送で Alternate Mode というものがあり、「Display Port」や「Thunderbolt 3」などの種類がある。
Thunderbolt 3 は Apple 製品等で利用されているもの。
Display Port が Android の映像出力に利用できるものだが、MHLと同様に全ての機種が対応しているわけではない。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする