实验三 数值积分(android)

实验二博客地址:http://blog.csdn.net/double2hao/article/details/51217356

实验一博客地址:http://blog.csdn.net/double2hao/article/details/51152843

一、实验内容

分别写出变步长梯形法和romberge法计算定积分的算法,编写程序上机调试出结果,要求所编程序适用于任何类型的定积分,即能解决这一类问题,而不是某一个问题。

试验中以下列数据验证程序的正确性。

求  (sinx)/x的积分,积分区间为[0,1]

效果:(源码在文章底部)

  

主要工作:

1、添加了ThreeFragment的xml界面

2、掌握理解变步长梯形法和龙贝格法

主要逻辑代码:

ThreeFragment:

package com.example.double2.numericcalculationtest;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.TextView;

/**
 * 项目名称:NumericCalculationTest
 * 创建人:Double2号
 * 创建时间:2016/4/13 21:41
 * 修改备注:
 */
public class ThreeFragment extends Fragment {

    private View views;
    private Spinner mSpinner;
    private final String[] spinnerChose = {"变步长梯形法", "龙贝格法"};
    private Button btnSure;
    private TextView tvResult;
    private String stringResult;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        views = inflater.inflate(R.layout.fra_three, null);
        initView();
        return views;
    }

    private void initView() {
        mSpinner = (Spinner) views.findViewById(R.id.sp_three_chose);
        btnSure = (Button) views.findViewById(R.id.btn_three_sure);
        tvResult = (TextView) views.findViewById(R.id.tv_three_result);

        mSpinner.setAdapter(new ArrayAdapter<String>(getActivity(),
                android.R.layout.simple_list_item_1, spinnerChose));
        btnSure.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                caculating();
            }
        });
    }

    private void caculating() {
        if (mSpinner.getSelectedItemPosition() == 0) {
            TrapezoidCaculation();
        } else {
            RombergCaculation();
        }
    }

    //变步长梯形法求值
    private void TrapezoidCaculation() {
        Double a = 0.0, b = 1.0, h;
        int m = 1, n = 0;
        Double[] T = new Double[100];//固定只能计算100次

        T[n] = (b - a) * (f(a) + f(b)) / 2;
        do {
            h = (b - a) / m;
            double s = 0.0;
            for (int k = 0; k < m; k++) {
                s += f(a + (k + 0.5) * h);
            }
            T[n + 1] = T[n] / 2 + h / 2 * s;
            m = 2 * m;
            n++;
        } while (Math.abs(T[n] - T[n - 1]) >= 0.0000001);

        stringResult = "n= " + n +
                "\nS= " + T[n]
                + "\n误差为 " + Math.abs(T[n] - T[n - 1]);
        tvResult.setText(stringResult);
    }

    //龙贝格法求值
    private void RombergCaculation() {
        Double a = 0.0, b = 1.0, h;
        Double[][] T = new Double[100][100];//固定只能计算100次

        int i = 0;
        T[i][i] = (b - a) * (f(a) + f(b)) / 2;
        do {
            i++;
            double s = 0;
            for (int j = 0; j <= Math.pow(2, i - 1) - 1; j++) {
                s += f(a + (2 * j + 1) * (b - a) / Math.pow(2, i));
            }
            s = s * (b - a) / Math.pow(2, i);
            s += T[i - 1][0] / 2;
            T[i][0] = s;
            for (int m = 1; m <= i; m++) {
                T[i][m] = (Math.pow(4, m) * T[i][m - 1] - T[i - 1][m - 1]) / (Math.pow(4, m) - 1);
            }
        } while (Math.abs(T[i][i] - T[i - 1][i - 1]) >= 0.0000001);
        stringResult = "n= " + i +
                "\nS= " + T[i][i]
                + "\n误差为 " + Math.abs(T[i][i] - T[i - 1][i - 1]);
        tvResult.setText(stringResult);

    }

    double f(double x) {
        double y;
        //如果x等于0,就直接返回1
        if (x == 0)
            y = 1;
        else y = Math.sin(x) / x;
        return (y);
    }
}

源码地址:http://download.csdn.net/detail/double2hao/9513415

时间: 2024-12-20 23:53:54

实验三 数值积分(android)的相关文章

实验三 Android程序设计

实验三 Android程序设计 课程:Java程序设计 班级:1652 姓名:孔月 学号:20165208 指导教师:娄嘉鹏 实验日期:2018.5.14 实验名称:Android程序设计 实验要求: 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程: 完成实验.撰写实验报告,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决办法(空洞的方法如"查网络"."问同学&quo

2017-2018-2 20165312 实验四《Android程序设计》实验报告

2017-2018-2 20165312 实验四<Android程序设计>实验报告 一.安装Android Studio并进行Hello world测试和调试程序 安装Android Studio 可以参考娄老师的博客Android开发简易教程或者参考<Java和Android开发学习指南>第二十四章,里面都有详细步骤,一步一步来就很简单~ 新建一个project项目后,project窗口主要有两个主要的节点:app和Gradle Scripts.app节点中包含了应用程序中所有的

2017-2018-2 20165228 实验四《Android程序设计》实验报告

一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:苏祚堃 学号:20165228 指导教师:娄嘉鹏 实验日期:2018年5月14日 实验时间:13:45 - 3:25 实验序号:实验四 实验名称:Android程序设计 实验要求: 没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到的问题(工具查找,安装,使用,程序的编辑,调试,运行等).解决

2017-2018-2 20165336 实验四《Android开发基础》实验报告

20165336 实验四 Android程序设计 一.实验报告封面 课程:Java程序设计 班级:1653班 姓名:康志强 学号:20165336 指导教师:娄嘉鹏 实验日期:2018年5月14日 实验时间:13:45 - 15:25 实验序号:实验四 实验名称:Android程序设计 二.实验要求 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程 2.完成实验.撰写实验报告,实验报告以博客方式发表在博客园,注意实验报告重点是运行结果,遇到

2017-2018-2 20165236 实验四《Android开发基础》实验报告

一.实验报告封面 课程:Java程序设计       班级:1652班       姓名:郭金涛       学号:20165236 指导教师:娄嘉鹏                              实验日期:2018年5月14日 实验时间:15:35 - 17:15                    实验序号:四 实验名称:Android开发基础 二.实验内容 1.没有Linux基础的同学建议先学习<Linux基础入门(新版)><Vim编辑器> 课程: 2.完成实验

2017-2018-2 20165331 实验四《Android开发基础》实验报告

实验四 <Android开发基础> 实验报告封面 课程:Java程序设计 班级:1653 姓名:胡麟 学号:20165331 成绩: 指导教师:娄嘉鹏 实验日期:2018.5.14 实验密级: 预习程度: 实验时间:15:35 - 17:50 仪器组次:31 必修/选修: 实验序号:4 实验名称:Android开发基础 实验目的与要求:①完成云班课中的检查点,也可以先完成实验报告,直接提交.注意不能只有截图,要有知识点,原理,遇到的问题和解决过程等说明.实验报告中一个检查点要有多张截图. ②发

2017-2018-2 20165215 实验四《Android开发基础》实验报告

2017-2018-2 20165215 实验四<Android开发基础>实验报告 一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:张家佳 学号:20165215 指导教师:娄嘉鹏 实验日期:2018年5月14日 实验时间:15:35 - 18:00 实验序号:四 实验名称: Andorid程序设计 二.实验目的与要求: 完成实验.撰写实验报告,注意实验报告重点是运行结果,遇到的问题以及分析 实验报告中统计自己的PSP(Personal Software Process)时间

172322 2018-2019-1 《程序设计与数据结构》实验三报告

172322 2018-2019-1 <程序设计与数据结构>实验三报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 张昊然 学号:20172322 实验教师:王志强 助教:张之睿/张师瑜 实验日期:2018年11月19日 必修/选修: 必修 1.实验内容 此处填写实验的具体内容: 节点一:定义一个Searching和Sorting类,并在类中实现linearSearch(教材P162 ),SelectionSort方法(P169),最后完成测试.要求不少于10个测试用例

20172303 2018-2019-1 《程序设计与数据结构》实验三报告

20172303 2018-2019-1 <程序设计与数据结构>实验三报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 范雯琪 学号:20172303 实验教师:王志强 助教:张师瑜/张之睿 实验日期:2018年11月19日 必修/选修: 必修 实验内容 节点一 定义一个Searching和Sorting类,并在类中实现LinearSearch(教材P162),SelectionSort方法(P169),最后完成测试. 要求不少于10个测试用例,提交测试用例设计情况(正