Decidability untuk mengecek antiderivative?

9

Misalkan saya memiliki dua fungsi dan dan saya tertarik untuk menentukan apakahFG

F(x)=G(x)dx.

Misalkan fungsi saya terdiri dari fungsi-fungsi dasar (polinomial, eksponensial, log, dan fungsi trigonometri), tetapi tidak, katakanlah, deret Taylor.

Apakah masalah ini dapat diputuskan? Jika tidak, apakah itu bisa ditentukan?

(Saya bertanya karena saya sedang mengajar kelas tentang kemampuan komputasi dan seorang siswa bertanya kepada saya apakah TM dapat membantu Anda mengintegrasikan fungsi yang integralnya saat ini tidak diketahui. Saya menduga bahwa fungsi yang tidak kita ketahui cara memadukannya lebih banyak. benar fungsi yang integral tidak dapat diekspresikan sebagai kombinasi dari fungsi-fungsi dasar di atas daripada fungsi yang kita tidak benar-benar tahu integral, tapi itu membuat saya berpikir tentang apakah masalah umum memeriksa integral dapat ditentukan.)

templatetypedef
sumber
Anda sepertinya bertanya tentang diferensiasi simbolis. Anda dapat melihat di en.wikipedia.org/wiki/Symbolic_computation dan en.wikipedia.org/wiki/Computer_algebra_system . Bagi saya tidak jelas kelas fungsi apa yang Anda izinkan. Jenis komposisi apa yang Anda izinkan? misalnya, adalah F(x)=sin(cos(ex))+log(2x3+3)diizinkan? Saya sarankan Anda mencoba memformalkan kelas fungsi yang Anda pedulikan menggunakan definisi rekursif. Sudahkah Anda mencoba melihat apa yang terjadi ketika Anda menggunakan aturan rantai, dan melihat apakah Anda bisa mendapatkan algoritma rekursif yang menangani semua kasus?
DW
3
Karena diferensiasi itu mudah, Anda benar-benar bertanya apakah kami dapat memutuskan apakah suatu ekspresi F sama dengan nol. Ini mungkin masalah di mana informasi lebih mudah ditemukan.
Yuval Filmus

Jawaban:

8

Jawaban singkat untuk pertanyaan Anda adalah "tidak". Teorema Richardson dan ekstensi selanjutnya pada dasarnya menyatakan bahwa begitu Anda memasukkan fungsi trigonometri elementer, masalah menentukan apakah f(x)=0 (dan karenanya jika f(x)=g(x) , karena ini sama dengan f(x)g(x)=0 ) tidak dapat dipecahkan.

Yang menarik tentang ini adalah bahwa teori orde pertama bidang tertutup nyata dapat dipilih. Secara intuitif, alasan mengapa menambahkan fungsi trigonometrik membuat sistem urutan pertama tidak dapat diputuskan adalah karena Anda dapat membuat bilangan bulat melalui {xR:sin(πx)=0} , dan teori bilangan bulat tidak dapat diputuskan.

Apakah teori bidang tertutup nyata dengan ex dapat dianggap sebagai masalah terbuka yang cukup terkenal .

Yang lebih menarik lagi adalah bahwa jika Anda memiliki oracle yang "memecahkan" masalah konstan (yaitu oracle yang dapat memberi tahu Anda jika atau tidak), maka integrasi fungsi-fungsi dasar dalam istilah yang terbatas dapat ditentukan , dan algoritma praktis dikenal. Jadi diberikan G ( x ) , kita bisa menemukan F ( x ) atau tahu bahwa tidak ada integral dasar G dalam istilah yang terbatas.f(x)=0G(x)F(x)G

Nama samaran
sumber
6

Masalah Anda tampaknya mengurangi pertanyaan sederhana berikut ini:

Diberikan dua fungsi di kelas fungsi, apakah kita memiliki F ( x ) = G ( x ) untuk semua x ? (Dengan kata lain, apakah mereka memiliki nilai yang sama di mana-mana?)F,GF(x)=G(x)x

Saya tidak tahu apakah ini decidable, untuk kelas fungsi ini. Jika ya, maka masalah Anda juga harus diperhitungkan.


Untuk masalah Anda, pendekatan umum adalah: secara simbolis membedakan untuk mendapatkan F ( x ) , lalu periksa apakah kami memiliki F ( x ) = G ( x ) untuk semua x .F(x)F(x)F(x)=G(x)x

Jadi langkah kuncinya adalah diferensiasi simbolis. Mari kita cari tahu bagaimana melakukannya secara lebih rinci. Kita dapat mendefinisikan kelas fungsi yang diizinkan secara rekursif:

F(x)::=c|x|ex|log(x)|sin(x)|cos(x)|tan(x)|F1(x)+F2(x)|F1(x)×F2(x)|F1(x)/F2(x)|F1(F2(x))

di mana berkisar pada konstanta dan rentang F , F 1 , F 2 atas fungsi.cF,F1,F2

Maka dimungkinkan untuk merancang algoritma rekursif untuk secara simbolis membedakan kelas fungsi ini, menggunakan aturan standar kalkulus (misalnya, aturan rantai, dll.). Secara khusus, kami dapat menangani setiap kasus di atas, dan menunjukkan secara berulang bahwa turunan dapat diekspresikan secara simbolis sebagai fungsi dalam kelas ini. Contohnya:

  • Jika , F ( x ) = 0 .F(x)=cF(x)=0

  • Jika , F ( x ) = 1 .F(x)=xF(x)=1

  • Jika , F ( x ) = e x .F(x)=exF(x)=ex

  • Jika , F ( x ) = 1 / x .F(x)=log(x)F(x)=1/x

  • Jika , F ( x ) = cos ( x ) .F(x)=sin(x)F(x)=cos(x)

  • Jika , F ( x ) = 1 + ( tan ( x ) ) 2 .F(x)=tan(x)F(x)=1+(tan(x))2

  • Jika , F ( x ) = F 1 ( x ) + F 2 ( x ) .F(x)=F1(x)+F2(x)F(x)=F1(x)+F2(x)

  • Jika , F ( x ) = F 1 ( x ) F 2 ( x ) + F 1 ( x ) F 2 ( x ) .F(x)=F1(x)×F2(x)F(x)=F1(x)F2(x)+F1(x)F2(x)

  • Jika , F ( x ) = F 1 ( F 2 ( x ) ) F 2 ( x ) (aturan rantai).F(x)=F1(F2(x))F(x)=F1(F2(x))F2(x)

Dan seterusnya. Dalam setiap kasus, jika berada dalam kelas fungsi yang diizinkan, maka begitu juga F ( x ) , dan Anda dapat secara rekursif menyusun ekspresi simbolik untuk F ( x ) - ini dikenal sebagai diferensiasi simbolis .F(x)F(x)F(x)

Akhirnya, yang tersisa adalah memeriksa apakah untuk semua x . Itulah masalah yang saya sebutkan di bagian atas jawaban saya.F(x)=G(x)x


Ada metode sederhana untuk memeriksa apakah dua fungsi identik sama yang saya harapkan akan bekerja dengan baik dalam praktiknya. Algoritmanya adalah ini: berulang kali memilih nilai acak , dan periksa apakah F ( x ) = G ( x ) berlaku untuk nilai x tersebut . Jika itu berlaku dengan kesetaraan untuk banyak x yang dipilih secara acak , maka output "mereka sama identik". Jika Anda menemukan x yang F ( x ) G ( x ) , maka output "mereka berbeda".xF(x)=G(x)xxxF(x)G(x)

Tidak ada jaminan bahwa ini akan berhasil, tetapi untuk banyak kelas fungsi, output dari prosedur ini akan benar dengan probabilitas tinggi. Secara khusus, misalkan kita memiliki beberapa distribusi pada diwakili oleh variabel acak X dan beberapa ε > 0 sehingga Pr [ F ( X ) = 0 ] ε berlaku untuk semua F di kelas. Anggap pula kelas fungsi yang diizinkan ditutup dengan pengurangan (seperti kelas Anda). Maka r putaran prosedur di atas memberikan jawaban yang salah dengan probabilitas paling banyak (xXϵ>0Pr[F(X)=0]ϵFr .(1ϵ)r

Juga, jika ada prosedur acak untuk pengujian kesetaraan polinomial, maka masalahnya dapat diputuskan.

Tetap bertanya apakah hasil seperti itu berlaku untuk kelas fungsi khusus Anda. Pernyataan di atas mungkin tidak berlaku. Namun, jika kita beruntung, mungkin kita bisa membuktikan sesuatu seperti berikut:

sNXsϵs>0Pr[F(X)=0]Fs

Jika ini benar, maka akan mengikuti bahwa ada algoritma acak untuk pengujian kesetaraan polinomial dan dengan demikian masalah Anda dapat ditentukan.

DW
sumber