Skip to content
Snippets Groups Projects
Commit a055ba2c authored by Augusta's avatar Augusta
Browse files

date name

parent 85607d0b
No related branches found
No related tags found
No related merge requests found
No preview for this file type
No preview for this file type
No preview for this file type
......@@ -8,8 +8,8 @@ from flask import (
from werkzeug.security import check_password_hash, generate_password_hash
bp = Blueprint('calc', __name__, url_prefix='')
def Work(content,Func=None,var_=None,order_=None):
common_vars=['x','y','z','a','b','c']
def Work(content,Func=None,var_=None,order_=None,lows_=None,highs_=None):
deletes=['\\left','\\right','\\operatorname']
if content=='':
return '';
......@@ -21,7 +21,7 @@ def Work(content,Func=None,var_=None,order_=None):
else:
print('content',content)
if Func!=None:
content=Func(content,var_,order_)
content=Func(content,var_,order_,lows_,highs_)
content=latex(content)
content=content.replace('{sin}','\\sin')
content=content.replace('{cos}','\\cos')
......@@ -42,6 +42,7 @@ def calc():
if content==None:
content=''
return render_template('calc.html',editor=content,result=Work(content))
#求导
@bp.route('/diff', methods=['GET', 'POST'])
def diff():
# print("request",request.method,request.form.get('var'),request.form.get('order'))
......@@ -50,7 +51,6 @@ def diff():
cloneCount=1
var_=['x']
order_=[1]
print('get')
else:
cloneCount=int(request.form.get('cloneCount'))
content = request.form.get('editor_content')
......@@ -68,7 +68,7 @@ def diff():
var_.append(request.form.get('var'+str(i)))
order_.append(request.form.get('order'+str(i)))
if var_[i-1]=='':
var_[i-1]='x'
var_[i-1]=common_vars[i-1]
order_[i-1]=1
print('var_',var_,order_)
print('data',cloneCount,var_,order_,sep=',')
......@@ -76,4 +76,75 @@ def diff():
,result=Work(content,diff_,var_,order_)
,cloneCount=cloneCount
,var_=var_
,order_=order_)
\ No newline at end of file
,order_=order_)
#不定积分
@bp.route('/indefinite_integral', methods=['GET', 'POST'])
def indefinite_integral():
# print("request",request.method,request.form.get('var'),request.form.get('order'))
if request.method=='GET':
content=''
cloneCount=1
var_=['x']
else:
cloneCount=int(request.form.get('cloneCount'))
content = request.form.get('editor_content')
print(cloneCount,content)
if content==None:
content=''
if cloneCount==None:
cloneCount=1
var_=['x']
else:
var_=[]
for i in range(1,cloneCount+1):
var_.append(request.form.get('var'+str(i)))
if var_[i-1]=='':
var_[i-1]=common_vars[i-1]
print('var_',var_)
print('data',cloneCount,var_,sep=',')
return render_template('indefinite_integral.html',editor=content
,result=Work(content,indefinite_integral_,var_)
,cloneCount=cloneCount
,var_=var_)
#定积分
@bp.route('/definite_integral', methods=['GET', 'POST'])
def definite_integral():
# print("request",request.method,request.form.get('var'),request.form.get('order'))
if request.method=='GET':
content=''
cloneCount=1
var_=['x']
lows_=[0]
highs_=[0]
else:
cloneCount=int(request.form.get('cloneCount'))
content = request.form.get('editor_content')
print(cloneCount,content)
if content==None:
content=''
if cloneCount==None:
cloneCount=1
var_=['x']
lows_=[0]
highs_=[0]
else:
var_=[]
lows_=[]
highs_=[]
for i in range(1,cloneCount+1):
var_.append(request.form.get('var'+str(i)))
lows_.append(request.form.get('low'+str(i)))
highs_.append(request.form.get('high'+str(i)))
print('got',var_[i-1],lows_[i-1],highs_[i-1])
if var_[i-1]=='':
var_[i-1]=common_vars[i-1]
lows_[i-1]=0
highs_[i-1]=0
print('var_',var_)
print('data',cloneCount,var_,lows_,highs_,sep=',')
return render_template('definite_integral.html',editor=content
,result=Work(content,definite_integral_,var_,None,lows_,highs_)
,cloneCount=cloneCount
,var_=var_
,lows_=lows_
,highs_=highs_)
\ No newline at end of file
......@@ -12,21 +12,40 @@ from scipy import stats
# z=diff(expr,x,num)
# z=z.subs(x,value)
# return z
def diff_(f,xs,nums):
def diff_(f,xs,nums,lows,highs):
for i in range(len(xs)):
print('diff',f,xs[i],nums[i])
f=diff(f,symbols(xs[i],positive=True,real=True),int(nums[i]))
return f
def int_(expr,x):
# def int_(expr,x):
# '''函数求不定积分'''
# expr=eval(expr)
# return integrate(expr,x)
def indefinite_integral_(f,xs,nums,lows,highs):
'''函数求不定积分'''
expr=eval(expr)
return integrate(expr,x)
def int_ab(expr,x,a,b):
'''函数求定积分'''
expr=eval(expr)
return integrate(expr,(x,a,b))
for i in range(len(xs)):
f=integrate(f,symbols(xs[i],positive=True,real=True))
return f
# def int_ab(expr,x,a,b):
# '''函数求定积分'''
# expr=eval(expr)
# return integrate(expr,(x,a,b))
def definite_integral_(f,xs,nums,lows,highs):
print(f,xs,nums,lows,highs)
'''函数求不定积分'''
for i in range(len(xs)):
print('def',f,xs[i],lows[i],highs[i])
try:
low=float(lows[i])
except:
low=symbols(lows[i],positive=True,real=True)
try:
high=float(highs[i])
except:
high=symbols(highs[i],positive=True,real=True)
f=integrate(f,(symbols(xs[i],positive=True,real=True),low,high))
return f
def limit_(expr,x,num,side='+-'):
'''求极限函数'''
expr=eval(expr)
......
{% extends 'base.html' %}
{% block header%}
<h1>{% block title %}Calc{% endblock %}</h1>
{% endblock %}
{% block content %}
<form method="post">
<div id="myEdit"></div>
<label id="editor_init" style="display: none">{{editor}}</label>
<label id="result_init" style="display: none">{{result}}</label>
<label id="cloneCount_init" style="display: none">{{cloneCount}}</label>
<input name="editor_content" id="editor_content_id" hidden>
<input name="cloneCount" id="cloneCount_id" hidden>
<section class="pb-5" id="entrySection_1">
<label id='labelvar1' style="display:none">
自变量:
<input type='text' name='var1' size='3' maxlength='3' value='{{var_[0]}}' title='差分变量'>
下界:
<input type='text' name='low1' size='3' maxlength='3' value='{{lows_[0]}}' title='下界'>
上界:
<input type='text' name='high1' size='3' maxlength='3' value='{{highs_[0]}}' title='下界'>
</label>
</section>
<section class="pb-5" id="entrySection_2">
<label id='labelvar2' style="display:none">
自变量:
<input type='text' name='var2' size='3' maxlength='3' value='{{var_[1]}}' title='差分变量'>
下界:
<input type='text' name='low2' size='3' maxlength='3' value='{{lows_[1]}}' title='下界'>
上界:
<input type='text' name='high2' size='3' maxlength='3' value='{{highs_[1]}}' title='下界'>
</label>
</section>
<section class="pb-5" id="entrySection_3">
<label id='labelvar3' style="display:none">
自变量:
<input type='text' name='var3' size='3' maxlength='3' value='{{var_[2]}}' title='差分变量'>
下界:
<input type='text' name='low3' size='3' maxlength='3' value='{{lows_[2]}}' title='下界'>
上界:
<input type='text' name='high3' size='3' maxlength='3' value='{{highs_[2]}}' title='下界'>
</label>
</section>
<section class="pb-5" id="entrySection_4">
<label id='labelvar4' style="display:none">
自变量:
<input type='text' name='var4' size='3' maxlength='3' value='{{var_[3]}}' title='差分变量'>
下界:
<input type='text' name='low4' size='3' maxlength='3' value='{{lows_[3]}}' title='下界'>
上界:
<input type='text' name='high4' size='3' maxlength='3' value='{{highs_[3]}}' title='下界'>
</label>
</section>
<section class="pb-5" id="entrySection_5">
<label id='labelvar5' style="display:none">
自变量:
<input type='text' name='var5' size='3' maxlength='3' value='{{var_[4]}}' title='差分变量'>
下界:
<input type='text' name='low5' size='3' maxlength='3' value='{{lows_[4]}}' title='下界'>
上界:
<input type='text' name='high5' size='3' maxlength='3' value='{{highs_[4]}}' title='下界'>
</label>
</section>
<button id="add">Add</button>
<div id="resultEdit"></div>
<button type="submit" id="getVal">计算</button>
<script>
console.log('init',document.getElementById("result_init").innerText)
var mathEdit = new window.MathEdit({
elId: 'myEdit',
config: {
defaultFontSize: '38px',
viewFontSize: '12px'
},
init_content: document.getElementById("editor_init").innerText
})
var resultEdit = new window.MathEdit({
elId: 'resultEdit',
config: {
defaultFontSize: '38px',
viewFontSize: '12px'
},
init_content: document.getElementById("result_init").innerText
})
document.getElementById('getVal').addEventListener('click', function () {
console.log(mathEdit.getLatex());
document.getElementById("editor_content_id").value=mathEdit.getLatex()
})
document.getElementById("editor_content_id").value=mathEdit.getLatex()
document.getElementById("cloneCount_id").value=document.getElementById("cloneCount_init").innerText
console.log('cloneCount_id',document.getElementById("cloneCount_id").value)
for(var i=1;i<=document.getElementById("cloneCount_id").value;i++){
document.getElementById("labelvar"+i).style.display=''
}
$('#add').click(function(){
document.getElementById("editor_content_id").value=mathEdit.getLatex()
if(document.getElementById("cloneCount_id").value<5){
++document.getElementById("cloneCount_id").value
document.getElementById("labelvar"+document.getElementById("cloneCount_id").value).style.display=''
}
});
</script>
</form>
{% endblock %}
\ No newline at end of file
{% extends 'base.html' %}
{% block header%}
<h1>{% block title %}Calc{% endblock %}</h1>
{% endblock %}
{% block content %}
<form method="post">
<div id="myEdit"></div>
<label id="editor_init" style="display: none">{{editor}}</label>
<label id="result_init" style="display: none">{{result}}</label>
<label id="cloneCount_init" style="display: none">{{cloneCount}}</label>
<input name="editor_content" id="editor_content_id" hidden>
<input name="cloneCount" id="cloneCount_id" hidden>
<section class="pb-5" id="entrySection_1">
<label id='labelvar1' style="display:none">
自变量:
<input type='text' name='var1' size='3' maxlength='3' value='{{var_[0]}}' title='差分变量'>
</label>
</section>
<section class="pb-5" id="entrySection_2">
<label id='labelvar2' style="display:none">
自变量:
<input type='text' name='var2' size='3' maxlength='3' value='{{var_[1]}}' title='差分变量'>
</label>
</section>
<section class="pb-5" id="entrySection_3">
<label id='labelvar3' style="display:none">
自变量:
<input type='text' name='var3' size='3' maxlength='3' value='{{var_[2]}}' title='差分变量'>
</label>
</section>
<section class="pb-5" id="entrySection_4">
<label id='labelvar4' style="display:none">
自变量:
<input type='text' name='var4' size='3' maxlength='3' value='{{var_[3]}}' title='差分变量'>
</label>
</section>
<section class="pb-5" id="entrySection_5">
<label id='labelvar5' style="display:none">
自变量:
<input type='text' name='var5' size='3' maxlength='3' value='{{var_[4]}}' title='差分变量'>
</label>
</section>
<button id="add">Add</button>
<div id="resultEdit"></div>
<button type="submit" id="getVal">计算</button>
<script>
console.log('init',document.getElementById("result_init").innerText)
var mathEdit = new window.MathEdit({
elId: 'myEdit',
config: {
defaultFontSize: '38px',
viewFontSize: '12px'
},
init_content: document.getElementById("editor_init").innerText
})
var resultEdit = new window.MathEdit({
elId: 'resultEdit',
config: {
defaultFontSize: '38px',
viewFontSize: '12px'
},
init_content: document.getElementById("result_init").innerText
})
document.getElementById('getVal').addEventListener('click', function () {
console.log(mathEdit.getLatex());
document.getElementById("editor_content_id").value=mathEdit.getLatex()
})
document.getElementById("editor_content_id").value=mathEdit.getLatex()
document.getElementById("cloneCount_id").value=document.getElementById("cloneCount_init").innerText
console.log('cloneCount_id',document.getElementById("cloneCount_id").value)
for(var i=1;i<=document.getElementById("cloneCount_id").value;i++){
document.getElementById("labelvar"+i).style.display=''
}
$('#add').click(function(){
document.getElementById("editor_content_id").value=mathEdit.getLatex()
if(document.getElementById("cloneCount_id").value<5){
++document.getElementById("cloneCount_id").value
document.getElementById("labelvar"+document.getElementById("cloneCount_id").value).style.display=''
}
});
</script>
</form>
{% endblock %}
\ No newline at end of file
from sympy import *
y=symbols('x',positive=True,real=True)**2
print(type(y))
print(diff(y,symbols('x')))
\ No newline at end of file
x=symbols('x',)
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment