首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

一个小程序有关问题。

2012-06-20 
一个小程序问题。。。。(x*cos(y)+1.89)*8481000x*sin(y)*8481160求x和y 求代码编写过程[解决办法]用C#解三

一个小程序问题。。。。
(x*cos(y)+1.89)*848=1000
x*sin(y)*848=1160
求x和y 求代码编写过程

[解决办法]
用C#解三角方程,不是吧。
不过这个方程比较特殊,高中数学没忘的话倒是可以解。
因为方程可以化为
x*cos(y)=1000/848-1.89
x*sin(y)=1160/848
两边平方相加,左边就只剩下x^2了。然后再根据正余弦的符号规则就可以确定y。
用C#的代码写就是:

C# code
double x1 = Math.Sqrt(Math.Pow(1000.0/848.0-1.89, 2) + Math.Pow(1160.0/848.0, 2));double y1 = Math.PI - Math.Asin(Math.Abs(1160.0/848.0/x));还有double x2 = -Math.Sqrt(Math.Pow(1000.0/848.0-1.89, 2) + Math.Pow(1160.0/848.0, 2));double y2 = 2 * Math.PI - Math.Asin(Math.Abs(1160.0/848.0/x));
[解决办法]
848(x·cos(y) + 1.89) = 1000
848·x·sin(y) = 1160

==>

x·cos(y) = - 602.72 / 848
x·sin(y) = + 1160.00 / 848

令 
a = - 602.72 / 848
b = + 1160.00 / 848

则有:

x·cos(y) = a
x·sin(y) = b

==>

x^2 · (cos(y))^2 + x^2 · (sin(y))^2 = a^2 + b^2

==> 

x^2 = a^2 + b^2

==> x = +/- sqrt(a^2 + b^2)

这样就得到x的正负两个值


然后求y:

1. 当x取正值时:

cos(y) < 0
sin(y) > 0

由此可知此时y在第二象限 ( Pi/2 < y < Pi )

2. 当x取负值时:

cos(y) > 0
sin(y) < 0

由此可知此时y在第四象限 ( 3·Pi/2 < y < 2·Pi )

用 arc sin 或者 arc cos (sin / cos 的反函数) 可以求得y值

注意,在数学上来讲,求得的不应该是一个y值,y应该是一个数列
这个数列以 (1)arc sin 或者 arc cos求得的y值, (2)以及此值以2Pi为周期获得的其它值 构成


具体的数值运算语句见2楼。

热点排行