zoukankan      html  css  js  c++  java
  • 数值计算

    数值计算

    基准时间限制: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
    ",y);
    35         while(n)
    36         {
    37                 n--;
    38                 y+=pi;
    39                 ak+=y;
    40         }
    41         printf("%.3f
    ",ak);
    42         return 0;
    43 }
    
    
    油!油!you@
  • 相关阅读:
    【概念】指针
    【c++】随机数
    组装一台计算机
    模拟打印机
    实现手机的某些功能
    作业
    static 静态内部类
    java中编译报错 ClassCastException 是什么原因,如何处理
    作业1 2
    作业2
  • 原文地址:https://www.cnblogs.com/zzuli2sjy/p/5910407.html
Copyright © 2011-2022 走看看