hrefspace

 找回密码
 立即注册
搜索
热搜: PHP PS 程序设计
查看: 563|回复: 5

MMA 中,如何指定某些假设(条件)成立?

[复制链接]

484

主题

491

帖子

1493

积分

大司空

Rank: 5Rank: 5

积分
1493
发表于 2023-10-3 08:14:21 | 显示全部楼层 |阅读模式
如下的一道几何题:
Rt△ABC 中,∠ABC=90°,直线 l 交 BC、CA 及 BA 的延长线于 D、E、F,若 DE=DC=AB,求证:AF+EF=BD。

以下的 MMA 代码是对问题的简单 “直译”:
  1. ClearAll["Global`*"];b={0,0}; a={0,u}; d={v,0}; c={u+v, 0}; (* 令 AB=u, BD=v,则 BC=u+v *)(* E 在 AC 上且 DE=DC=u *)e = {x, y} /. Simplify@First@Solve[{{x,y} \[Element] InfiniteLine[{a, c}] && EuclideanDistance[{x,y}, d] == u && 0 < x < v}, {x, y}];(* 求直线{e, d} 和 直线{b, a} 的交点 *)f = {x, y} /. Simplify@First@Solve[Cross[#1 - {x, y}] . (#2 - {x, y}) == 0 & @@@ {{e, d}, {b, a}}, {x, y}];lenAfAndFe = (EuclideanDistance[a, f] + EuclideanDistance[f, e]) // Simplify;Print["AF+FE = ", lenAfAndFe, " , BD = v,两者当相等"]
复制代码

结果显示:
AF+FE = v if u>0&&v>0 , BD = v,两者当相等
故命题得证。

其中,求解 E  有坐标时,MMA 返回
\( \left\{\fbox{$\frac{v^2 (u+v)}{2 u^2+2 v u+v^2}\text{ if }u>0\land v>0$},\fbox{$\frac{2 u^2 (u+v)}{2 u^2+2 v u+v^2}\text{ if }u>0\land v>0$}\right\} \)

求助各位专家,不知是否有办法让 MMA 知道 u>0 和 v>0 这两个假设已经作为预置条件总是成立的?


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

0

主题

181

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-3 08:15:11 | 显示全部楼层
经实验将代码改为如下可行,求大佬们提供更好的写法(多处都要加 Assuming[{u > 0, v > 0}, xxx] 挺烦人的):
  1. ClearAll["Global`*"];b={0,0}; a={0,u}; d={v,0}; c={u+v, 0}; (* 令 AB=u, BD=v,则 BC=u+v *)(* E 在 AC 上且 DE=DC=u *)e = {x, y} /. Simplify@First@Assuming[{u > 0, v > 0}, Solve[{{x,y} \[Element] InfiniteLine[{a, c}] && EuclideanDistance[{x,y}, d] == u && 0 < x < v}, {x, y}]];Print["e = ", e]; (* 求直线{e, d} 和 直线{b, a} 的交点 *)f = {x, y} /. Simplify@First@Solve[Cross[#1 - {x, y}] . (#2 - {x, y}) == 0 & @@@ {{e, d}, {b, a}}, {x, y}];Print["f = ", f];lenAfAndFe = Assuming[{u > 0, v > 0}, FullSimplify[(EuclideanDistance[a, f] + EuclideanDistance[f, e])]];Print["AF+FE = ", lenAfAndFe, " , BD = v,两者当相等"]
复制代码
回复

使用道具 举报

0

主题

201

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-3 08:15:49 | 显示全部楼层
经实验,可以将 Assuming[{u > 0, v > 0} 放到最外层,让整个代码都包裹进这个假设里,这样就可以避免多处重复写这段代码:
  1. ```ClearAll["Global`*"];Assuming[{u > 0, v > 0},        b={0,0}; a={0,u}; d={v,0}; c={u+v, 0}; (* 令 AB=u, BD=v,则 BC=u+v *)        (* E 在 AC 上且 DE=DC=u *)        e = {x, y} /. Simplify@First@ Solve[{{x,y} \[Element] InfiniteLine[{a, c}] && EuclideanDistance[{x,y}, d] == u && 0 < x < v}, {x, y}];        Print["e = ", e];         (* 求直线{e, d} 和 直线{b, a} 的交点 *)        f = {x, y} /. Simplify@First@Solve[Cross[#1 - {x, y}] . (#2 - {x, y}) == 0 & @@@ {{e, d}, {b, a}}, {x, y}];        Print["f = ", f];        lenAfAndFe = FullSimplify[(EuclideanDistance[a, f] + EuclideanDistance[f, e])];        Print["AF+FE = ", lenAfAndFe, " , BD = v,两者当相等"]]        ```
复制代码
回复

使用道具 举报

0

主题

156

帖子

125

积分

关内侯

Rank: 2

积分
125
发表于 2023-10-3 08:16:17 | 显示全部楼层
我只会做具体的题目,可以这样(恒等式)。

\(AB=\sin(\theta),BD=\cos(\theta)-\sin(\theta),AE=1-\sin(2\theta)\)

\(\frac{AF+EF}{BD}=\frac{(1-\sin(2\theta))(\cos(\theta)+\sin(\theta))/cos(2\theta)}{\cos(\theta)-\sin(\theta)}=1\)
回复

使用道具 举报

0

主题

173

帖子

2

积分

新手上路

Rank: 1

积分
2
发表于 2023-10-3 08:16:30 | 显示全部楼层
$Assumptions=u>0;
回复

使用道具 举报

1

主题

188

帖子

5

积分

新手上路

Rank: 1

积分
5
发表于 2023-10-3 08:17:15 | 显示全部楼层
CD=AB → Rt△ABD≌Rt△CDG
所以BC=BD-CD=BH-AB=AH=AF+FH=AF+EF

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|hrefspace

GMT+8, 2024-11-22 09:04 , Processed in 0.079701 second(s), 22 queries .

Powered by hrefspace X3.4 Licensed

Copyright © 2022, hrefspace.

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