数值计算

数值计算

基准时间限制:1 秒 空间限制:131072 KB 分值: 80
令  F(x)=wk=1(Ak+sin(k)sin(x+k)+Bk+cos(k)cos(x+k)) 
求F(x)=0的前n小的正根的和。
n<=3e6,A<=1e3,B<=1e3
其中w是定值,为1e4
保留到小数点后3位
Input
三个数 A B n
Output
答案 保留3位小数
Input示例
5 4 1000
Output示例
1572338.870
思路:

把式子整理下然后就行了,F(x)可以最终写成Xsin(x)+Ycos(x)的形式,F(x)=Zsin(x+α),那么-a+pi就是通解。
 1 #include<stdio.h>
 2 #include<algorithm>
 3 #include<iostream>
 4 #include<string.h>
 5 #include<queue>
 6 #include<stack>
 7 #include<math.h>
 8 using namespace std;
 9 typedef long long LL;
10 double pi = 3.14159265358979323846264;
11 int main(void)
12 {
13         double A,B;
14         int n;
15         scanf("%lf %lf %d",&A,&B,&n);
16         int i,j;
17         double sum = 0;
18         double summ = 0;
19         for(i = 1; i <= 10000; i++)
20         {
21                 sum = sum + A*cos(1.0*i)/(i+sin(1.0*i));
22                 sum = sum - B*sin(1.0*i)/(i+cos(1.0*i));
23                 summ = summ + A*sin(1.0*i)/(i+sin(1.0*i));
24                 summ = summ + B*cos(1.0*i)/(i+cos(1.0*i));
25         }
26         double xx = sqrt(sum*sum+summ*summ);
27         double x = 1.0*sum/xx;
28         double y = acos(x);
29         while(y<=0)
30         {
31                 y+=pi;
32         }
33         double ak = y;
34         n--;//printf("%lf\n",y);
35         while(n)
36         {
37                 n--;
38                 y+=pi;
39                 ak+=y;
40         }
41         printf("%.3f\n",ak);
42         return 0;
43 }

 

 
  

转载于:https://www.cnblogs.com/zzuli2sjy/p/5910407.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值