我需要解这个方程式并找到t:
4x + z − 2 = 0带参数:
x =− 1 − 2t
z = 1 + t结果:
4(− 1 − 2t) + (1 + t) − 2 = 0
t = − 5/7如何对此方程的t值进行分组?
发布于 2018-02-01 05:49:06
我们可以将方程重写为项列表吗?
set terms {4x 1z -2}
set x {-1 -2t}
set z {1 1t}如果我们有一个命令将项分为系数部分和可变部分(如果项是常量,则变量部分是空字符串)
proc splitTerm term {
scan $term %d%s
}一个命令将一个术语列表与一个因子相乘
proc multiplyTerms {factor terms} {
lmap term $terms {
lassign [splitTerm $term] c v
format %d%s [expr {$factor * $c}] $v
}
}一个命令用于添加项,并获得一个常量项的求和,另一个命令用于具有变量的项(在此阶段,由于替换,假设变量为1且相同)
proc addTerms terms {
set constantsum 0
set termsum 0
foreach term $terms {
lassign [splitTerm $term] c v
if {$v eq {}} {
incr constantsum $c
} else {
incr termsum $c
}
}
list $constantsum $termsum
}最后是用变量替换术语的命令,这些变量包含术语列表
proc replaceTerms terms {
concat {*}[lmap term $terms {
lassign [splitTerm $term] c v
if {$v eq {}} {
set c
} else {
multiplyTerms $c [set ::$v]
}
}]
}然后,我们可以替换原始术语列表中的变量
% set replaced [replaceTerms $terms]
-4 -8t 1 1t -2并将列表总结如下:
% set result [addTerms $squashed]
-5 -7这对应于产生解t = -5/7的方程-7t -5 = 0。
文档:* (operator)、concat、eq (operator)、expr、foreach、format、if、incr、lassign、C18、C19、C20、C21、C22、C23、C24
https://stackoverflow.com/questions/48530933
复制相似问题