import java.util.Scanner;
public class Demo{
/*
* 用户输入区间
* 均分区间
* 获取到函数原型
* 每个区间的中点带入函数原型得到高度y
*高度y的和乘以均分的区间x
* 得到积分
* */
static float minX;
static float maxX;
static String function;
static float num = 0;//区间高度之和
static float leng = 0;//区间的长度
static float centerNum = 0;//区间的中间值
public static void DingJifen(){
System.out.println("请输入要定积分的区间:\nmin(x) = ");
minX = new Scanner(System.in).nextFloat();
System.out.println("max(x) = ");
maxX = new Scanner(System.in).nextFloat();
System.out.println("请输入函数原型:\ny=");
function = new Scanner(System.in).next();
leng = (maxX - minX)/100;
for(float a = minX;a<=maxX;a += leng){
centerNum = a+leng/2;
num += function(centerNum);
}
System.out.println("在"+minX+"到"+maxX+"区间内,这个函数的定积分是:"+(num*leng));
}
// 获取函数原型
private static float function(float centerNum) {
/*
* 这个方法不知道怎么写了
* 想着把用户输入的函数原型转化成ascill码
* 然后循环遍历判断数据类型
* 最后整合起来
* 但是用户输入的函数里面可能有log、sqrt、sin等等
* 不知道怎么办了,是不是我思路有问题,求解!
* */
float y;
for(int i = 0;i<function.length();i++){
int a = function.charAt(i);//转换成ascll码
Object b = null;
if (48<=a&&a<=57) {
//a是数字
b = a;
break;
}else if(65<=a&&a<=90){
//a是大写字母
b = (char)a;
break;
}else if(97<=a&&a<=122){
//a是小写字母
b = (char)a;
break;
}else if(a==94){
//a是^
b = '^';
break;
}
if(a=='x'||a=='X'){
b = centerNum;
}
}
return 0;
}
public static void main(String[] args) {
DingJifen();
}
}
java怎么动态化用户输入的函数求定积分
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- weixin_46049876 2019-12-20 02:07关注
其实可以这样,可以学习下 Matlab、Maple, Mathematica 学习那些软件的编程语言,用 C java 这种属于通用的编程语言,你是需求偏向数学专业的,不适合用这类语言来实现,。还有另一种方式,你去寻找 有没有计算不定积分的java的jar包,,我就是这样学习的
解决 无用评论 打赏 举报
悬赏问题
- ¥15 python的qt5界面
- ¥15 无线电能传输系统MATLAB仿真问题
- ¥50 如何用脚本实现输入法的热键设置
- ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
- ¥30 深度学习,前后端连接
- ¥15 孟德尔随机化结果不一致
- ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
- ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
- ¥15 谁有desed数据集呀
- ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100