cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 1757|回复: 0

[TI-Nspire系列] 多种类型的快速求解程序

[复制链接]
发表于 2025-2-24 13:27:27 | 显示全部楼层 |阅读模式
计算器程序
程序名称: quicksolver(快速求解器)
平台: TI-Nspire 
系统/软件要求:
版本号:
类型: 数学 
作者: zenithei
大小(K): 11
更新日期: 2025-02-24
描述: -
已知缺陷: -
源代码: 开源/部分开源 » WTFPL
本帖最后由 zenithei 于 2025-2-24 17:54 编辑

程序介绍

getvars(表达式)
获取表达式中的所有独立变量。

subst(表达式, 变量列表1, 变量列表2)
快速替换表达式中的变量(将变量列表1替换为变量列表2)。
按照一一对应的原则进行替换,但也可以一对多或者多对一进行替换。变量列表1中变量只能是字母,而变量列表2中所谓变量可以是字母、数字甚至表达式。要一对多替换则令变量列表1为单个的变量,输出一个列表,为变量列表2中每一种替换的结果。要多对一替换则令变量列表2为单个变量(或数字或表达式),输出值为将变量列表1中所有变量替换为变量2的表达式。

formatsolve(解集)
整理求解结果,每个解单独成行输出,并标明解的总数量。
此函数是从  [TI-BASIC]BetterSolve - 更好地输出解方程结果
https://www.cncalc.org/thread-24273-1-1.html
(出处: cnCalc计算器论坛) 作者:        zyf722 处借用并修改来的,具体使用方法可以参考原作者的帖子。

gsolve(方程组)
自动识别方程或方程组中的所有未知数,并在实数域内求解。

gcsolve(方程组)
自动识别方程或方程组中的所有未知数,并在复数域内求解。

maximize(函数, 变量或区间列表)
求函数在给定区间或整个实数域上的最大值。还会给出取到最大值时的自变量值及数量。
例1:maximize(x^(2)+2,x) ==> ∞
例2:maximize(x^(2)+2,{x,-3,3}) ==> 11

minimize(函数, 变量或区间列表)
求函数在给定区间或整个实数域上的最小值。
同上

tangextr(函数, 变量, x, y)
返回经过点 (x, y) 并与函数图像相切的直线方程列表。
提示:斜率无穷大的那条线不会给出,以后可能会修复。

twist(方程, 变量x, 变量y, θ)
将方程绕坐标原点旋转角度 θ。
例:twist(y=x^(2),x,y,((pi)/(3))) ==> y=((−(√(8*√(3)*x+1)-√(3)*x-1))/(3)) or y=((√(8*√(3)*x+1)+√(3)*x+1)/(3))
如果方程左边是单个的变量,可用省略掉不写,比如上面例子可以写作:twist(x^(2),x,y,((pi)/(3)))

tsolve(a, b, c, ∠A, ∠B, ∠C)
解三角形问题(基于已知边长和角度求解其他参数)。
只能解SSS、SAS、ASA类型的三角形,输入合适的三个已知值,其余位置输入“_”占位符,给出三角形的详细参数矩阵(包括面积、周长、内/外切圆半径)。
提示:输入角度时应当按照当前文档的角度格式设置,如果给出的结果是比较复杂的精确值,可以按ctrl+enter输出近似值。
例1:tsolve(2,3,4,_,_,_)
例2:tsolve(2,_,4,_,((pi)/(3)),_)

lagrangemulti(函数, 约束条件列表)
拉格朗日乘数法计算多元函数在给定约束条件下的极值。转载自 https://www.ticalc.org/archives/files/fileinfo/470/47068.html ,作者 Don Phillips 。修复了一个小bug,函数中存在变量o时程序运行错误,原因:instring函数查找“or”文本时仅写作“o”。
例1:lagrangemulti(x*y,x+2*y=4)
例2:lagrangemulti(x*y+y*z,{x+2*y=4,x+y+z=6})

interpolation(x列表, y列表, z矩阵, 插值点)
支持一维或二维线性插值,自动对给定数据进行排序。
提示:当插值点超出最小/大的已知点时,使用第一第二/倒一倒二已知点进行扩展插值。
一维插值
例1:interpolation({2,3,4},{4,5,6},_,2.3) ==> 4.3
例2:interpolation({2,3,4},_,{4,5,6},2.3) ==> 4.3
例3:interpolation({2,3,4},_,{4,5,6},0.3) ==> "Warning: 'p' is less than the minimum given value; the result may be unreliable."        2.3
二维插值
例1:interpolation({2,3,4},{4,5},[[4,7][6,10][9,17]],{3.2,4.7}) ==> 9.96
例2:interpolation({2,3,4},{4,5},[[4,7][6,10][9,17]],{0.1,7.1}) ==> "Warning: 'x' is less than the minimum given value; the result may be unreliable.
Warning: 'y' exceeds the maximum given value; the result may be unreliable."        3.61

gaussnewton(方程, 参数列表, 权重, 迭代次数, 步长, 收敛阈值)
使用高斯-牛顿法(带步长减半策略)将数据拟合到指定函数。转载自 https://www.ticalc.org/archives/files/fileinfo/436/43682.html ,作者 Don Phillips。修复/修改了较多内容,补写了原作者遗漏的一个必要函数。原先该程序的使用较为复杂,经过我的改写,现在可以使用“_”占位符替代除第一个参数以外的其他内容,自动识别补写,使用更便利。
例:先为x赋值{1,2,3,4,5},再为y赋值{2.6,3.1,7.2,9.3,16.2},然后运行gaussnewton(y_=a*x_+b,_,_,_,_,_) ==> y_=3.34*x_-2.34    同时输出计算迭代过程及R^2、残差等数据。
方程为你所要拟合出来的结果,其中数据变量名应当在其后添加“_”占位,如本例中“y”写作“y_”,因为nspire会自动将已经赋值的变量替换成所赋的值。
参数列表为你要令程序计算并不断迭代调整的变量,在本例中为a、b,可以写作{a=2,b=-2},也可以省略赋初始值(默认全部赋初始值1)写作{a,b},甚至可以省略一部分写作{a=2}/a=2,甚至全部省略,用“_”占位符替代,程序会自动识别并为没有手动赋值的参数自动赋初始值1。
权重我也不是很清楚有什么作用...
迭代次数步长控制最大迭代次数,超过限制则强行终止并输出结果。一般使用“_”占位符保持默认值即可。
收敛阈值控制两次迭代间的误差,误差小于给定值则终止迭代并输出结果,同样一般使用“_”占位符保持默认值即可。

quicksolver.tns

10.69 KB, 下载次数: 16

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|Archiver|手机版|小黑屋|cnCalc计算器论坛

GMT+8, 2026-7-19 06:37 , Processed in 0.014671 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表