今天在搗鼓mmse,倒在了貝塞爾函式上,翻找好久,原來c++的cmath裡有。
官方文件在這裡:
第乙個鏈結中是c++,引入cmath,可以呼叫四種貝塞爾函式。使用以下函式必須支援c++ 17標準,請注意在專案屬性中進行設定。
(專案-屬性-常規-c++標準,下拉選擇c++ 17)
首先給我這條九漏魚提個醒,
第一類貝塞爾函式:
double
cyl_bessel_j
(double nu,
double x)
;float
cyl_bessel_jf
(float nu,
float x)
;long
double
cyl_bessel_jl
(long
double nu,
long
double x)
;
第一類修正的貝塞爾函式,官方文件的 regular modified cylindrical bessel functions。我思考了很久它到底是不是 modified bessel functions of the first kind…如果不是在stackoverflow裡看到一位朋友說:
by regular and irregular, i presume you mean regular or modified bessel functions.我可能真的以為這是什麼很高深的函式…看來這個說法也不怎麼普遍。官方文件裡的命名也是讓我很不解…我剛剛一拍腦袋,我明明可以看中文版啊,過去切換語言一看——害,是機翻。
double
cyl_bessel_i
(double nu,
double x)
;float
cyl_bessel_if
(float nu,
float x)
;long
double
cyl_bessel_il
(long
double nu,
long
double x)
;
第二類貝塞爾函式,aka weber functions 、neumann functions。
double
cyl_neumann
(double nu,
double x)
;float
cyl_neumannf
(float nu,
float x)
;long
double
cyl_neumannl
(long
double nu,
long
double x)
;
第二類修正的貝塞爾函式,官方文件裡的 irregular modified cylindrical bessel functions。
double
cyl_bessel_k
(double nu,
double x)
;float
cyl_bessel_kf
(float nu,
float x)
;long
double
cyl_bessel_kl
(long
double nu,
long
double x)
;
第二個鏈結中是math.h中關於貝塞爾函式的說明。
如果在c中,引入math.h以後的函式呼叫與c++不同。math.h裡的貝塞爾函式只能呼叫整數階的,感覺沒有c++那麼自由。
double
_j0(
double x)
;double
_j1(
double x)
;double
_jn(
int n,
double x)
;double
_y0(
double x)
;double
_y1(
double x)
;double
_yn(
int n,
double x)
;
以下是官方示例。
// crt_bessel1.c
#include
#include
intmain
(void
)
總結,還是要多學習唉。
[1]
貝塞爾函式
貝塞爾函式 bessel function 是數學上的一類特殊函式的總稱,是貝塞爾方程的解 無法用初等函式系統表示 它們和其他函式組合成柱調和函式。除初等函式外,在物理和工程中貝塞爾函式是最常用的函式,它們以19世紀德國天文學家f.w.貝塞爾的姓氏命名,他在1824年第一次描述過它們。一般貝塞爾函式...
貝塞爾曲線使用
貝塞爾曲線數學公式 1。兩個控制點 線性公式 x 1 t x0 t x1 0 t 1 y 1 t y0 t y1 0 t 1 2.三個控制點 二次公式 x 1 t 1 t x0 2 t 1 t x1 t t x2 0 t 1 y 1 t 1 t y0 2 t 1 t y1 t t y2 0 t 1 ...
Matlab之貝塞爾函式
貝塞爾函式在matlab中已經有了函式,可以直接用。那麼我們就沒有必要重 明輪子。以下內容摘自某文件。第一類貝塞爾函式 在matlab 中用besselj nu,z 來表示 用matlab 的 是 clear clc format long x 0 0.01 20 y 0 besselj 0,x y...