関連情報
ホーム > 製品 > NAG数値計算ライブラリ > C#向けNAGライブラリ > サンプルソースコード集 > 複素数zのエアリー関数 Ai(z)と導関数 Ai'(z)

C#による 複素数zのエアリー関数 Ai(z)と導関数 Ai'(z)

C#によるサンプルソースコード
使用関数名:s17dg

Keyword: エアリー関数, 導関数, 複素数

概要

本サンプルはエアリー関数 Ai(z)あるいはその導関数 Ai'(z)を求めるC#によるサンプルプログラムです。 本サンプルは複素数の引数zを読み込み、zの各値についてエアリー関数 Ai(z)あるいはその導関数 Ai'(z)を求めて出力します。

※本サンプルはNAG Library for .NETに含まれる関数 s17dg() のExampleコードです。本サンプル及び関数の詳細情報は s17dg のマニュアルページをご参照ください。
ご相談やお問い合わせはこちらまで

入力データ

(本関数の詳細はs17dg のマニュアルページを参照)

このデータをダウンロード
s17dg Example Program Data
 'F'   ( 0.3,  0.4)    'U'
 'F'   ( 0.2,  0.0)    'U'
 'F'   ( 1.1, -6.6)    'U'
 'F'   ( 1.1, -6.6)    'S'
 'D'   (-1.0,  0.0)    'U' 

  • 1行目はタイトル行で読み飛ばされます。
  • 2〜6行目に求めるのは関数か導関数かを示すフラグ(deriv)、複素数の引数zの値、スケーリングオプション(scal)を指定しています。"F"はエアリー関数Ai(z)、"D"はエアリー関数の導関数Ai'(z)を意味します。また、 "U"はスケーリングをしないことを意味し、 "S"はスケーリングすることを意味します。

出力結果

(本関数の詳細はs17dg のマニュアルページを参照)

この出力例をダウンロード
s17dg Example Program Results

 deriv           z            scal          ai            nz     ifail

  F     (  0.3000, 0.4000)     U    (  0.2716, -0.1002)    0      0
  F     (  0.2000, 0.0000)     U    (  0.3037,  0.0000)    0      0
  F     (  1.1000,-6.6000)     U    (-43.6632,-47.9030)    0      0
  F     (  1.1000,-6.6000)     S    (  0.1655,  0.0597)    0      0
  D     ( -1.0000, 0.0000)     U    ( -0.0102,  0.0000)    0      0

  • 5〜9行目には求めるのは関数か導関数かを示すフラグ、引数zの値、スケーリングオプション、エアリー関数または導関数の値、エアリー関数または導関数の値がアンダーフローによりゼロにセットされたかどうかを示すフラグ、エラーコードが出力されています。nz の"0"はゼロにセットされていないことを意味します。

ソースコード

(本関数の詳細はs17dg のマニュアルページを参照)

※本サンプルソースコードは .NET環境用の科学技術・統計計算ライブラリである「NAG Library for .NET」の関数を呼び出します。
サンプルのコンパイル及び実行方法


このソースコードをダウンロード
//      s17dg Example Program Text
//      C# version, NAG Copyright 2008
using System;
using NagLibrary;
namespace NagDotNetExamples
{
  public class S17DGE
  {
    static bool defaultdata = true;
    static string datafile = "";
    static void Main(String[] args)
    {
      if (args.Length == 1)
      {
        defaultdata = false;
        datafile = args[0];
      }
      StartExample();
    }
    public static void StartExample()
    {
      try
      {
        PrintManager.Warning = new PrintManager.MessageLogger(discardmessage);
        DataReader sr = null;
        if (defaultdata)
        {
          sr = new DataReader("exampledata/s17dge.d");
        }
        else
        {
          sr = new DataReader(datafile);
        }
        Complex ai = new Complex(0.0, 0.0), z = new Complex(0.0, 0.0);
        double xxx = ai.re;
        int nz = 0;
        string deriv = "",
        scal = "";
        int ifail;
        Console.WriteLine("s17dg Example Program Results");
        //      Skip heading in data file
        sr.Reset();
        Console.WriteLine("");
        Console.WriteLine(" {0}", "deriv           z            scal          ai            nz     ifail");
        Console.WriteLine("");
        try
        {
          while (true)
          {
            sr.Reset();
            deriv = sr.Next();
            z = Complex.Parse(sr.Next());
            scal = sr.Next();
            // 
            S.s17dg(deriv, z, scal, out ai, out nz, out ifail);
            // 
            string formattedZ = String.Format("({0,8:f4},{1,7:f4})", z.re, z.im);
            string formattedAI = String.Format("({0,8:f4},{1,8:f4})", ai.re, ai.im);
            if (ifail >= 0)
            {
              Console.WriteLine("  {0,-5} {1}{2,6}    {3,8}{4,5}{5,7}", deriv, formattedZ, scal, formattedAI, nz, ifail);
            }
            else
            {
              Console.WriteLine("** s17dg failed with ifail = {0,5}", ifail);
            }
          }
        }
        catch
        {
        }
        // 
      }
      catch (Exception e)
      {
        Console.WriteLine(e.Message);
        Console.WriteLine("Exception Raised");
      }
    }
    static void discardmessage(String message)
    {
    }
  }
}


Results matter. Trust NAG.

Privacy Policy | Trademarks