点击打开链接uva 10341
题目意思: 给定一个函数的表达式,然后给定系数值,要我们求出未知数x
解题思路: 1:由函数的性质可知,如果有解,那么将区间两个点带入求出的数值的乘积为负数。首先先判断这个函数是否有解,如果无解直接返回输出,有解进行二分查找
2:二分查找时候由于0=<x<=1,那么初始化left = 0 , right = 1,我习惯用迭代二分,所以这里用while循环代替递归,但是由于double类型的比较会有很大的误差,所以用left-right < 1e-9来判断相等而不是直接left-right == 0,然后我么用mid来带入函数,如果得到的值是大于0,那么这里是要向右递归的,因为这个函数是递减的,由f(0) > f(1) 可以知道,所以这里很平常的有些不同。
3:注意迭代二分的使用,注意double类型的比较
代码:
#include <algorithm>
#include <iostream>
#include <cstring>
#include <string>
#include <vector>
#include <cstdio>
#include <stack>
#include <queue>
#include <cmath>
#include <set>
using namespace std
double p , q , r , s , t , u;
void solve(){
double left , right , mid , tmp;
double s1 , s2;
s1 = p*(exp(0))+q*sin(0)+r*cos(0)+s*tan(0)+t*0+u;
s2 = p*(exp(-1))+q*sin(1)+r*cos(1)+s*tan(1)+t*1+u;
if(s1*s2 > 0) printf("No solution\n");
else{
left = 0.0 ; right = 1.00;
while(right-left > 1e-9){//注意判断条件
mid = (left +right)/2;//中间值
tmp = p*(exp(-mid))+q*sin(mid)+r*cos(mid)+s*tan(mid)+t*mid*mid+u;//求出函数值
if(tmp < 0) right = mid;//小于0则要向左边二分
else left = mid;//否则右边二分
}
printf("%.4lf\n" , mid);//输出的mid就是x值
}
}
int main(){
//freopen("input.txt" , "r" , stdin);
while(scanf("%lf%lf%lf%lf%lf%lf" , &p,&q,&r,&s,&t,&u) != EOF)
solve();
return 0;
}
分享到:
相关推荐
Algorithm-How-to-Solve-it-by-Computer-R-G-Dromey.zip,如何用计算机求解-r.g.dromey解,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
XPath-Solve.rar XPath-Solve.rar XPath-Solve.rar
藏经阁-Redesigning-PKI-To-Solve-Revocation-Expiration-And-Rotation-Problems.pdf
C-code-to-solve-quadratic-equation-源码.rar
use-design-to-solve-technical-bottlenecks-090419084944-phpapp01
Algorithm-solve-leetcode-problems.zip,这个gitbook包含了我解决的所有leetcode问题。,算法是为计算机程序高效、彻底地完成任务而创建的一组详细的准则。
grDecOrd - solve the problem about decomposition of the digraph to the sections with mutually accessed vertexes (strongly connected components); grDistances - find the distances between any vertexes ...
leetcode中国 怎样解题 leetcode 记得高中时偶然翻到一本小册子,书名叫《怎样解题》。它是美国的一个数学家,教育家写的。 当时我还陷入在应试教育的题海战术中,靠着大量的刷数学题来达到条件式的反射。...
Polya, "How to Solve It" will show anyone in any field how to think straight. In lucid and appealing prose, Polya reveals how the mathematical method of demonstrating a proof or finding an unknown ...
此程序主要是用MATLAB仿真模拟FDTD的主程序,也是最基本的程序。
Create React App入门该项目是通过引导的。可用脚本在项目目录中,可以运行:yarn start在开发模式下运行应用程序。打开在浏览器中查看它。如果您进行编辑,则页面将重新加载。您还将在控制台中看到任何棉绒错误。...
运行ipython 笔记本(在目录内部lets-start-solve-problem-on-kaggle ): ipython notebook 。 注意:您需要在安装ipython之前(以及一些其他所需的软件包),或者仅安装 。 之后,您将完成所有三个步骤(在不同...
Gauss seidel matlab program for feeders
该程序用贪心算法来求解0-1背包问题 采用贪婪准则
利用matlab开发一套求解雷诺方程的办法,利用有限差分法。
逐步解决数独 Vue.js + PixiJS + Flask + Python3 ...cd sudo-dynamic-solve python3 -m venv venv source venv/bin/activate pip install -r requirements.txt flask run 打开浏览器,输入: 享受!
作者: G. Polya 副标题: A New Aspect of Mathematical Method (Princeton Science Library) ISBN: 9780691119663 页数: 288 定价: USD 16.95 出版社: Princeton University Press 装帧: Paperback ...
java-script-probleam-solve
神奇的魅力解决您的心理困境 :high_voltage:...$ cd Magical-Charisma-To-Solve-Your-Mental-Dilemma 部署到GitHub :package: 完成设置后,您应该在线托管网站。 强烈建议您通读的 。 部署到Netlify :package: 您也可