专题软件开发实践报告

时间:2024.4.5

                                                             

教学实践报告

“反问题”的数值求解     

学生姓名    

        信息与计算科学

         1123202

指导教师

 

20##95

第一周实践报告

一、        任务安排

1.1              时间计划

   本次实践共三周,又第二周上课时间只有两天,所以总共开发时间12天。经讨论小组将第一周开发最初的界面,第二周整合各组员的界面,第三周修改代码、程序调试、优化界面。

1.2              任务分工计划

   小组成员,界面开发程序Filter_fn、Gen_data等六个,每人负责两个程序的界面开发,实现组员之间分工清晰、相互合作。

二、        熟悉“反问题”的数值解法研究

2.1 文献资料的翻译

   通过指导老师及谷歌翻译得到资料的大致翻译,对研究问题有一个比较清晰的理解。

2.2 “反问题”数值解法

  

三、第一周所做:

3.1 反问题的理解及翻译

3.2 设置整体的界面及控件callback

3.3 把图形画到指定的区域

3.4 设置变量调用函数     

四、程序理解:

function varargout = d(varargin)

% --- Executes on button press in pushbutton1.

function pushbutton1_Callback(hObject, eventdata, handles)%设置的控件反应

% hObject    handle to pushbutton1 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

fg;%调用函数

% --- Executes on button press in pushbutton2.

function pushbutton2_Callback(hObject, eventdata, handles)

% hObject    handle to pushbutton2 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

jiemian;

% --- Executes on button press in pushbutton3.

function pushbutton3_Callback(hObject, eventdata, handles)

% hObject    handle to pushbutton3 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

s1=str2double(get(handles.edit2,'String'))%从文本框中获得数据赋值给s1

s2=str2double(get(handles.edit3,'String'))%从文本框中获得数据赋值给s2

s3=str2double(get(handles.edit4,'String'))%从文本框中获得数据赋值给s3

  h = 1/s1;

  x = [h/2:h:1-h/2]';

 

%  Compute matrix K corresponding to convolution with Gaussian kernel.

  kernel = (1/sqrt(pi)/s2) * exp(-(x-h/2).^2/s2^2);

  K = toeplitz(kernel)*h;

%  Set up true solution f_true and data d = K*f_true + error.

  f_true = .75*(.1<x&x<.25) + .25*(.3<x&x<.32) + (.5<x&x<1).*sin(2*pi*x).^4;

  Kf = K*f_true;

  eta = s3/100 * norm(Kf) * randn(s1,1)/sqrt(s1);

  d = Kf + eta;

 

%  Display the data.

%  figure(2)

    plot(x,f_true,'-', x,d,'o',x,Kf,'--')

    xlabel('x axis')

    axes(handles.axes1);%把图形画到指定的位置

% --- Executes on button press in pushbutton4.

function pushbutton4_Callback(hObject, eventdata, handles)

% hObject    handle to pushbutton4 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

 s1=str2double(get(handles.edit2,'String'))

s2=str2double(get(handles.edit3,'String'))

s3=str2double(get(handles.edit4,'String'))

 

%  Set up grid.

  h = 1/s1;

  x = [h/2:h:1-h/2]';

 

%  Compute matrix K corresponding to convolution with Gaussian kernel.

  kernel = (1/sqrt(pi)/s2) * exp(-(x-h/2).^2/s2^2);

  K = toeplitz(kernel)*h;

 % figure(1)

    mesh(K)

    title('Mesh Plot Representation of Matrix K')

        axes(handles.axes3);

% --- Executes on button press in pushbutton5.

function pushbutton5_Callback(hObject, eventdata, handles)

% hObject    handle to pushbutton5 (see GCBO)

% eventdata  reserved - to be defined in a future version of MATLAB

% handles    structure with handles and user data (see GUIDATA)

 s1=str2double(get(handles.edit2,'String'))

s2=str2double(get(handles.edit3,'String'))

s3=str2double(get(handles.edit4,'String'))

 

%  Set up grid.

  h = 1/s1;

  x = [h/2:h:1-h/2]';

 

%  Compute matrix K corresponding to convolution with Gaussian kernel.

  kernel = (1/sqrt(pi)/s2) * exp(-(x-h/2).^2/s2^2);

  K = toeplitz(kernel)*h;

%  Set up true solution f_true and data d = K*f_true + error.

  f_true = .75*(.1<x&x<.25) + .25*(.3<x&x<.32) + (.5<x&x<1).*sin(2*pi*x).^4;

  Kf = K*f_true;

  eta = s3/100 * norm(Kf) * randn(s1,1)/sqrt(s1);

  d = Kf + eta;

 

%  Display the data.

  

%  Compute an eigendecomposition of K. K is symmetric, so this is

%  equivalent to an SVD.

  [V,svals] = eig(K);

  [svals,indx] = sort(-diag(svals));  %  Sort -eigenvalues in decreasing order.

  svals = -svals;                     %  +eigs are in increasing order.

  V = V(:,indx);                %  Corresponding eigenvectors.

  %figure(3)

    semilogy(svals,'o')

    xlabel('index i')

    ylabel('\sigma_i')

    title('Singular Values of K')

      axes(handles.axes1);


第二篇:软件开发基础实践报告形式


中国矿业大学徐海学院 软件开发基础实践报告 姓 名:

专 业:

指导教师:

赵辉 学 号: 22110478 计算机科学与技术 孙锦程 职 称: 教师 2012 年 6 月 30 徐州

软件开发基础实践报告形式

软件开发基础实践报告形式

软件开发基础实践报告形式

import java.awt.Button;

import java.awt.Color;

import java.awt.Frame;

import java.awt.GridLayout;

import java.awt.Panel;

import java.awt.TextField;

import java.awt.event.*;

import java.lang.*;

import javax.swing.*;

public class Counter extends Frame

{

//声明三个面板的布局

GridLayout gl1,gl2,gl3;

Panel p0,p1,p2,p3;

JTextField tf1;

TextField tf2;

Button

b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,b10,b11,b12,b13,b14,b15,b16,b17,b18,b19,b20,b21,b22,b23,b24,b25,b26; StringBuffer str;//显示屏所显示的字符串

double x,y;//x和y都是运算数

int z;//Z表示单击了那一个运算符.0表示"+",1表示"-",2表示"*",3表示"/"

static double m;//记忆的数字

public Counter()

{

gl1=new GridLayout(1,4,10,0);//实例化三个面板的布局 gl2=new GridLayout(4,1,0,15);

gl3=new GridLayout(4,5,10,15);

tf1=new JTextField(27);//显示屏

tf1.setHorizontalAlignment(JTextField.RIGHT); tf1.setEnabled(false);

tf1.setText("0");

tf2=new TextField(10);//显示记忆的索引值

tf2.setEditable(false);

//实例化所有按钮、设置其前景色并注册监听器 b0=new Button("Backspace");

b0.setForeground(Color.red);

b0.addActionListener(new Bt());

b1=new Button("CE");

b1.setForeground(Color.red);

b1.addActionListener(new Bt());

b2=new Button("C");

b2.setForeground(Color.red);

b2.addActionListener(new Bt()); b3=new Button("MC");

b3.setForeground(Color.red); b3.addActionListener(new Bt()); b4=new Button("MR");

b4.setForeground(Color.red); b4.addActionListener(new Bt()); b5=new Button("MS");

b5.setForeground(Color.red); b5.addActionListener(new Bt()); b6=new Button("M+");

b6.setForeground(Color.red); b6.addActionListener(new Bt()); b7=new Button("7");

b7.setForeground(Color.blue); b7.addActionListener(new Bt()); b8=new Button("8");

b8.setForeground(Color.blue); b8.addActionListener(new Bt()); b9=new Button("9");

b9.setForeground(Color.blue); b9.addActionListener(new Bt());

b10=new Button("/");

b10.setForeground(Color.red); b10.addActionListener(new Bt()); b11=new Button("sqrt");

b11.setForeground(Color.blue); b11.addActionListener(new Bt()); b12=new Button("4");

b12.setForeground(Color.blue); b12.addActionListener(new Bt()); b13=new Button("5");

b13.setForeground(Color.blue); b13.addActionListener(new Bt()); b14=new Button("6");

b14.setForeground(Color.blue); b14.addActionListener(new Bt()); b15=new Button("*");

b15.setForeground(Color.red); b15.addActionListener(new Bt()); b16=new Button("%");

b16.setForeground(Color.blue); b16.addActionListener(new Bt()); b17=new Button("1");

b17.setForeground(Color.blue); b17.addActionListener(new Bt()); b18=new Button("2");

b18.setForeground(Color.blue); b18.addActionListener(new Bt()); b19=new Button("3");

b19.setForeground(Color.blue); b19.addActionListener(new Bt()); b20=new Button("-");

b20.setForeground(Color.red); b20.addActionListener(new Bt()); b21=new Button("1/X");

b21.setForeground(Color.blue); b21.addActionListener(new Bt()); b22=new Button("0");

b22.setForeground(Color.blue); b22.addActionListener(new Bt()); b23=new Button("+/-");

b23.setForeground(Color.blue); b23.addActionListener(new Bt()); b24=new Button(".");

b24.setForeground(Color.blue);

b24.addActionListener(new Bt()); b25=new Button("+");

b25.setForeground(Color.red); b25.addActionListener(new Bt()); b26=new Button("=");

b26.setForeground(Color.red); b26.addActionListener(new Bt());

//实例化四个面板

p0=new Panel();

p1=new Panel();

p2=new Panel();

p3=new Panel();

//创建一个空字符串缓冲区 str=new StringBuffer();

//添加面板p0中的组件和设置其在框架中的位置和大小

p0.add(tf1);

p0.setBounds(10,25,300,40);

//添加面板p1中的组件和设置其在框架中的位置和大小 p1.setLayout(gl1);

p1.add(tf2);

p1.add(b0);

p1.add(b1);

p1.add(b2);

p1.setBounds(10,65,300,25);

//添加面板p2中的组件并设置其的框架中的位置和大小 p2.setLayout(gl2);

p2.add(b3);

p2.add(b4);

p2.add(b5);

p2.add(b6);

p2.setBounds(10,110,40,150);

//添加面板p3中的组件并设置其在框架中的位置和大小 p3.setLayout(gl3);//设置p3的布局

p3.add(b7);

p3.add(b8);

p3.add(b9);

p3.add(b10);

p3.add(b11);

p3.add(b12);

p3.add(b13);

p3.add(b14);

p3.add(b15);

p3.add(b16);

p3.add(b17);

p3.add(b18);

p3.add(b19);

p3.add(b20);

p3.add(b21);

p3.add(b22);

p3.add(b23);

p3.add(b24);

p3.add(b25);

p3.add(b26);

p3.setBounds(60,110,250,150);

//设置框架中的布局为空布局并添加4个面板 setLayout(null);

add(p0);

add(p1);

add(p2);

add(p3);

setResizable(false);//禁止调整框架的大小 //匿名类关闭窗口

addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent e1) {

System.exit(0);

}

});

setBackground(Color.lightGray);

setBounds(100,100,320,280);

setVisible(true);

}

//构造监听器

class Bt implements ActionListener {

public void actionPerformed(ActionEvent e2) {

try{

if(e2.getSource()==b1)//选择"CE"清零

{

tf1.setText("0");//把显示屏清零

str.setLength(0);//清空字符串缓冲区以准备接收新的输入运算数

}

else if(e2.getSource()==b2)//选择"C"清零

{

tf1.setText("0");//把显示屏清零

str.setLength(0);

}

else if(e2.getSource()==b23)//单击"+/-"选择输入的运算数是正数还是负数

{

x=Double.parseDouble(tf1.getText().trim()); tf1.setText(""+(-x));

}

else if(e2.getSource()==b25)//单击加号按钮获得x的值和z的值并清空y的值

{

x=Double.parseDouble(tf1.getText().trim());

str.setLength(0);//清空缓冲区以便接收新的另一个运算数 y=0d;

z=0;

}

else if(e2.getSource()==b20)//单击减号按钮获得x的值和z的值并清空y的值

{

x=Double.parseDouble(tf1.getText().trim()); str.setLength(0);

y=0d;

z=1;

}

else if(e2.getSource()==b15)//单击乘号按钮获得x的值和z的值并清空y的值

{

x=Double.parseDouble(tf1.getText().trim()); str.setLength(0);

y=0d;

z=2;

}

else if(e2.getSource()==b10)//单击除号按钮获得x的值和z的值并空y的值

{

x=Double.parseDouble(tf1.getText().trim());

str.setLength(0);

y=0d;

z=3;

}

else if(e2.getSource()==b26)//单击等号按钮输出计算结果 {

str.setLength(0);

switch(z)

{

case 0 : tf1.setText(""+(x+y));break;

case 1 : tf1.setText(""+(x-y));break;

case 2 : tf1.setText(""+(x*y));break;

case 3 : tf1.setText(""+(x/y));break;

}

}

else if(e2.getSource()==b24)//单击"."按钮输入小数 {

if(tf1.getText().trim().indexOf('.')!=-1)//判断字符串

中是否已经包含了小数点

{

}

else//如果没数点有小

{

if(tf1.getText().trim().equals("0"))//如果初时显示为0 {

str.setLength(0);

tf1.setText((str.append("0"+e2.getActionCommand())).toString());

}

else if(tf1.getText().trim().equals(""))//如果初时显示为空则不做任何操作

{

}

else

{

tf1.setText(str.append(e2.getActionCommand()).toString

());

}

}

y=0d;

}

else if(e2.getSource()==b11)//求平方根 {

x=Double.parseDouble(tf1.getText().trim()); tf1.setText("数字格式异常");

if(x<0)

tf1.setText("负数没有平方根");

else

tf1.setText(""+Math.sqrt(x));

str.setLength(0);

y=0d;

}

else if(e2.getSource()==b16)//单击了"%"按钮

{

x=Double.parseDouble(tf1.getText().trim()); tf1.setText(""+(0.01*x));

str.setLength(0);

y=0d;

}

else if(e2.getSource()==b21)//单击了"1/X"按钮 {

x=Double.parseDouble(tf1.getText().trim()); if(x==0)

{

tf1.setText("除数不能为零");

}

else

{

tf1.setText(""+(1/x));

}

str.setLength(0);

y=0d;

}

else if(e2.getSource()==b3)//MC为清除内存 {

m=0d;

tf2.setText("");

str.setLength(0);

}

else if(e2.getSource()==b4)//MR为重新调用存储的数据 {

if(tf2.getText().trim()!="")//有记忆数字

{

tf1.setText(""+m);

}

}

else if(e2.getSource()==b5)//MS为存储显示的数据 {

m=Double.parseDouble(tf1.getText().trim()); tf2.setText("M");

tf1.setText("0");

str.setLength(0);

}

else if(e2.getSource()==b6)//M+为将显示的数字与已经存储的数据相加要查看新的数字单击MR

{

m=m+Double.parseDouble(tf1.getText().trim()); }

else//选择的是其他的按钮

{

if(e2.getSource()==b22)//如果选择的是"0"这个数字键 {

if(tf1.getText().trim().equals("0"))//如果显示屏显示的为零不做操作

{

}

else

{

tf1.setText(str.append(e2.getActionCommand()).toString

());

y=Double.parseDouble(tf1.getText().trim());

}

}

else if(e2.getSource()==b0)//选择的是“BackSpace”按钮 {

if(!tf1.getText().trim().equals("0"))//如果显示屏显示的不是零

{

if(str.length()!=1)

{

tf1.setText(str.delete(str.length()-1,str.length()).toString());//可能抛出字符串越界异常

}

else

{

tf1.setText("0");

str.setLength(0);

}

}

y=Double.parseDouble(tf1.getText().trim()); }

else//其他的数字键

{

tf1.setText(str.append(e2.getActionCommand()).toString

());

y=Double.parseDouble(tf1.getText().trim()); }

}

}

catch(NumberFormatException e){

tf1.setText("数字格式异常");

}

catch(StringIndexOutOfBoundsException e){

tf1.setText("字符串索引越界");

}

}

}

public static void main(String args[])

{

new Counter();

} }

更多相关推荐:
软件工程毕业设计开题报告范文

淮海工学院毕业设计开题报告学生姓名朱兵学号011122152专业计算机应用与维护设计题目基于WEB的销售管理系统ASP开发指导教师樊宁20xx年4月16日1开题报告填写要求1开题报告作为毕业设计论文答辩委员会对...

毕业设计开题报告(软件开发类)-参考

毕业设计开题报告题目灯饰公司商品销售管理系统的开发学生姓名孟建坤学号0821024023所在院系数学与计算机科学学院专业班级信息管理与信息系统081班指导教师杨刚20xx年3月5日1234

软件工程开题报告

西北工业大学本科毕业设计论文开题报告专业软件工程班级14011107备注本科生毕业设计论文开题报告要求1本科生选题报告内容应包括选题目的与背景主要研究内容和方案预期达到的目标2本科开题报告由各专业负责安排公开进...

软件开发 毕业设计(论文)开题报告

莱芜职业技术学院毕业设计论文开题报告论文题目基于JavaWeb的新闻发布系统管理软件所在系计算机系姓名专业班级指导老师二零一一年三月七日开题报告评审表毕业设计论文开题报告

软件工程专业 开题报告

辽宁工程技术大学本科毕业设计论文开题报告题目和丰牧业海城分公司办公自动化系统指导教师齐向明院系部软件学院专业班级财升本1001班学号1020xx0104姓名董月日期20xx312教务处印制一选题的目的意义和研究...

软件工程硕士论文开题报告

学院专业软件工程学号20xx姓名导师姓名导师职称副教授年月日武汉大学关于研究生学位论文开题报告的规定根据中华人民共和国学位条例及其暂行实施办法和武汉大学学位授予工作细则的精神为做好研究生学位论文的开题报告保证学...

软件开发毕业设计开题报告

计算机工程系本科毕业设计论文开题报告

企业即时通讯软件开题报告

本科毕业设计(论文)开题报告论文题目:企业即时通讯软件的设计与实现学生姓名:学生学号:学生院系:计算机科学学院学生专业:软件工程指导老师:1.引言1.1选题的目的和意义计算机技术的快速发展,特别是计算机网络的发…

jsp网站开发开题报告

赣南师院数学与计算机科学学院20xx级20xx届本科毕业论文设计开题报告论文设计题目基于JSP社交网站的开发与实现专业计算机科学与技术学生姓名黄小雪指导老师巫华芳教研室主任签名教学学院院长签名年月日

基于android的游戏开发开题报告

开题报告1研究的目的和意义Android操作系统最初是由AndyRubin制作最初主要支持手机在20xx年被搜索巨头Google收购注资并组建开放手机联盟开发改良随后逐渐扩展到平板电脑及其他领域上20xx年全球...

软件项目管理系统开题报告

北京石油化工学院本科毕业设计论文开题报告题目名称题目性质学生姓名专业学院年级指导教师软件项目管理系统设计郭子艺计算机科学与技术信息工程学院20xx届李林峰20xx年3月6日一选题背景研究意义及文献综述1选题背景...

软件毕业设计开题报告-JAVA

华东交通大学毕业设计论文开题报告书文明的需求渴望不断增强作为一个正常营运的剧场需要改善本身的体制或管理方式为适应时代带来的种种变化开发剧场订票管理系统显得意义重大而深远此外剧场订票管理系统不但能够克服传统排队订...

软件开发开题报告(26篇)