タグ

Javaに関するTensorのブックマーク (78)

  • 第75回 計算量の数学 計算量と実際のコード その1 | gihyo.jp

    仕事をやり遂げるために必要な時間を見立てることが出来たら、次はその時間をいかに短縮するかを考えます。同じ仕事が短時間で出来るなら、それにこしたことはありません。余った時間で間違いがないかどうかの確認や、より品質を高めることが出来ます。 前回は、計算量O (n )のアルゴリズムの例としてリニアサーチを取り上げました。要素の数nの大きさに比例して、最悪検索時間が長くなります。今回は、リニアサーチよりも高速なバイナリサーチの計算量を求め、実際にコードを動かして速さの違いを実感しましょう。当に同じ仕事を、より短い時間で実行できるのでしょうか。 図75.1 同じ品質ならより速く 計算量:バイナリサーチの場合O (log2(n)) バイナリサーチ[1]とは、データの真ん中の値、すなわち中央値[2]を「とりあえず」チェックする方法です。データは整列済みで、小さい値から大きい値の順に並んでいます。目的の

    第75回 計算量の数学 計算量と実際のコード その1 | gihyo.jp
  • GlassFishからアプローチするJava~入門編~ 第1回「GlassFishとNetBeansのインストール」

    はじめに この連載では、「GlassFish」という製品を利用して、Java言語に親しんでもらうことを目的としています。第1回目の今回は、普段はあまり意識しない「アプリケーションサーバとは何か」に焦点を当て、アプリケーションサーバの役割を改めて学んでいきたいと思います。 対象読者 Javaでなにかしらのアプリケーションを作成したことのある方 Javaの変数の宣言や、if文・for文・while文の制御文を踏まえてアプリケーションを作成したことのある方 オブジェクト指向プログラミングができなくとも構いません。徐々に学んでいければと考えています。また、学びやすいWebアプリケーションをサンプルとするので、Webアプリケーションとは違った分野を勉強したい方には当連載は向いていません。 改めてアプリケーションサーバって何だろう GlassFishもアプリケーションサーバの1つです。最近では開発環境

    GlassFishからアプローチするJava~入門編~ 第1回「GlassFishとNetBeansのインストール」
  • はじめMath! Javaでコンピュータ数学:第74回 計算量の数学 計算量とは |gihyo.jp … 技術評論社

    バイキングで事をするとき、若い頃は何も考えずにお皿にどんどん乗せていました。少々無理に盛っても、気合いでべきっていました。元を取ってやろうとか、元以上にべてやろうとか、そんな不純な気持ちもありましたし。しかし、このごろ、油ものや炭水化物を控えめにし、更に皿の大きさから自分のべられる量に見当をつけて取るようになりました。べ残しをしたくない事もありますが、おなか周りの余剰財産をなんとか増やさないようにしたいのです。その思いはなかなか実らず、だぶついた財産は心肺機能を圧迫し続けています。 さて、見当を付ける、ということは何時でも大切なことです。しかし、プログラミングの初心者のうちは、見当の付けようが分からず、組んで動かしてみて初めてパフォーマンスの悪さに愕然としたりするものです。できるなら、コードを組む前に、少なくとも動かす前にはパフォーマンスの見当を付けたいものです。今回から学習する

    はじめMath! Javaでコンピュータ数学:第74回 計算量の数学 計算量とは |gihyo.jp … 技術評論社
  • 第70回 微分・積分の数学 数値微分 [中編] | gihyo.jp

    前回は前進差分、後退差分の式の導出を行いました。これらは十分に実用的な方法なのですが、更に高い精度を求めたい場合もあるでしょう。今回は、前進差分や後退差分より誤差を小さくできる「中心差分」と、数値微分を行う場合の「微少な量」の決定の仕方を紹介します。 中心差分 中心差分[1]は、図70.1のように、差分近似を求めたい位置 x の前後 x-h と x+h を取り、関数の描くグラフ上の2つの点をつなげた直線の傾きを、求める微分の近似値とする方法です。この直線の傾きは、前進差分や後退差分の直線と比較して、注目する位置xでの関数の接線の傾きにより近いように見えます。実際に誤差が小さいことを、式を導出することで確認できます。 図70.1 中心差分とは 中心差分の式は、前回導いた式69.5と69.14から、以下のように導きます。誤差のオーダーを再確認するために、 O(h2) はもともとの形にもどします

    第70回 微分・積分の数学 数値微分 [中編] | gihyo.jp
  • 第71回 微分・積分の数学 差分法 [後編] | gihyo.jp

    これまで、数値微分の方法を紹介してきました。今回は、そのまとめとして実際にコンピュータに計算させましょう。 問題 関数を数値微分するプログラムを作りましょう。 前進差分と中心差分それぞれの場合で求めましょう。その際、導関数から求めた値と並べて出力させてください。 解説 問題 関数を数値微分するプログラムを作りましょう。 先ずは、解析的に求めた導関数の式を示します。 (1)はともかく、(⁠2)はいやですよね。こんなのは、導出が正しいかどうか不安でしようがありません。数値計算で求めた値が使えるなら、そうさせていただきたいところです。 それでは早速、前進差分と中心差分を適用してみましょう。微少な量hは前回検討した結果を用いて、前進差分では2-26、中心差分では2-52を用いて実行してみましょう。 ソースコード:Forward CentralDifference01.java 01: class

    第71回 微分・積分の数学 差分法 [後編] | gihyo.jp
  • 第72回 微分・積分の数学 数値積分 区分求積法・台形公式[前編] | gihyo.jp

    火の通りにくい野菜は、二つ、三つに切ってから鍋に入れます。ゴボウなど、硬いものは細くささがけにします。キャベツも生でサラダにするときには、消化の良いように千切りに。大きいままではべにくい材も、細かく切ればおいしくべられます。 今回から学習する数値積分は、まさにそんな手段です。かなり強引な例えでしょうか?いえいえ、数々の公式やテクニックを駆使しないと積分できない関数に対面したり、大量の連続データを目の前に呆然と立ちつくしているならば、コンピュータのパワーでまさに「みじん切り」にして、お望みの結果を手に入れることが出来るのです。おいしい数値積分を、さあ、召し上がれ。 図72.1 硬い野菜は小さく切って煮込む 数値積分とは 数値積分[1]とは、積分公式を用いず、与えられた関数そのままで、関数の描く曲線で囲まれた面積の近似値を求める方法です。面積を求める、という部分に注目して、数値的求積法と

    第72回 微分・積分の数学 数値積分 区分求積法・台形公式[前編] | gihyo.jp
  • 第73回 微分・積分の数学 数値積分 区分求積法・台形公式[後編] | gihyo.jp

    前回の問題で取り組んだ、Java言語で数値積分するプログラム例を紹介します。少々長くなりましたから、JavaDocを利用してドキュメントを出力出来るようにしておきました。先ずはこのソースコードをエディタにコピーして、後で紹介するバッチファイルを実行してJavaDocを生成させてください。 ドキュメントは、ソースコードを保存したディレクトリ内に作られるjavadocディレクトリ内にあります。index.htmlをダブルクリックするとブラウザに表示されますので、こちらを読むと構成がわかりやすいでしょう。 なお、プログラムの実行時には、アサーションを利用していますので、-eaオプションを忘れずに指定しましょう。 解説 問題 関数を数値積分するプログラムを作りましょう。 前回、手で計算した結果を活かしながら、数値積分の結果を検証するプログラムを作りましょう。以下はその一例です。 ソースコード:Te

    第73回 微分・積分の数学 数値積分 区分求積法・台形公式[後編] | gihyo.jp
  • 第69回 微分・積分の数学 数値微分 [前編] | gihyo.jp

    料理レシピを読んでいて困るのが「○○を少々」という表現です。量りで量れないようなわずかな分量だから「少々」と書くのです。材料が元々含む塩分や、好みによってこの「少々」が変動することはよく分かります。でも、困るのです。経験の浅い私は臆病になって「ほーんのちょっぴり」になってしまったり、加減が分からなくて「入れすぎ」になったりします。結果、妙に味のないスープになってしまったり、辛くて思わずしかめっ面したくなるような野菜炒めになってしまったり。「⁠少々」というのは難しいものですね。「⁠さじ加減」をしながら、だんだん上手になりたいものです。それまでは、おおよその加減で「おいしい」と思えれば、それで良しとするのが精神衛生上も良いのでしょう。 これから紹介する数値微分は、まさしくそのような手段です。「⁠出来ないよりは、役に立つ程度に出来ればOK」そんなツールです。どうです?興味がわいたことでしょう。

    第69回 微分・積分の数学 数値微分 [前編] | gihyo.jp
  • 第68回 微分・積分の数学 ニュートン・ラフソン法 [後編] | gihyo.jp

    前回紹介したニュートン・ラフソン法を利用して、方程式の解を求めてみましょう。練習問題ですから、シンプルで、手でも計算が可能な方程式を取り上げます。問題の方程式を因数分解をするとわかりますが、解は重解で1つのみです。数値計算して得た結果と、因数分解して得た結果がどれだけ一致しているか、それを確認してみましょう。 問題 ニュートン・ラフソン法で4x2+12x+9=0 の解を求めましょう。 前回の例題で紹介したソースコードを編集して、問題の方程式のためのプログラムを作成しましょう。変更が必要なのは、作成した漸化式を表すコードの部分だけです。漸化式さえコードにしてしまえば終わりの簡単な課題ではつまりませんので、もうひと味。方程式の真の値を手で計算しておいて、真の値とニュートン・ラフソン法で得た値との差を最後に表示してみましょう。 解説 問題 ニュートン・ラフソン法で4x2+12x+9=0 の解を求

    第68回 微分・積分の数学 ニュートン・ラフソン法 [後編] | gihyo.jp
  • 【ハウツー】JavaとHTMLだけでWebアプリケーションを作る「Apache Wicket」 (1) Apache Wicketとは | エンタープライズ | マイコミジャーナル

    Apache WicketはオープンソースのJava Webアプリケーションフレームワークのひとつである。Java用のWebアプリケーションフレームワークは多数存在するが、Wicketが特徴的なのは、XMLなどによる設定ファイルを排除し、ほぼHTMLJavaのコードだけでWebアプリケーションが作成できるようになっている点だ。それも画面デザインとロジックを明確に分離し、デザインのためのマークアップとJavaのコードを混ぜて記述する必要がないように作られている。 Wicketを使えば、モデル定義も画面遷移もすべてJavaのコードで書くことができる。複雑なXMLに気を煩わせる必要はない。その上、Wicketで利用するオブジェクトはコンテナで制御されるのではないため、プログラマが自由に扱うことができる。ページデザインのためのHTMLにしても、JSPのような特別なコードをいっさい必要としない。そ

  • 第67回 微分・積分の数学 ニュートン・ラフソン法 [前編] | gihyo.jp

    離れたところに飛んでくるテニスボールに対して、プレイヤーは先ず大股で駆け寄ります。ボールの落下点が近くなったら次第にステップを小刻みに、いよいよと言うところではすり足、そして最後の一歩を大きく踏み出してインパクト。 かつてソフトテニス部の副顧問をしていた時、この練習を見ていてニュートン・ラフソン法を思い出しました。人間はこのような動作アルゴリズムを練習で身につければ、ほぼ無意識に実行し、ボールとラケットのインパクトという1つの解を得ます。人間の身体コントロール能力というのは、当に素晴らしいものだと感じます。 今回学習するのは、微分とコンピュータを活用した方程式の近似解法です。原理は大変シンプルですから、気負わずに取り組んでください。そう。力んでラケットを振ると、空振りするのと同じだと思って。 図67.1 目的に向けて的確に歩みをすすめる ニュートン・ラフソン法とは ニュートン・ラフソン法

    第67回 微分・積分の数学 ニュートン・ラフソン法 [前編] | gihyo.jp
  • 第66回 微分・積分の数学 微分・積分とは | gihyo.jp

    微分・積分というと、日常生活には全く縁がないもの、と思われがちではないでしょうか。しかし、「⁠速さ」「⁠加速」あるいは「減速⁠」⁠、そして「移動距離」などと、歩いたり走ったり、自転車や自動車に乗っていれば、誰もが当たり前に使うこれらの言葉、考え方は、微分・積分と密接な関係があります。微分・積分は、私たちの日常生活に関わりが深い数学です。 しかし、例えば「エンジンの仕組みを知らなければ車に乗ることはできない」とか、「⁠電気信号の処理方法を知らなければ電話をかけられない」なんてことはありません。むしろ、そんなことを意識しないで使えるからよいのです。でも、この記事に関心を持ってくださったあなたは、きっと「もう一歩突っ込んでみたい」という気持ちがあるはずです。ただ便利に使うだけではもったいない、と思うからこそ、数学やプログラミングに関心がおありのはず。コンピュータの助けを借りて、微分・積分をより便

    第66回 微分・積分の数学 微分・積分とは | gihyo.jp
  • 第6回 XMLの扱い方

    今回は,商品一覧を表示する簡単なツールの作成を通じて,データ表現形式の主流になりつつあるXMLファイルをJavaでどう扱うかを見ていくことにします。多くの場面で使われるXMLファイルの扱い方を覚えれば,仕事の幅も広がること間違いなしです。 皆さんこんにちは,kikainekoです。この連載では,日々の定型的な業務をJavaで自動化してラクする方法を紹介しています。前回は,Wordファイルの扱い方を説明してきました。Javaによるファイル操作には,ずいぶん慣れてきたのではないでしょうか。 今回は,データ表現形式の主流と言っても過言ではないXMLファイルを取り上げます。XMLで記述されたファイルを,Javaからどのように操作するかを一緒に学びましょう! XMLファイルを操作するといっても,特に身構える必要はありません。実は,皆さんの周りにはすでにXMLで記述された文書が数多く存在しています。例

    第6回 XMLの扱い方
  • 第65回 統計の数学 相関係数を導く[後編] | gihyo.jp

    前回は相関係数を導く準備として、統計の数学を用いて回帰直線の式を導きました。今回は前回で準備した要素をもとに、最終的に相関係数を導きます。どうして相関係数というものが登場したかがわかる、小説に例えれば主人公の登場秘話のクライマックスといったところでしょうか。 決定係数 回帰直線の一次式の定数が求まりましたから、回帰直線の式と測定値の間の関係の強さを評価する方法が欲しくなりました。そこで、回帰直線の式によって得られた値の分散と、測定値の分散が近ければ、関係が強いと評価することにします。そのような式を導き出してみましょう。 測定値の集合に、最も良くあてはまる回帰直線が得られたとして、各xi に対応するyの値を(推定値)と書くことにします。 (65.1)-(64.27) ここで、を見てみましょう。 この式の総和部分の第2項は式65.2を代入して推定値を消去できます。 こうして、式65.5の第2項

    第65回 統計の数学 相関係数を導く[後編] | gihyo.jp
  • 第64回 統計の数学 相関係数を導く [前編] | gihyo.jp

    前回は相関係数とは何か、大変大雑把に紹介し、計算手順をJava言語で実装、テストするところまで行いました。今回は、相関係数というものがどういう筋道で導かれたものなのか、丁寧に追っていきます。途中の数式を極力省かずにたどります。全て高校数学までの内容です。 今回、そして次回の前後編は、まるっきり数学ばかりです。⁠”Javaでコンピュータ数学⁠”の看板に偽りあり?とおっしゃらず、だまされたと思って取り組んでみてください。プログラミングを専門としていれば、少なからず「効率の良い計算」を必要とする場面があります。すると、そのときに使う数学は、ちょうど今回出てくるような「合計」や「平均」と似た操作を上手に組み合わせることが多いのです。コンピュータは「単純なんだけれども、人の手と頭ではとても処理できないような、たくさんのデータを処理すること」が最も得意な機械だからです。 これから出てくる、「⁠数式のこ

    第64回 統計の数学 相関係数を導く [前編] | gihyo.jp
  • 第63回 統計の数学 相関係数とは[後編] | gihyo.jp

    前回は相関係数の計算方法を紹介しました。今回は、相関係数の計算手順をJava言語のプログラムとして書き表すことに挑戦してみましょう。 問題 CSVファイルのデータを読み込み、相関係数を計算するプログラムを作りましょう。 第61回の問題で作成したコードに、相関係数を計算するコードを加えましょう。それだけでは退屈ですから、コマンドライン引数でデータファイルを指定し、指定されたファイルを読み込んで処理するプログラムに変更してください。なに、ほんのちょっとした変更だけで済みます。⁠”Java コマンドライン 引数⁠”としてGoogleで検索すれば、たくさんのサンプルが表示されるでしょう。それらから盗み取って作成してください。 解説 問題 CSVファイルのデータを読み込み、相関係数を計算するプログラムを作りましょう。 計算に用いたデータファイルdata001.csvも前回と同じものを用いましょう。

    第63回 統計の数学 相関係数とは[後編] | gihyo.jp
  • JavaとPythonで開発可能 企業内データとの連係も

    Google検索サービスのインフラストラクチャを基盤にした「Google App Engine」。各種ライブラリやアプリケーション・フレームワークが提供される。データを永続的に保管するサービスがあり,それをデータベースのように利用可能。その一方で,「リクエストの処理は30秒以内」といった制約がある。 米Googleが提供する「Google App Engine(以下,GAE)」は,Webアプリケーションの開発・実行環境を提供するサービスです。基的にはGoogle検索サービスと同じシステム基盤なので,スケーラビリティに優れた実行環境であるといえるでしょう。GAEの上でアプリケーションを開発する際,何がポイントとなるのでしょうか。その基を,今回と次回の2回に分けて解説します。 今回はGAEの概要編で,まずGAEの全体像を説明します。そのうえで,開発の手続きと環境,提供されるライブラリとフレ

    JavaとPythonで開発可能 企業内データとの連係も
  • 第62回 統計の数学 相関係数とは [前編] | gihyo.jp

    「大風がふけば桶屋がもうかる」とか「バタフライ効果」だとか、物事・出来事は関連を持って存在するものだと考えられています。ただ、それらの関連を明確に表現する方法が無いために、カンや推測で判断せざるを得ないことが多いですね。 スポーツの世界でも、真剣な勝負であるほど、ある攻撃を仕掛けたときに相手がどのような反応を示すか、というデータを集めて分析し、次の試合に備えます。あるプレーに対して、相手がどう対応する傾向が強いか、それを知ることが出来ればこんな有利なことはありません。もちろん、スポーツには即応性が要求されますから、最後の瞬間は能に頼るのですが。しかし、データのバックアップがあるのと無いのとでは、大きな違いです。 今回学習する内容は、一対一に対応するデータの集合について、線形な関係があるかどうかを数値で評価する方法についてです。数値化することで比較が可能になります。統計の数学の学習の終わり

    第62回 統計の数学 相関係数とは [前編] | gihyo.jp
  • SQLiteJDBC

    SQLiteJDBC is a Java JDBC driver for SQLite. It runs using either a native code library 100% Pure Java driver based on NestedVM emulation. Both the pure driver and the native binaries for Windows, Mac OS X, and Linux x86 have been combined into a single jar file.

  • https://xerial.org/trac/Xerial/wiki/SQLiteJDBC