C C 內使用貝塞爾函式

2021-10-04 01:44:12 字數 2409 閱讀 2253

今天在搗鼓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...