Base integration with user apps

This commit is contained in:
anwinged
2012-04-10 07:28:46 +00:00
parent 5e70da47dd
commit c7b38a6506
5 changed files with 190 additions and 72 deletions

View File

@ -4,7 +4,7 @@
"models": {
"simpleexample": {
"sintaylor": {
"title": "Simple model for example",
"author": "Anton Vakhrushev",
@ -14,20 +14,21 @@
"params": {
"x": {
"type": "int",
"default": 10,
"title": "Main parameter"
"r": {
"type": "double",
"default": 6.28,
"comment": "Right edge"
},
"u": {
"type": "double",
"default": 3.14
"d": {
"type": "int",
"default": 5,
"comment": "Number of members in taylor serie"
},
"n": {
"type": "int",
"default": 1000,
"default": 10,
"title": "Steps",
"comment": "Number of steps for algorithm"
}

View File

@ -1,33 +1,91 @@
#! coding: utf-8
# Тестовое приложение для проекта Opal
# Вычисление значений синуса по формулам Тейлора
# Вычисляет значения для указанного диапазона с заданной точностью
# и нужным количеством шагов
import sys
import json
import os
import time
def write(msg):
sys.stdout.write(msg + '\n')
sys.stdout.write(str(msg) + '\n')
sys.stdout.flush()
def sin_taylor(x, n):
f = 1
s = 0.0
e = 1.0
x0 = x
for i in xrange(n + 1):
#print e, f, x
f *= (2 * i) * (2 * i + 1) if i else 1
s += e * x / f
x *= x0 * x0
e *= -1
return s
def answer(p):
return json.dumps({
"answer": "ok",
"value": p
})
def error(msg):
return json.dumps({
"answer": "error",
"comment": msg
})
def result(r):
return json.dumps({
"answer": "result",
"result": {
"table": {
"head": [{"x": "double"}, {"y": "double"}],
"body": r
}
}
})
def main():
# try:
try:
if sys.argv[1] == '-i':
with open('testt.json') as f:
d = json.load(f)
write(json.dumps(d, indent = 2))
if sys.argv[1] == '-i':
elif sys.argv[1] == '-r':
textdata = raw_input()
#data = json.loads(data)
for i in xrange(10):
time.sleep(0.5)
write(json.dumps({ "hello": "world" }))
with open('testt.json') as f:
d = json.load(f)
write(json.dumps(d, indent = 2))
# except:
# print 'Error!'
# sys.exit(-1)
elif sys.argv[1] == '-r':
textdata = raw_input()
data = json.loads(textdata)
if not len(data) and data[0]['label'] != 'sintaylor':
write(error('Unknown model'))
sys.exit(1)
params = data[0]['params']
l = 0 # левая граница
r = params['r'] # правая граница
n = params['n'] # количество шагов
d = params['d'] # количество членов в разложении Тейлора
h = float(r - l) / n # шаг сетки по х
res = [] # таблица резултатов
while l <= r:
y = sin_taylor(l, d)
res.append([l, y])
write(answer(round(l / r, 2)))
l += h
write(result(res))
except:
write(error('Fatal error'))
sys.exit(1)
if __name__ == '__main__':
main()
main()