理系学生のぼんやり日記

色々なことに挑戦してます!

英会話

Pythonって??2

こんばんは!

これから、毎日コーナーを設けようかなと思います。

それは…..

「今日はなんの日?」です。 まあ、雑学程度に、お昼のランチにでも話題に出してください笑

今日は1971年 に アメリカの有人月宇宙船アポロ15号が地球に帰還した日です。月へはこのアポロ以外は行っていないですよね。宇宙技術は進化し続けていると思うのですが、やはり宇宙は神の領域なのでしょうか?昔は宇宙にめっちゃ興味を持っていたのですが、いつのまにか土木技術者になりましたw

それでは、Pythonに戻ります^ - ^

昨日はPythonのすごいところ!!について書きましたが、今日も引き続きそれについて書きたいと思います。

Pythonには強力なフレームワークがあり、面倒なforループなどを省略でき、スムーズに演算ができます。

また、数値解析にはもってこいで、微分方程式なども科学計算用パッケージのScipyやNumpyを使えば、一瞬で解くことができるので、Fortranで数十行かかってた演算プログラムを数行で済ますことができるのはかなりすごいところだと思います。

2次方程式の例を挙げて比較して見ましょう!

C言語

#include

#include

int main(void)

{

/* 2次方程式の定数 */

float a, b, c;

/* 判別式 */

float discriminant;

/* 2次方程式の解 */

float kai1, kai2;

/* 解が複素数を含む場合 */

float real, imag;

/* 2次方程式の定数を入力 */

printf("2次方程式の定数を入力してください。\n");

printf("a = ");

scanf("%f", &a);

printf("b = ");

scanf("%f", &b);

printf("c = ");

scanf("%f", &c);

/* 判別式を計算 */

discriminant = b * b - 4 * a * c;

/* 判別式に数値による条件分岐 *

if ( discriminant > 0 ) {

// 解の計算

kai1 = ( -b + sqrt(discriminant) ) / (2*a) ;

kai2 = ( -b - sqrt(discriminant) ) / (2*a);

// 解の出力

printf("2次方程式の解: x = %.2f, %.2f\n", kai1, kai2);

} else if ( discriminant == 0 ) {

// 解の計算

kai1 = kai2 = -b / ( 2 * a );

// 解の出力

printf("2次方程式の解: x = %.2f, %.2f\n", kai1, kai2);

} else {

// 解の計算

real = -b / (2*a);

imag = sqrt(-discriminant) / (2*a);

// 解の出力

printf("2次方程式の解: %.2f+%.2fi, %.2f-%.2fi\n", real, imag, real, imag);

}

return 0;

}

Python

# -*- coding utf-8 -*-

# 二次方程式

from math import sqrt

 

print u'二次方程式の係数を入れてください'

a = input('a? ')

b = input('b? ')

c = input('c? ')

d = b * b - 4 * a * c

if a == 0:

if b == 0:

print u'解がありません'

else:

print u'a = 0 なので一次方程式です'

print u'解は', -float(c)/b, u'です'

elif d < 0:

print u'実数解はありません'

elif d == 0:

print u'解は', -float(b)/(2*a), u'です'

else:

e = sqrt(d)

x1 = (-b + e)/(2*a)

x2 = (-b - e)/(2*a)

print u'解は', x1, u'と', x2, u'

どうでしょうか?

めっちゃpythonのプログラムって簡略だと思いませんか?

技術者はどこまでも数学と付き合っていく必要があります。そのため、私がC言語を選択しなかった理由はかっこの多さが嫌で、めんどくさいと思ったからです。

pythonはカッコの数が少ないので、とっても楽でいいと感じています。

最後まで読んでくださり、ありがとうございます。

それでは、また明日!!

英会話