你男朋友 2019-12-19 22:01 采纳率: 0%
浏览 345
已结题

java怎么动态化用户输入的函数求定积分

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();
    }
}

  • 写回答

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系统签名