Java求多项式exp(x)=1+x+ 2!/ x2 + 3!/x3 +……+ i!/xi (|i!/xi|≤10^-10)

这篇博客介绍了一个简单的Java编程题目,要求计算exp(x)的和,其中x的幂次从0开始,每一项为i! / x^i,直到绝对值小于10^-10。博主分享了实现算法的思路,包括使用循环和动态更新当前项,并讨论了Java中除法和结果保留小数的处理方法。最后给出了源代码实现。

最近开始为CCF做准备,所以打算把看的题都写下来,肯定都是站在巨人的肩膀上,如有重复和不足,请大家多多指教。谢谢!

算法题目很简单:exp(x)=1+x+ 2!/ x2 + 3!/x3 +……+ i!/xi   (|i!/xi|≤10^-10)  保留四位小数

分析:用s代表和,i代表当前x的幂次,t代表当前当前项

 1、初始值  s=1 i=0 t=1

 2、循环结束的条件 Math.abs(t) > Math.pow(10,-10)  (Java语言中的Math函数,这个也是临时查的)

 3、循环规律  t(i)=x^i/i!=x^(i-1)/(i-1)! * (x/i) = t(i-1) * (x/i) 所以   i = i+1; t = t * x/i ; s = s + t;  (表达式看着很蛋疼,用笔在纸上写出了会比较好)

 4、对于编程语言来说,整数5/2=2,所以在做除法的时候要注意,不然最后是没有小数部分的,我的处理方法是直接用double类型的变量来保存数据,但是对于结果对不对,我确实没法验证,若有大神指点,感激不尽!

 5、最后是小数的保留,格式很多的,一查就有了!

源代码如下:

import java.text.DecimalFormat;
import java.util.Scanner;
public class Main2{
static int i=0;//初始值
static double s=1.0;
static double t=1.0;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
double x = in.nextDouble();
i = i+1;
t = t*(x/i);
s = s+t;
while(Math.abs(t) > Math.pow(10, -10)){
i = i+1;
t = t*(x/i);
s = s+t;
}
DecimalFormat df =new java.text.DecimalFormat("#.0000");
System.out.println(df.format(s));
}
}

03-08
一、实验目的 通过实验操作,学生能够掌握MATLAB中的变量与函数的定义和使用方法;理解MATLAB中的数组对象,及其创建、访问和操作方法;理解矩阵在MATLAB中的重要地位,掌握矩阵的创建、运算等操作;了解MATLAB的编程方法,包括脚本、分支、循环等,可以用MATLAB编写程序完成数据处理任务,掌握使用MATLAB进行数据可视化的方法,包括二维图形、三维图形以及特殊图形的绘制,以及图像处理的相关功能。 二、实验要 任务一:解下列微分方程 1. 的通解. 输入命令:dsolve(&#39;Du=1+u&#39;,&#39;t&#39;) 2.微分方程的特解. 输入命令:y=dsolve(&#39;D2y+4*Dy+29*y=0&#39;,&#39;y(0)=0,Dy(0)=15&#39;,&#39;x&#39;) 3.微分方程组的通解. 输入命令: [x,y,z]=dsolve(&#39;Dx=2*x-3*y+3*z&#39;,&#39;Dy=4*x-5*y+3*z&#39;,&#39;Dz=4*x-4*y+2*z&#39;, &#39;t&#39;) 任务二:一个慢跑者在平面上沿着他喜欢的路径跑步,突然一只狗攻击他,这只狗以恒定速率跑向慢跑者,狗的运动方向始终指向慢跑者,计算并画出狗的运动轨迹。 任务三:山区地貌:在某山区测得一些地点的高程如下表:(平面区域1200<=x<=4000,1200<=y<=3600),试作出该山区的地貌图和等高线图,并对几种插值方法的结果进行详细比较。 3600 3200 2800 2400 2000 1600 1200 14801500 1550 1510 1430 1300 1200 980 15001550 1600 1550 1600 1600 1600 1550 15001200 1100 1550 1600 1550 1380 1070 15001200 1100 1350 1450 1200 1150 1010 1390 1500 1500 1400 900 1100 1060 950 1320 1450 1420 1400 1300 700 900 850 1130 1250 1280 1230 1040 900 500 700 Y/x 1200 1600 2000 2400 2800 3200 3600 4000 任务四:用给定的多项式,如y=x3-6x2+5x-3,产生一组数据(xi,yi,i=1,2,…,n),再在yi上添加随机干扰(可用rand产生(0,1)均匀分布随机数,或用rands产生N(0,1)分布随机数,然后用xi和添加了随机干扰的yi作的3多项式拟合,与原系数比较。如果作2或4次多项式拟合,结果如何? 任务五:用电压V=10伏的电池给电容器充电,电容器上t刻的电压为 ,其中V0是电容器的初始电压,是充电常数。试由下面一组t,V数据确定V0,。
最新发布
11-25
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值