【二分查找】 Can you solve this equation? HDU基础04二分法02

本文介绍了一种通过迭代逼近的方法来寻找特定区间内多项式方程的实数解的算法实现。该算法适用于形如8*x^4+7*x^3+2*x^2+3*x+6=Y的四次多项式方程,并能在0到100的范围内找到方程的根或报告无解情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Problem Description

Now,given the equation 8*x^4 + 7*x^3 + 2*x^2 + 3*x + 6 == Y,can you find its solution between 0 and 100;
Now please try your lucky.

Input

The first line of the input contains an integer T(1<=T<=100) which means the number of test cases. Then T lines follow, each line has a real number Y (fabs(Y) <= 1e10);

Output

For each test case, you should just output one real number(accurate up to 4 decimal places),which is the solution of the equation,or “No solution!”,if there is no solution for the equation between 0 and 100.

Sample Input

2
100
-4

Sample Output

1.6152
No solution!

Author

Redow



#include <bits/stdc++.h>
using namespace std;

double f(double x)
{
	return 8*x*x*x*x+7*x*x*x+2*x*x+3*x+6;
}
int main()
{
	int T;scanf("%d",&T);
	while(T--)
	{
		long long y;
		scanf("%lld",&y);

		double l=0,r=100;
		double ans=-1;

		for(int i=0;i<100;i++)
		{   //循环一定次数保证精度
			double mid=(l+r)/2;
			if(abs(f(mid)-y)<=1e-6)
			{
				ans=mid;
				break;
			}
			else if(f(mid)>y)
				r=mid;
			else l=mid;
		}

		if(ans==-1)
			printf("No solution!\n");
		else
			printf("%.4f\n",ans);
	}
	return 0;
}

Yes, I can solve the equation u&#39;&#39;(x) - u&#39;(x) + 2u(x) = 1 using Galerkin method. Here are the steps to solve this equation using Galerkin method: Step 1: Choose a set of basis functions that span the solution space. In this case, we can choose the basis functions as follows: ϕ1(x) = 1, ϕ2(x) = x Step 2: Write the trial solution as a linear combination of the basis functions: u(x) = c1ϕ1(x) + c2ϕ2(x) Substituting the basis functions and the trial solution into the differential equation, we get: c1(2ϕ1(x) - ϕ2(x)) + c2(2ϕ2(x) - ϕ1(x)) - c1(ϕ2&#39;(x) - 2ϕ1&#39;(x)) - c2(ϕ1&#39;(x) - 2ϕ2&#39;(x)) = 1 Step 3: Multiply both sides of the equation by each basis function and integrate over the domain [0, 1]: ∫[0,1] c1(2ϕ1(x) - ϕ2(x))ϕ1(x) dx + ∫[0,1] c2(2ϕ2(x) - ϕ1(x))ϕ1(x) dx - ∫[0,1] c1(ϕ2&#39;(x) - 2ϕ1&#39;(x))ϕ1(x) dx - ∫[0,1] c2(ϕ1&#39;(x) - 2ϕ2&#39;(x))ϕ1(x) dx = ∫[0,1] 1*ϕ1(x) dx ∫[0,1] c1(2ϕ1(x) - ϕ2(x))ϕ2(x) dx + ∫[0,1] c2(2ϕ2(x) - ϕ1(x))ϕ2(x) dx - ∫[0,1] c1(ϕ2&#39;(x) - 2ϕ1&#39;(x))ϕ2(x) dx - ∫[0,1] c2(ϕ1&#39;(x) - 2ϕ2&#39;(x))ϕ2(x) dx = ∫[0,1] 1*ϕ2(x) dx where ϕ1&#39;(x) and ϕ2&#39;(x) are the derivatives of ϕ1(x) and ϕ2(x) with respect to x. Step 4: Solve the resulting system of equations for the coefficients c1 and c2. After solving the system of equations, we get the solution: u(x) = -1/3 + 2x/3 + e^(2x)/3 - e^(-x)/3 Therefore, the solution to the equation u&#39;&#39;(x) - u&#39;(x) + 2u(x) = 1 using Galerkin method is u(x) = -1/3 + 2x/3 + e^(2x)/3 - e^(-x)/3.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值