实验三 数值积分(android)
2016-05-08 09:40
555 查看
实验二博客地址:http://blog.csdn.net/double2hao/article/details/51217356
实验一博客地址:http://blog.csdn.net/double2hao/article/details/51152843
一、实验内容
分别写出变步长梯形法和romberge法计算定积分的算法,编写程序上机调试出结果,要求所编程序适用于任何类型的定积分,即能解决这一类问题,而不是某一个问题。
试验中以下列数据验证程序的正确性。
求 (sinx)/x的积分,积分区间为[0,1]
效果:(源码在文章底部)
![](https://img-blog.csdn.net/20160508092854319?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20160508092732355?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
主要工作:
1、添加了ThreeFragment的xml界面
2、掌握理解变步长梯形法和龙贝格法
主要逻辑代码:
ThreeFragment:
源码地址:http://download.csdn.net/detail/double2hao/9513415
实验一博客地址: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 = (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 / 2 + h / 2 * s; m = 2 * m; n++; } while (Math.abs(T - T[n - 1]) >= 0.0000001); stringResult = "n= " + n + "\nS= " + T + "\n误差为 " + Math.abs(T - 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
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories