首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方程线性代数TCL

方程线性代数TCL
EN

Stack Overflow用户
提问于 2018-01-31 05:37:16
回答 1查看 231关注 0票数 0

我需要解这个方程式并找到t

代码语言:javascript
复制
4x + z − 2 = 0

带参数:

代码语言:javascript
复制
x =− 1 − 2t
z = 1 + t

结果:

代码语言:javascript
复制
4(− 1 − 2t) + (1 + t) − 2 = 0
t = − 5/7

如何对此方程的t值进行分组?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-01 05:49:06

我们可以将方程重写为项列表吗?

代码语言:javascript
复制
set terms {4x 1z -2}
set x {-1 -2t}
set z {1 1t}

如果我们有一个命令将项分为系数部分和可变部分(如果项是常量,则变量部分是空字符串)

代码语言:javascript
复制
proc splitTerm term {
    scan $term %d%s
}

一个命令将一个术语列表与一个因子相乘

代码语言:javascript
复制
proc multiplyTerms {factor terms} {
    lmap term $terms {
        lassign [splitTerm $term] c v
        format %d%s [expr {$factor * $c}] $v
    }
}

一个命令用于添加项,并获得一个常量项的求和,另一个命令用于具有变量的项(在此阶段,由于替换,假设变量为1且相同)

代码语言:javascript
复制
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
}

最后是用变量替换术语的命令,这些变量包含术语列表

代码语言:javascript
复制
proc replaceTerms terms {
    concat {*}[lmap term $terms {
        lassign [splitTerm $term] c v
        if {$v eq {}} {
            set c
        } else {
            multiplyTerms $c [set ::$v]
        }
    }]
}

然后,我们可以替换原始术语列表中的变量

代码语言:javascript
复制
% set replaced [replaceTerms $terms]
-4 -8t 1 1t -2

并将列表总结如下:

代码语言:javascript
复制
% set result [addTerms $squashed]
-5 -7

这对应于产生解t = -5/7的方程-7t -5 = 0

文档:* (operator)concateq (operator)exprforeachformatifincrlassign、C18、C19、C20、C21、C22、C23、C24

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48530933

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档