积分曲线的微分方程_微积分计算题

(29) 2024-09-17 10:01:01

传送门:点我

格林公式积分曲线的微分方程_微积分计算题 (https://mushiming.com/)  第1张P,Q为关于x,y的函数。

现在为了方便起见,现给出x的积分上限1,积分下限0, y的积分上限x,积分下限0。

P只是关于Y的函数,Q只是关于X的函数。

输入

开始输入为测试组数n。每一组的开始输入Q的项数q和Q关于X的系数以及指数。接下来是P的多项式的项数p和P的关于Y的系数以及指数。

p<= 100, q <= 100。注意:指数是正整数,系数不为 0。

输出

每一组输出为一行,保留两位小数。

样例输入

2

1
2 2
1
3 3

2
1 1
2 2
2
1 1
2 2

样例输出

0.58
0.67

 

思路:

本质是套公式计算算偏导数

例如样例中第一个数据Q=2x^2,P=3y^3.

代入公式计算的就是

积分曲线的微分方程_微积分计算题 (https://mushiming.com/)  第2张

中间是4x-9y^2的原因:根据格林公式中,对Q求关于x的偏导,对P求对于y的偏导,两式相减得到4x-9y^2。

计算过程:

积分曲线的微分方程_微积分计算题 (https://mushiming.com/)  第3张

积分曲线的微分方程_微积分计算题 (https://mushiming.com/)  第4张

7/12 写成小数保留2位就是0.58

因此就模拟求导积分的过程就行了,因为上界下届都给定了,我套了个map存指数对应的系数(注意系数要用double)

代码:

#include <cstdio> #include <cstring> #include <cmath> #include <cstdlib> #include <ctime> #include <iostream> #include <algorithm> #include <sstream> #include <string> #include <vector> #include <queue> #include <stack> #include <map> #include <set> #include <utility> #include <bitset> #define LL long long #define pb push_back #define mk make_pair #define pill pair<int, int> #define mst(a, b) memset(a, b, sizeof a) #define REP(i, x, n) for(int i = x; i <= n; ++i) #define pi acos(-1.0) #define Max_N 1001 #define inf 0x3f3f3f3f #define N 1001 #define ll long long using namespace std; int main(){ int _; for(scanf("%d",&_);_--;){ int n;scanf("%d",&n); map<int,double>mp; while(n--){ int x;double a; scanf("%lf%d",&a,&x); a*=x; x-=1;//求导  mp[x+1] += a;//积分之后乘以x   } int m; scanf("%d",&m); while(m--){ int x;double a; scanf("%lf%d",&a,&x); mp[x] -= a; } double ans = 0; map<int,double>::iterator it = mp.begin(); for(;it != mp.end() ;it++){ 
      double xi = it->second; int zhi = it->first; ans += xi/(1.0*(zhi+1)); } printf("%.2lf\n",ans); } } /* 2 2 1 1 2 2 2 1 1 2 2 */

 

 

 

转载于:https://www.cnblogs.com/Esquecer/p/10307452.html

THE END

发表回复