PyClient:SymPy 版

2017-03-03 :  PCクリニック
Python、C言語、Perl、グルコサミン、Firefox
前(2017-03-01)の記事「PyClient:curve_fit 版」に続いて、

SymPy を使いやすくするため、・・・・・

取り敢えずの“SUB_3.lua”の見直しを行った。

これまでの、一行コード用はそのままで、
複数行に対応する関数を追加。
これにおいては、SymPy変数の定義を可能にした。

名前は“SUB_4.lua”とした。
----- これは単純に書き直したダケ
function Py_SymPy( str_ ) -- 行の右辺のみ 用
local st=[[
from sympy import *
var('a:z')
SV=str(
]]
.. str_ ..
[[ )
]]
IT[0]=#st+1
Py.PyFun( 'Exec', IT, st, SV )
return ffi.string( SV )
end

----- これは追加分 -----
function Py_SymPy2( str_, ... ) -- 複数行 用
local pp = {...}
local st = [[
from sympy import *
var('a:z')
ans=symbols('ans')
ans='nil'
]]
if #pp == 1 then
local v = split( pp[1] )
for i=1,#v do
st = st .. fmt( '%s=symbols("%s");', v[i],v[i] )
end
end
st = st .. '\n' .. str_
.. [[
SV=str(ans)
]]
IT[0]=#st+1
Py.PyFun( 'Exec', IT, st, SV )
return ffi.string( SV )
end
以上が SymPy 用の部分。

これを使った例:
--------------- test_use_SUB_4_SymPy.gsl

require'SUB_4' -- IT[40], SV[4097] 定義済み
-------------------------------------

------------------ サンプル1
ss=Py_SymPy'diff( x**3+3*x**2+2, x, 1 )' -- 'x' で、1回微分
print( ss ) -- 3*x**2 + 6*x
----- SymPy 変数は1文字のみ( a ~ z )

------------------ サンプル4
st=[[
ff = 2 * xx ** 2 - kk * xx + 1
gg = diff(ff,xx,1) #
ans = str( gg.subs([(xx,0)]) )
]]
print( Py_SymPy2( st, ' xx kk ' ) ) -- 複数行用
----- SymPy 変数は1文字のみ( a ~ z ) 又は、ans(戻り文字列)
----- 及び、第2引数(文字列)で空白区切りで自由に指定
これで真の PyClient ???


本日はここまで。


PyClient ( Lua / GSL Shell) 学習は続く?


見ていただいた序でとは厚かましい限りですが、
お帰りに投票して頂けるとなお嬉しいです。 ⇒ blogram投票ボタン


170205
関連記事
スポンサーサイト

コメントの投稿

管理者にだけ表示を許可する

おきてがみ/blogram
blogram投票ボタン



おきてがみ

最新記事
カレンダー
03 | 2017/04 | 05
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
月別アーカイブ
カテゴリ
最新コメント
検索フォーム
リンク
プロフィール

<紙>

Author:<紙>
ようこそ。
「パソコンヲタクの雑記帳」
もろもろなことを綴っています。
パソコン ヲタクってねくら?
画像は kami でなく kani です。

カウンター(fc2、i2i) /Google Analytics


i2i(from 2010-08-24)
Total =
Today  =  
Yesterday=
アンチエイジング

Google Analytics
ブックマーク