Kalkulator karakter dalam C #

Entah bagaimana saya membutuhkan perpustakaan di c #, yang dapat melakukan perhitungan simbolik (dari waktu ke waktu saya menambah kemampuan satu program matematika). Kode sumber apa pun di jaringan dapat ditemukan dalam berbagai bahasa, tetapi tidak mungkin menemukan sesuatu yang lebih sederhana dan lebih mudah dipahami. Dia menarik perhatian ke Jasymca (Java Symbolic Calculator) .

Tantangan


Untuk mengimplementasikan analog dari blok odesolve Mathcad di SMath Studio, perlu untuk menyelesaikan persamaan untuk turunannya. Tidak ada batasan khusus pada sistem ODE yang dapat dipecahkan. Apa yang ditetapkan pengguna dalam bentuk yang relatif arbitrer harus dikonversi ke bentuk yang nyaman untuk solusi numerik ODE. Seharusnya terlihat seperti ini:



Mengatasi kemungkinan bahasa c # ternyata sulit bagi saya di sini dalam kasus umum. Bantuan mesin karakter tidak ada salahnya.

Konversi Sumber


Saya melihat kode sumber untuk applet. Tampaknya tidak terlalu menakutkan, tetapi Anda memerlukan konverter Java di c #. Pada saat saya baru mulai melakukan ini, saya menemukan satu atau lebih sumber daya online yang berfungsi, yang saya tidak ingat sekarang. Sepertinya itu adalah sumber daya dari Tangible Software Solutions, as komentar dalam kode sumber mirip dengan yang dibuat oleh konverter saat ini sebagai program.
Semuanya baik, tetapi satu hal buruk. Sumber daya dikonversi secara gratis hanya ukuran sumber terbatas. Batas sebenarnya pada jumlah garis. Sangat aneh, saya pikir, dan membutakan semua konten dalam satu file dalam satu baris. Kemudian saya mengkonversi sumber baris tunggal ke c # setara dengan gratis dan mengembalikannya ke normal di Visual Studio menggunakan pemformatan otomatis.

Finalisasi file


Tidak perlu dikatakan, konverter otomatis dikonversi untuk sebagian besar formulir, tetapi dengan konten yang Anda masih perlu bekerja. Pada saat itu, saya menyadari bahwa saya jelas tidak memiliki level yang cukup dalam kedua bahasa untuk menyelesaikan semua masalah kompilasi. Waktu berlalu, John Skeet yang dipuja. Kawan Skeet menanamkan tekad.

Dalam proses perjuangan untuk kompilasi, konverter memanggil dengan kata yang baik. Dia melakukan hampir semua pekerjaan yang membosankan. Dia tidak hanya menguasai bagian matematika di beberapa titik. Itu menyangkut kelas besar JMath. Mengubah representasi ganda menjadi hex dan sebaliknya dinyatakan dalam beberapa kasus dengan pembatasan pada BitConverter.Int64BitsToDouble () metode, yang tidak bekerja dengan beberapa konstanta panjang yang tidak ditandatangani, misalnya, -0 ( 0x800000000000000000 ). Di sini sekali lagi, Kawan Skeet datang untuk menyelamatkan, bukan tanpa bantuan siapa kami berhasil menyajikan nilai ini sebagai 1,0 / dobel. Negatif Asli. Secara umum, ini aritmatika dari "sangat kecil" masih menghantui saya, karena Saya tidak yakin dengan interpretasi yang benar dari semua yang ada dalam pikiran penulis Jasymca.

Setelah memperbaiki beberapa kesalahan semantik, mengganti pekerjaan dengan tipe dan instansnya, dan menambahkan antarmuka konsol, kami berhasil memulai proyek ini. Saya sudah lama ingin melihat dapur dalam program simbolis tersebut. Symbolic C ++ adalah satu hal dan Java atau C # adalah hal lain. Ambang entri jauh lebih rendah.

Pada saat penulisan, kalkulator terlihat seperti ini:



File yang dapat dieksekusi tersedia di repositori . Membutuhkan .Net 2.0. Ada ketergantungan pada LinqBridge untuk Linq untuk bekerja di. Net 2.0 (perpustakaan terpasang di sana).

Hampir semuanya berfungsi dari dokumentasi penulis Jasymca. Pengecualian bekerja dengan grafik, mis. merencanakan fungsi. Saya pikir akan lebih mudah untuk menulis bagian ini lagi daripada ke port. Fungsi yang tergantung pada perpustakaan pihak ketiga (LAPACK, dll.) Tidak termasuk. Ada juga gangguan yang akan dihapus dari waktu ke waktu.

Kesimpulan


Proyek ini dibuat untuk pecinta matematika simbolik. Jika diinginkan, dapat dibawa ke perpustakaan dan digunakan dalam proyek Anda sendiri di mana matematika numerik atau simbolik sederhana diperlukan: bekerja dengan bilangan kompleks, integrasi, diferensiasi, menyelesaikan persamaan, dll. Penulis Jasymca memposisikan program sebagai alat pelatihan bagi mereka yang ingin membuat program mereka sendiri melakukan perhitungan simbolis:
Jasymca telah dikembangkan untuk mengajar matematika, terutama untuk memfasilitasi pintu masuk yang cepat dan mudah ke matematika komputer. Salah satu kendala utama adalah kalkulator saku, yang mencegah banyak siswa menggunakan komputer untuk matematika. Kalkulator saku murah dan portabel, sementara program CAS sering mahal dan selalu membutuhkan setidaknya laptop untuk dijalankan. Jasymca adalah perangkat lunak gratis dan berjalan di hampir semua sistem yang dilengkapi dengan mikroprosesor: dari ponsel dan pdas ke komputer windows / linux / macos, bahkan di konsol game atau router internet.
Saya harap versi c # dari kode sumber akan berguna dalam sesuatu untuk Anda juga.

Referensi


1. Jasymca (Java Symbolic Calculator) .
2. Sumber Jasymca (zip) .
3. Jasymca 2.0 - Kalkulator Simbolik untuk Java (Manual, pdf) .
4. Tinjauan umum perpustakaan Java tersebut .
5. Repositori proyek .

Source: https://habr.com/ru/post/id439656/


All Articles