Sayısal hesaplama ya da diğer adıyla nümerik analiz, uygulamalı matematiğin önemli bir dalıdır. Matematiğin
analitik çözüm üretemediği veya üretilen çözümün uygulama açısından yüksek hesaplama karmaşıklığına sahip
olduğu durumlarda sayısal yöntemler kullanılır. Bu makalede, sayısal yöntemlerin programlanabilmesini
sağlayan bir programlama dilinin tasarımı yapılmış ve bu dilde yazılan kaynak kodun değerlendirmesini
yapabilen bir yorumlayıcı geliştirilmiştir. Dilin sözdizimi BNF (Backus Naur Form) notasyonunda tanımlanan
bir LL(k) grameri ile temsil edilmiştir. Yorumlayıcı, her biri kodun farklı türden yorumlamasını yapan ayrıştırıcı,
anlamsal denetleyici, simgesel türev alıcı ve kod değerlendirici gibi birkaç temel bileşenden oluşmaktadır. Dilin
sözdizim analizi için kullanılan LL(k) ayrıştırıcı bileşeni, otomatik kod üretim aracı olan JavaCC yardımıyla
üretilmiştir. Diğer bileşenler bu ayrıştırıcının oluşturduğu soyut sözdizim ağacı üzerinde çalışmaktadır. Dilin
kullanımına yönelik olarak, birkaç sayısal kök bulma yönteminin programlaması ve yorumlaması gösterilmiştir.
Bazı popüler diller ile dil metriklerine dayalı bir karşılaştırma yapılmış ve koşum zamanları değerlendirilmiştir.
Numerical calculation, or, in other words, numerical analysis, is an important branch of applied mathematics.
Numerical methods are used where mathematics can not produce an analytical solution or the generated solution
has high computational complexity. In this article, a programming language that allows numerical methods to be
programmed is designed and an interpreter, which can evaluate the source code written in this language, is
developed. The language syntax is represented by an LL(k) grammar defined in the BNF (Backus Naur Form)
notation. The interpreter consists of several basic components such as parser, semantic controller, symbolic
derivator and code evaluator, each of which makes a different kind of code interpretation. The LL(k) parser
component used for the syntactic analysis of the language is generated via JavaCC, an automatic code generation
tool. The other components work on the abstract syntactic tree that this parser generates. For the use of the
language, the programming and interpretation of several numerical root finding methods are demonstrated. A
comparison is made with some populer languages based on language metrics and the running time is evaluated.
Primary Language | Turkish |
---|---|
Subjects | Engineering |
Journal Section | Articles |
Authors | |
Publication Date | January 31, 2019 |
Published in Issue | Year 2019 |