王守恩 发表于 2023-8-15 06:19:13

NSolve[{Pi*R^2/2==S+12+(2a-Sin+Sin)R^2==20+25-(2a-Sin+Sin)R^2==12+20+(2b-Sin+Sin)R^2==25+S-(2b-Sin+Sin)R^2,R>0,S>0,Pi/4>a>0,Pi/4>b>0},{a,b,R,S}]//FullSimplify
NSolve[{Pi*R^2/2==S+12+(a + Sin/2) R^2==20 + 25 - (a + Sin/2) R^2==12 + 20 + (b + Sin/2) R^2==25 + S - (b + Sin/2)R^2, R>0,S>0,Pi/4>a>0,Pi/4>b>0},{a,b,R,S}]//FullSimplify
{{a->0.068271,b->0.066095,R->4.94411,S->19.7939+ 0.I},{a->0.0825263,b->0.0560988,R->4.87218,S->17.5754+0.I},{a->0.159975,b->0.0063279,R->4.55032,S->8.04808+0.I},{a->0.163342,b->0.0043542,R->4.53875,S->7.71755+0.I}}
这是(1)出来的答案(虽然是个错家伙),为什么(2)就出不来答案呢???
各位网友!帮忙找一找毛病!谢谢!

Jack315 发表于 2023-8-15 08:48:41

本帖最后由 Jack315 于 2023-8-15 12:24 编辑

参考 5# 的配图。
这是用 Excel "规划求解" 得到的结果:



加个单位只是为了方便,没有特别的含义。

6 种情况下得到 6 个解,但有一半的答案与另一半的相同。
所以一供有 3 个答案:
剩下部分的面积为 9.2258、15.3851 或 38.7705 。

这个问题容易出错的原因在于当 P 点位置不同时,公式会发生变化。
如角度相关的计算就需要根据 P 点位置的不同而改变。
用编程语言来表达就是公式里需要有一个 If...Then...Else 的判断结构。

nyy 发表于 2023-8-15 08:49:37

王守恩 发表于 2023-8-15 06:19
{{a->0.068271,b->0.066095,R->4.94411,S->19.7939+ 0.I},{a->0.0825263,b->0.0560988,R->4.87218,S->17. ...

你的代码写那么差,没注释、没缩进,人家主动去读你代码,不是自我找虐吗?你见过这么傻的人吗?
要多像我写的代码学习!
要写注释、要有缩进、不要层层嵌套、不要可读性非常低的一行代码!

nyy 发表于 2023-8-15 09:39:49

Jack315 发表于 2023-8-15 08:48
参考 5# 的配图。
这是用 Excel "规划求解" 得到的结果:



Clear["Global`*"];(*清除所有变量*)
deg=Pi/180;(*角度制下1°所对应的弧度*)
(*子函数,输入参数:半径,圆弧起始弧度,圆弧终止弧度(必须大于起始弧度,否则弓形面积计算有问题),输出:面积*)
area:=Module[{mj1,mj2,out},
    mj1=1/2*R^2((ang2-ang1)-Sin[(ang2-ang1)]);(*弓形面积=扇形面积-三角形面积*)
    mj2=1/2*R^2*Abs[(Cos-Cos)*(Sin-Sin)];(*弓形所对应的三角形面积(取了绝对值,肯定为正)*)
    out=mj1+mj2
]
(*--------------------第01种情况,S的对面面积=20(逆时针从第一象限面积依次是12、S、25、20)*)
(*计算三个面积表达式*)
a12=area//Simplify
a25=area//Simplify
a20=area//Simplify
(*牛顿迭代法求解圆的半径与两个角度*)
ans=FindRoot[{a12==12,a25==25,a20==20},{{R,4},{a,10deg},{b,80deg}},WorkingPrecision->20]
mj=Pi*R^2-(12+25+20)/.ans(*用圆的面积减去三个面积=需要求的面积*)
{a,b}/deg/.ans(*看看求解出来的角度制下的角度*)

(*--------------------第02种情况,S的对面面积=25(逆时针从第一象限面积依次是12、S、20、25)*)
(*计算三个面积表达式*)
a12=area//Simplify
a20=area//Simplify
a25=area//Simplify
(*牛顿迭代法求解圆的半径与两个角度*)
ans=FindRoot[{a12==12,a25==25,a20==20},{{R,4},{a,10deg},{b,80deg}},WorkingPrecision->20]
mj=Pi*R^2-(12+25+20)/.ans(*用圆的面积减去三个面积=需要求的面积*)
{a,b}/deg/.ans(*看看求解出来的角度制下的角度*)

(*--------------------第03种情况,S的对面面积=12(逆时针从第一象限面积依次是20、S、25、12)*)
(*计算三个面积表达式*)
a20=area//Simplify
a25=area//Simplify
a12=area//Simplify
(*牛顿迭代法求解圆的半径与两个角度*)
ans=FindRoot[{a12==12,a25==25,a20==20},{{R,4},{a,10deg},{b,80deg}},WorkingPrecision->20]
mj=Pi*R^2-(12+25+20)/.ans(*用圆的面积减去三个面积=需要求的面积*)
{a,b}/deg/.ans(*看看求解出来的角度制下的角度*)


升级了一下我的代码,让子函数更简单易用!让子函数用起来更不容易错


(*--------------------第01种情况,S的对面面积=20(逆时针从第一象限面积依次是12、S、25、20)*)
{R->4.8000946072772487659,a->0.19352372398043376605,b->1.4795625234825034378}
15.38514805508871342
{11.088092619733534828,84.772688121273200768}
这是第一个结果
对应交点在第一象限

(*--------------------第02种情况,S的对面面积=25(逆时针从第一象限面积依次是12、S、20、25)*)
{R->4.5913303246846108866,a->0.28993724447113779927,b->1.6632572261023979991}
9.22576007016262607
{16.612180431848957528,95.297619300303904909}
这是第二个结果
对应交点在在第二象限

(*--------------------第03种情况,S的对面面积=12(逆时针从第一象限面积依次是20、S、25、12)*)
{R->5.5212959089422300071,a->-0.18048351024798338345,b->1.3040115682746180632}
38.77053631472971168
{-10.340943408915589452,74.714359298371209758}
这是第三个结果,
对应交点在第四象限

@王守恩 我现在的子函数改变了,应该更好用了,你可以拿去用了!

王守恩 发表于 2023-8-15 11:47:42

nyy 发表于 2023-8-15 09:39
升级了一下我的代码,让子函数更简单易用!让子函数用起来更不容易错



谢谢nyy! 下面3道题子函数还可以用吗?好像不能用?谢谢!
1圆被两条相互垂直直线分为4部分, 3部分的面积是12,20,30, 求剩下部分的面积S。
1圆被两条相互垂直直线分为4部分, 3部分的面积是12,20,20, 求剩下部分的面积S。
1圆被两条相互垂直直线分为4部分, 3部分的面积是12,12,12, 求剩下部分的面积S。

Jack315 发表于 2023-8-15 12:42:54

本帖最后由 Jack315 于 2023-8-15 12:45 编辑

Jack315 发表于 2023-8-15 08:48
参考 5# 的配图。
这是用 Excel "规划求解" 得到的结果:



六个解的图像:



字母等参考这个图:

nyy 发表于 2023-8-15 15:22:44

一个圆被两条相互垂直的直线分为4部分,其中三部分的面积是25,20和12,那么剩下那部分面积是多少? - 知乎
https://www.zhihu.com/question/614716782

https://www.zhihu.com/people/landy8810这个人提问的
知乎上

nyy 发表于 2023-8-15 18:27:11

@王守恩 又没有任何有效的回答,你激动个啥?
不知道是不是本论坛的人提的问题。

Jack315 发表于 2023-8-15 19:16:09

王守恩 发表于 2023-8-15 11:47
谢谢nyy! 下面3道题子函数还可以用吗?好像不能用?谢谢!
1圆被两条相互垂直直线分为4部分, 3部分的面 ...

1圆被两条相互垂直直线分为4部分, 3部分的面积是12,20,30, 求剩下部分的面积S。
答:剩下部分的面积 S 有三种 (7.2701, 18.8322, 45.7513)

1圆被两条相互垂直直线分为4部分, 3部分的面积是12,20,20, 求剩下部分的面积S。
答:剩下部分的面积 S 有二种 (31.6762, 12)。两部分面积相等,对应 P 在 45 / 135 度线上和坐标轴上。

1圆被两条相互垂直直线分为4部分, 3部分的面积是12,12,12, 求剩下部分的面积S。
答:剩下部分的面积 S 有一种 (12)。三部分面积相等,导致第四部分面积也相等,P 点在坐标原点。

Jack315 发表于 2023-8-15 19:42:39

这个题如果有意再玩下去的话还是可以的,比如:
可以把 P 点坐标当成一个复数,从圆心引向分割线与圆的交点得到四个扇区。
每个扇区有相应的弧度角、扇区面积,同样可以构成一个复数。
这样就形成了一种复平面上的映射(函数)关系。
这个映射有什么有趣的属性;或者画出这个映射是不是能得到一个漂亮的图案?

当然也可以把问题搞再复杂一点,如把题目改成:
一个球被两个相互垂直的平面分成四部分,三部分的体积分别为 a, b, c ,
问剩下的那部分积是多少?
或者将分割线(平面)改成圆(球面)等;
又或者将二维(三维)的问题上升到 n-维……

但是这种玩下去是不是有意义,还是纯粹地玩物丧志就不知道了。
这对这类提高了难度的问题,目前玩烂的这个题目算是最简单的了。

本来这次来玩纯粹是来调节一下的,没想到能花了这么多的时间:L
页: 1 2 3 [4] 5 6
查看完整版本: 如何求出这个三元方程组的数值解?