Questions in category: 开发计划 (DevPlan)
软件 >> Calculator >> 开发计划
<[1] [2] >

1. [DevPlan] MATH AI

Posted by haifeng on 2023-03-25 08:15:11 last update 2023-03-25 08:15:11 | Answers (0) | 收藏


将 MATH system 中的数据作为数学语料库, 供 Calculator 调用.

2. [DevPlan] 多项式中的运算

Posted by haifeng on 2023-03-24 21:49:46 last update 2023-03-24 21:49:46 | Answers (0) | 收藏


>> (1|3x^1-1|9)*(3x^3+10x^2+2x-3)+( -5|9x^2-25|9x^1-10|3)
in> (1|3x^1-1|9)*(3x^3+10x^2+2x-3)+(-5|9x^2-25|9x^1-10|3)

out> x^4+10|3-1|3x^3+2|3-10|9-5|9x^2-2|9-25|9-1x^1+1|3-10|3
------------------------

 

有待解决

3. [DevPlan] Calculator 中模式的改进

Posted by haifeng on 2023-03-24 14:53:27 last update 2023-03-24 14:59:43 | Answers (0) | 收藏


最初的计算模式有两种, numerical 和 fraction, 分别对应值为 0 和 1.

后来在 v0.528 版本中加入了 polyn 模式. 令calculatingMode的值为 2.

但是在多项式计算中, 需要确定是 numerical 还是 fraction 计算模式, 因此 polyn 模式应独立于 numerical 和 fraction.

例如, polyn 和 numerical 模式下, 设置 calculatingMode =10 (此时是二进制)   

polyn 和 fraction 模式下, 设置 calculatingMode = 11 (二进制)


假定 calculatingMode 是一个 int,

7 6 5 4 3 2 1 0
            x x
            0: 
1: polyn

0: numerical
1: fraction

 

最后一位 x=0 时代表 numerical, x=1 代表 fraction;

 

4. [DevPlan] 多项式输入的改进.

Posted by haifeng on 2023-03-18 12:50:56 last update 2023-03-18 12:50:56 | Answers (0) | 收藏


实现如问题2877中 $\arctan x$ 的前 $n$ 项乘法.

目前 Calculator 在读取多项式时, 无法处理 $x-x^3/3+x^5/5$ 等输入.

实现后, 进一步改进的地方是理解省略号, 如果输入中有三个., 则应从前几项判断出系数的公式. 

5. [DevPlan] 关于 Calculator 与 CalculatorApp 的编译

Posted by haifeng on 2023-03-15 12:38:45 last update 2023-03-15 12:38:45 | Answers (0) | 收藏


Calculator 工程中的文件均使用 ANSI 编码, 而 CalculatorApp 工程是在 Upp 下组织的, 故均使用 utf-8 BOM 编码.

当 Calculator 工程中某文件使用了 UTF8编码, 在编译时很可能出现很多奇怪的错误. 比如:

C3927 “->“: 非函数声明符后不允许尾随返回类型等错误

 

而 CalculatorApp 工程中某文件即使使用了 UTF8编码, 也可能导致很多奇怪的错误.

6. [DevPlan] Calculator 中对执行语句的解析

Posted by haifeng on 2023-03-15 08:45:14 last update 2023-03-15 08:45:14 | Answers (0) | 收藏


目前每次只是执行一条语句, 即对于单语句进行解析.

紧接着目标是从文件读取, 依次执行.

最后是解析文件.

7. [DevPlan] 动态调用函数.

Posted by haifeng on 2023-03-01 12:27:25 last update 2023-03-01 12:27:25 | Answers (0) | 收藏


我们已经有了 getValueFromMemAddr() 函数, 设想定义一个结构, 然后返回这个结构的地址.

如果 a 是一个结构, 用点操作符调用 a 中的变量或函数成员. 实现动态调用函数.

 

8. [DevPlan] 增强 solve() 函数的功能, 使其可以处理等式中的函数.

Posted by haifeng on 2023-02-16 14:19:11 last update 2023-02-16 14:19:11 | Answers (0) | 收藏


>> Primes(100)
in> Primes(100)
2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,

Time used:     000
out> 25

------------------------

>> solve(p(n)==41,n,1,25)
in> solve(p(n)~41,n,1,25)

------------------------

9. [DevPlan] 将十进制小数转为二进制

Posted by haifeng on 2023-02-12 20:16:07 last update 2023-02-12 20:36:55 | Answers (1) | 收藏


现在考虑 $(0,1)$ 之间的有限小数.

对于形如 $\frac{1}{2^k}$ 的小数, 例如

\[0.5=\frac{1}{2},\quad 0.25=\frac{1}{2^2},\quad 0.125=\frac{1}{2^3},\quad 0.0625=\frac{1}{2^4},\quad\]

它们的二进制形式很简单, 分别为

\[0.5=(0.1)_2,\quad 0.25=(0.01)_2,\quad 0.125=(0.001)_2,\quad 0.0625=(0.0001)_2\]


这里打印 $\frac{1}{2^1}, \frac{1}{2^2}, \frac{1}{2^3}, \cdots, \frac{1}{2^{100}}$ 的小数形式.  

可以看到 $\frac{1}{2^n}$ 的小数形式在小数点之后有 $n$ 位数字.  $n$ 从 3 开始, 尾部以 125, 625 交替出现: 奇数为 125, 偶数为 625.

in> printSeries(1/2^n,n,1,100,\n)
0.5
0.25
0.125
0.0625
0.03125
0.015625
0.0078125
0.00390625
0.001953125
0.0009765625
0.00048828125
0.000244140625
0.0001220703125
0.00006103515625
0.000030517578125
0.0000152587890625
0.00000762939453125
0.000003814697265625
0.0000019073486328125
0.00000095367431640625
0.000000476837158203125
0.0000002384185791015625
0.00000011920928955078125
0.000000059604644775390625
0.0000000298023223876953125
0.00000001490116119384765625
0.000000007450580596923828125
0.0000000037252902984619140625
0.00000000186264514923095703125
0.000000000931322574615478515625
0.0000000004656612873077392578125
0.00000000023283064365386962890625
0.000000000116415321826934814453125
0.0000000000582076609134674072265625
0.00000000002910383045673370361328125
0.000000000014551915228366851806640625
0.0000000000072759576141834259033203125
0.00000000000363797880709171295166015625
0.000000000001818989403545856475830078125
0.0000000000009094947017729282379150390625
0.00000000000045474735088646411895751953125
0.000000000000227373675443232059478759765625
0.0000000000001136868377216160297393798828125
0.00000000000005684341886080801486968994140625
0.000000000000028421709430404007434844970703125
0.0000000000000142108547152020037174224853515625
0.00000000000000710542735760100185871124267578125
0.000000000000003552713678800500929355621337890625
0.0000000000000017763568394002504646778106689453125
0.00000000000000088817841970012523233890533447265625
0.000000000000000444089209850062616169452667236328125
0.0000000000000002220446049250313080847263336181640625
0.00000000000000011102230246251565404236316680908203125
0.000000000000000055511151231257827021181583404541015625
0.0000000000000000277555756156289135105907917022705078125
0.00000000000000001387778780781445675529539585113525390625
0.000000000000000006938893903907228377647697925567626953125
0.0000000000000000034694469519536141888238489627838134765625
0.00000000000000000173472347597680709441192448139190673828125
0.000000000000000000867361737988403547205962240695953369140625
0.0000000000000000004336808689942017736029811203479766845703125
0.00000000000000000021684043449710088680149056017398834228515625
0.000000000000000000108420217248550443400745280086994171142578125
0.0000000000000000000542101086242752217003726400434970855712890625
0.00000000000000000002710505431213761085018632002174854278564453125
0.000000000000000000013552527156068805425093160010874271392822265625
0.0000000000000000000067762635780344027125465800054371356964111328125
0.00000000000000000000338813178901720135627329000271856784820556640625
0.000000000000000000001694065894508600678136645001359283924102783203125
0.0000000000000000000008470329472543003390683225006796419620513916015625
0.00000000000000000000042351647362715016953416125033982098102569580078125
0.000000000000000000000211758236813575084767080625169910490512847900390625
0.0000000000000000000001058791184067875423835403125849552452564239501953125
0.00000000000000000000005293955920339377119177015629247762262821197509765625
0.000000000000000000000026469779601696885595885078146238811314105987548828125
0.0000000000000000000000132348898008484427979425390731194056570529937744140625
0.00000000000000000000000661744490042422139897126953655970282852649688720703125
0.000000000000000000000003308722450212110699485634768279851414263248443603515625
0.0000000000000000000000016543612251060553497428173841399257071316242218017578125
0.00000000000000000000000082718061255302767487140869206996285356581211090087890625
0.000000000000000000000000413590306276513837435704346034981426782906055450439453125
0.0000000000000000000000002067951531382569187178521730174907133914530277252197265625
0.00000000000000000000000010339757656912845935892608650874535669572651386260986328125
0.000000000000000000000000051698788284564229679463043254372678347863256931304931640625
0.0000000000000000000000000258493941422821148397315216271863391739316284656524658203125
0.00000000000000000000000001292469707114105741986576081359316958696581423282623291015625
0.000000000000000000000000006462348535570528709932880406796584793482907116413116455078125
0.0000000000000000000000000032311742677852643549664402033982923967414535582065582275390625
0.00000000000000000000000000161558713389263217748322010169914619837072677910327911376953125
0.000000000000000000000000000807793566946316088741610050849573099185363389551639556884765625
0.0000000000000000000000000004038967834731580443708050254247865495926816947758197784423828125
0.00000000000000000000000000020194839173657902218540251271239327479634084738790988922119140625
0.000000000000000000000000000100974195868289511092701256356196637398170423693954944610595703125
0.0000000000000000000000000000504870979341447555463506281780983186990852118469774723052978515625
0.00000000000000000000000000002524354896707237777317531408904915934954260592348873615264892578125
0.000000000000000000000000000012621774483536188886587657044524579674771302961744368076324462890625
0.0000000000000000000000000000063108872417680944432938285222622898373856514808721840381622314453125
0.00000000000000000000000000000315544362088404722164691426113114491869282574043609201908111572265625
0.000000000000000000000000000001577721810442023610823457130565572459346412870218046009540557861328125
0.0000000000000000000000000000007888609052210118054117285652827862296732064351090230047702789306640625


------------------------

 

10. [DevPlan] 改进计算 $e$ 的算法

Posted by haifeng on 2023-02-11 22:53:50 last update 2023-02-11 22:54:05 | Answers (0) | 收藏


当然, 我们可以用下面的公式进行计算. Calculator 最初就是使用这个公式进行计算. 但缺点很明显, 随着 $n$ 的增大, 计算会变得很慢.

\[
e=1+\frac{1}{1!}+\frac{1}{2!}+\frac{1}{3!}+\cdots+\frac{1}{n!}+\cdots
\]

还有更好的办法, 见

The constant $e$ and its computation (free.fr)

计算$e$和$π$ (infinityfreeapp.com)

 

<[1] [2] >