ホームページ  >  記事  >  バックエンド開発  >  Python は数学的モデリングに使用できますか?

Python は数学的モデリングに使用できますか?

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼オリジナル
2019-06-18 13:48:3018289ブラウズ

数理モデリングでは MATLAB を使っている人が多いですが、MATLAB は本格的なコンピュータ プログラミング言語ではなく、動作が遅く、有料であり、最も耐えられないのは、MATLAB エディターが自動コード補完をサポートしていないことです。 Python は数学的モデリングに非常に適した選択肢です。 Python には、numpy、scipy、matplotlib という 3 つの非常に有名な科学計算ライブラリがあり、これら 3 つは基本的に MATLAB の関数を置き換えるものであり、数学的モデリング タスクを完全に処理できます。

Python は数学的モデリングに使用できますか?

# 数学的モデリングを解く Python の例をいくつか示します。

#線形計画問題の最大問題と最小問題を見つける

max: z = 4x1 + 3x2
st:      2x1 + 3x2<=10
           x1 + x2 <=8
           x2 <= 7
           x1,x2 > 0
from scipy.optimize import linprog
c = [4,3]        #默认linprog求解的是最小值,若求最大值,此处c取反即可得到最大值的相反数。
A = [[2,3],[1,1]]
b = [10,8]
x1_bounds = [0,None]
x2_bounds =[0,7]
res = linprog(c,A,b,bounds=(x1_bounds,x2_bounds))

関連する推奨事項: 「

Python ビデオ チュートリアル

多項式の最小二乗曲線フィッティング

import numpy as np
import matplotlib.pyplot as plt
x = np.arange(1990,1997,1)
y = np.array([70 ,122 ,144 ,152, 174, 196, 202])
z1 = ployfit(x,y,1)  #之前画过原始数据,数据走向为ax+b类型。故采用一次多项式拟合
p1 = np.ploy1d(z1)
yvalue = p1(x)
plt.plot(x,y,&#39;*&#39;,label = &#39;原始数据&#39;)
plt.plot(z1,yvalue,label = &#39;拟合曲线&#39;)
plt.xlabel(&#39;x axis&#39;)
plt.ylabel(&#39;y axis&#39;)
plt.legend(loc = 4 )
plt.tittle(&#39;多项式拟合&#39;)
plt.show()

式を見つける導関数

from __future__ import print_function
from __future__ import division
import numpy as np
import scipy as sp
import scipy.misc
 
def f(x): return 2*x*x + 3*x + 1
print(sp.misc.derivative(f, 2))

不定積分を求める

from __future__ import print_function
from __future__ import division
import numpy as np
import scipy as sp
import scipy.integrate
 
f = lambda x : x**2
print(sp.integrate.quad(f, 0, 2))
print(sp.integrate.fixed_quad(f, 0, 2))

非線形方程式系を解く

from __future__ import print_function
from __future__ import division
import numpy as np
import scipy as sp
import scipy.optimize
 
def f(x):
    return [5*x[1] + 3, 4*x[0]*x[0], x[1]*x[2] - 1.5]
ans = sp.optimize.fsolve(f, [0, 0, 0])
print(ans)
print(f(ans))

連立一次方程式を解く

from __future__ import print_function
from __future__ import division
import numpy as np
import scipy as sp
import matplotlib.pylab as plt
import scipy.linalg
 
a = np.array([[1, 3, 5], [2, 5, 1], [2, 3, 8]])
b = np.array([10, 8, 3])
print(sp.linalg.solve(a, b))
# print(sp.linalg.inv(a).dot(b))

以上がPython は数学的モデリングに使用できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。