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包,,我就是这样学习的
解决 无用评论 打赏 举报
悬赏问题
- ¥100 有人会搭建GPT-J-6B框架吗?有偿
- ¥15 求差集那个函数有问题,有无佬可以解决
- ¥15 【提问】基于Invest的水源涵养
- ¥20 微信网友居然可以通过vx号找到我绑的手机号
- ¥15 寻一个支付宝扫码远程授权登录的软件助手app
- ¥15 解riccati方程组
- ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
- ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
- ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
- ¥50 树莓派安卓APK系统签名