Vb程序梯形求积法

合集下载

利用VB解决数学问题

利用VB解决数学问题
利用vb解决数学问题vb数学函数数学解决问题二年级数学解决问题三年级数学解决问题解决数学问题的方法小学数学解决问题未解决的数学问题一年级数学解决问题四年级数学解决问题
利用VB解决 简单数学问题
计算三角形面积。
• 已知三角形三边:a,b,c 则三角形面积为:
L( L − A)( L − B )( L − C )
S=
其中:L=(a+b+c)
鸡兔同笼问题:
• 一个笼子里有鸡和兔,现在只知 道里面有35个头,94只脚,问 鸡和兔各有多少只?
设鸡a只,兔b只。所以有: a+b=35 2a+4b=94 a=23 b=12
用VB 程序解决这样的问题
1、三角形面积
1)、分析问题: 设:三角形三边:a,b,c则三角形面积为: S= L ( L − A )( L − B )( L − C ) 其中: L=(a+b+c)
2)、设计算法
① 输入a,b,c 的值 ②判断a,b,c能否构成三角形 ③计算三角形面积S= L( L − A)( L − B )( L − C ) 其中: L=(a+b+c) ④输出S的值。
3)、编写程序:
Private Sub Command1_Click() Dim a As Single, b As Single, c As Single, s As Single, L As Single a = InputBox("a=", " 输入") b = InputBox("b=", " 输入") c = InputBox("c=", " 输入") if (a+b)>c and (a+c)>b and (b+c)>a and (a-b)<c and (a-c)<b ; and (b-c)<a then L =( a + b + c)/2 s = sqr(L*(L-a)*(L-b)*(L-c)) Print "全面积S="; s Else Print “构不成三角形” Endif End sub

VB常用十大算法

VB常用十大算法

1. 累加与连乘1、算法说明[分析]累加形式:V=V+e 连乘形式:V=V*e其中:V 是变量,e 是递增表达式。

累加和连乘一般通过循环结构来实现。

注意:需在执行循环体前对变量 V 赋初值。

一般累加时置初值0;连乘时置初值为1 [举例]求N!的结果。

Private Sub Comma nd1_Click()Dim n%, i%, s&n = Val(InputBox("输入 n"))s = 1For i = 1 To ns = s * iNext iPr int sEnd Sub[应用举例]根据下列公式,求自然对数 e 的的近似值Private Sub Comma nd1_Click()Dim i%, n&, t!, e!e = 2i = 1t = 1Do While t > 0.00001i = i + 1t = t / i e = e + tLoopPrint"计算了 "; i;"项目和是:";ePrint Exp(1)与上句输出值进行对比以证明算法的正确性End Sub2. 最值问题1、算法说明=1 + 一_ + — +一 + 1! 2! 3! + 1 = 1 + -1要求:误差小于0.00001在若干数中求最大值,一般先取第一个数为最大值的初值(即假设第一个数为最大值),然后,在循环体内将每一个数与最大值比较,若该数大于最大值,将该数替换为最大值,直到循环结束。

求最小值的方法类同。

求若干数平均值,实质上就是先求和,再除以这些数的个数。

应用举例:随机产生n个1-100 (包括1和100)的数,求它们的最大值、最小值和平均值。

Private Sub Comma nd1_Click()Dim n%, i%, min%, max%, aver!, s%n 二 Val(lnputBox("输入个数:"))s = Int (Rnd * 100) + 1max = s : min = s : aver = sPrint"第1个数是:” & sFor i = 2 To ns = In t(R nd * 100) + 1Print"第” & i & ” 个数是:” & sIf s > max The n max = sIf s < min The n min = saver = aver + sNext iaver = aver/nPrin t "max="; max; " min二";min; "aver二";averEnd Sub解题技巧:最大值、最小值、平均值类型题目往往和数组放在一起考!有的不仅求这些值,还要对具有最大值或者最小值的行或列或者某个元素进行处理,这时就要在记录最大、最小值时,同时记录该值所在的行号和列号。

设计采用梯形法和辛普生法求定积分的程序

设计采用梯形法和辛普生法求定积分的程序

河北工业大学计算机软件技术基础(VC)课程设计报告学院机械工程学院班级工程力学101 姓名万乐乐 _ 学号100540____ 成绩 __ ____一、题目:设计采用梯形法和辛普生法求定积分的程序(17)二、设计思路1、总体设计1)分析程序的功能对梯形法和辛普生法计算在不同区间下的积分值,比较二者的精确度;并与真实积分值比较求其误差。

2)系统总体结构:该程序有定义梯形法和辛普生法函数,f(x)函数,计算真实值的牛顿莱布尼茨函数和主函数。

①梯形法和辛普生法函数:将积分转化为VC++语言,输入被积函数和积分区间等数据,能计算出对应的积分值。

②f(x)函数:将所求的被积分的函数转化为VC++语言,被主函数调用。

③计算真实值的牛顿莱布尼茨函数:计算所积函数在其被积区间下的真实积分值。

④主函数:程序的主体,调用各个模块的运行。

2、各功能模块的设计:①梯形法和辛普生法函数:定义函数指针求积分,将数学表达式转化为VC++语言。

②f(x)函数:通过写f1,f2函数的表达式,计算结果作为函数返回值。

③计算真实值的牛顿莱布尼茨函数:通过写出f1,f2函数的原函数;用牛顿莱布尼茨公式计算其真实积分值作为函数的返回值。

④主函数:调用梯形法和辛普生法函数,f(x)函数,计算真实值的牛顿莱布尼茨函数完成积分及误差的计算。

3、设计中的主要困难及解决方案在这部分论述设计中遇到的主要困难及解决方案。

1)对函数指针不是很了解,查阅相关的资料学习其使用方法。

2)对于程序的循环使用及判断不易掌握,用到了while,for,if,break语句来解决。

4、你所设计的程序最终完成的功能1)说明你编制的程序能完成的功能用梯形法和辛普生法分别计算函数的积分,比较二者的精确度和与真实值之间的误差。

2)准备的测试数据及运行结果当下限a=0上限b=1,n分别取2,10,100,1000,5000,20000,50000时用梯形法求f1,f2的积分及误差当下限a=0上限b=1,n分别取2,10,100,1000,5000,20000,50000时用辛普生法求f1,f2的积分及误差当下限a=0上限b=2,n分别取2,10,100,1000,5000,20000,50000时用梯形法求f1,f2的积分及误差当下限a=0上限b=2,n分别取2,10,100,1000,5000,20000,50000时用辛普生法求f1,f2的积分及误差三、程序清单本程序包含main.cpp、f(x).cpp、txf.cpp、sinpson.cpp、zhengshi.cpp、head.h、6个文件。

数值分析积分实验报告(3篇)

数值分析积分实验报告(3篇)

第1篇一、实验目的本次实验旨在通过数值分析的方法,研究几种常见的数值积分方法,包括梯形法、辛普森法、复化梯形法和龙贝格法,并比较它们在计算精度和效率上的差异。

通过实验,加深对数值积分理论和方法的理解,提高编程能力和实际问题解决能力。

二、实验内容1. 梯形法梯形法是一种基本的数值积分方法,通过将积分区间分割成若干个梯形,计算梯形面积之和来近似积分值。

实验中,我们选取了几个不同的函数,对积分区间进行划分,计算积分近似值,并与实际积分值进行比较。

2. 辛普森法辛普森法是另一种常见的数值积分方法,它通过将积分区间分割成若干个等距的区间,在每个区间上使用二次多项式进行插值,然后计算多项式与x轴围成的面积之和来近似积分值。

实验中,我们对比了辛普森法和梯形法的计算结果,分析了它们的精度差异。

3. 复化梯形法复化梯形法是对梯形法的一种改进,通过将积分区间分割成多个小区间,在每个小区间上使用梯形法进行积分,然后计算所有小区间积分值的和来近似积分值。

实验中,我们对比了复化梯形法和辛普森法的计算结果,分析了它们的精度和效率。

4. 龙贝格法龙贝格法是一种通过外推加速提高计算精度的数值积分方法。

它通过比较使用不同点数(n和2n)的积分结果,得到更高精度的积分结果。

实验中,我们使用龙贝格法对几个函数进行积分,并与其他方法进行了比较。

三、实验步骤1. 编写程序实现梯形法、辛普森法、复化梯形法和龙贝格法。

2. 选取几个不同的函数,对积分区间进行划分。

3. 使用不同方法计算积分近似值,并与实际积分值进行比较。

4. 分析不同方法的精度和效率。

四、实验结果与分析1. 梯形法梯形法在计算精度上相对较低,但当积分区间划分足够细时,其计算结果可以接近实际积分值。

2. 辛普森法辛普森法在计算精度上优于梯形法,但当积分区间划分较细时,计算量较大。

3. 复化梯形法复化梯形法在计算精度上与辛普森法相当,但计算量较小。

4. 龙贝格法龙贝格法在计算精度上优于复化梯形法,且计算量相对较小。

(vb课程设计)求积分

(vb课程设计)求积分

VB求积分设计报告学院材料学院班级材料074学号072012 姓名熊银萍成绩一、设计思路1.要达到的目的①培养学生综合利用VB语言进行程序设计的能力。

②培养学生利用VB的标准控件的能力。

③培养学生使用基本算法进行应用程序设计的技能。

④锻炼学生自己动手独立思考的能力。

⑤锻炼学生的创新思维。

2.关键问题的解决①完成常用内部函数的绘制②能够在Picturebox控件中完成自定义坐标系,包括绘制原点及添加注释性文字,③坐标轴和文字的颜色可自定义。

曲线的像素点颜色要求包括两种以上④求积分方法至少使用“矩形法”和“梯形法”两种方法⑤函数的选择要求使用Combobox控件实现⑥积分方法的选择使用Option 控件实现函数曲线的绘制用Line和Pset方法二、模块之间的调用关系,或程序流程图三、部分程序关键源代码及注释Private Sub Command1_Click()Dim h As SingleDim i As IntegerDim a As SingleDim b As SingleDim jifeng As Single'每单击"积分"按钮,原picturebox内容重画If = True ThenCall Form_Click '重画曲线a = Val(Text1)b = Val(Text2)h == a= f(a)= 0 '风格为实心= RGB(225, 0, 225)jifen = 0For i = 1 To (b - a) / h(a + i * h, f(a + i * h))-(a + i * h, 0) '画小矩形(a + i * h, f(a + i * h))-(a + (i + 1) * h, f(a + i * h))(a + (i + 1) * h, f(a + i * h))-(a + (i + 1) * h, 0)= a + i * h= f(a + i * h) '准备下一个起始点jifen = jifen + f(a + i * h) * hNext iLabel4 = jifenEnd IfIf = True Then '用梯形法Call Form_Clicka = Val(Text1)b = Val(Text2)h == a= f(a)= 0= RGB(225, 0, 225)jifen = 0For i = 1 To (b - a) / h(a + i * h, f(a + i * h))-(a + i * h, 0)(a + i * h, f(a + i * h))-(a + (i + 1) * h, f(a + (i + 1) * h))jifen = jifen + (f(a + i * h) + f(a + (i + 1) * h)) * h / 2Next iLabel4 = jifenEnd IfEnd Sub四、设计方案的完善及目前存在的问题1.设计方案要完善的地方①函数曲线的平移十分的不完善,而且函数曲线的放大和缩小不能实现②辛普生法求积分的方法。

对口VB程序题解析

对口VB程序题解析

3.用VB语言编写一个计算梯形面积的程序本题解析:,用VB表达式来表示就是(a+b)*h/2, 首先我们知道梯形面积的计算公式是:S=(上底+下底)×高2然后我们只要获取上底、下底和高的值进行计算即可,不过要注意这里的上底、下底和高是小数,所以获取时要用Csng函数。

故这道题的代码可以写为:Private Sub Form_Click()a = Csng(InputBox("请输入上底长"))b = Csng(InputBox("请输入下底长"))h = Csng(InputBox("请输入高"))s = (a + b) * h / 2Print "梯形的面积为" & sEnd Sub4.已知二次系数a、一次项系数b和常数项c的值,用VB语言编写一个程序,利用求根公式求解一元二次方程ax2+bx+c=0并显示求解结果本题解析:求一元二次方程的解,首先我们要确定方程解的情况,即Δ的大小,他的计算公式为∆=b2−4ac,先判断是否有解,然后分情况进行求解和输出,即Δ<0、Δ>0和Δ=0,若有解,则先用求)进行计算,然后根据解的情况输出结果,若无解则直接输出无解方程根公式(x=−b±√b2−4ac2a故这道题的代码可以写为:Private Sub Form_Click()a = CInt(InputBox("请输入二次项系数a", , 1))b = CInt(InputBox("请输入一次项系数b", , 1))c = CInt(InputBox("请输入常数项c", , 1))d = b ^ 2 - 4 * a * c’计算Δ的值If d >= 0 Then ’判断Δ的大小,若大于等于零则用求根公式计算X1 = (-b + Sqr(d)) / (2 * a)X2 = (-b - Sqr(d)) / (2 * a)If X1 = X2 Then ’判断Δ是否等于0Print a & "x^2+" & b & "x+" & c & "的解为"Print "x="; X1Else ’若Δ大于1则输出两种情况Print a & "x^2+" & b & "x+" & c & "的解为"Print "x1="; X1, "x2="; X2End IfEnd IfIf d < 0 Then’如果Δ小于0则输出无解Print a & "x^2+" & b & "x+" & c & "的解为无解"End IfEnd Sub5.把下列命题用VB语言描述:a小于b或小于c;a或b都大于c;a和b中有一个小于c;a不能被b整除答案:a <b Or a < ca > c Orb > ca < c Orb < ca Modb <> 06.用VB语言编写一个程序,求一个数的绝对值。

VB程序设计——加减乘除运算器

VB程序设计——加减乘除运算器

VB程序设计——加减乘除运算器在VB程序设计中,我们可以创建一个简单的加减乘除运算器。

运算器的功能是接收用户输入的两个数和运算符,并根据运算符进行相应的计算,最后将结果输出给用户。

接下来,我们需要编写程序来实现计算功能。

在窗体代码中,我们可以编写一个函数来处理加减乘除运算。

函数代码如下:```vbPrivate Function Calculate(num1 As Double, num2 As Double, operator As String) As DoubleSelect Case operatorCase "+"Return num1 + num2Case "-"Return num1 - num2Case "*"Return num1 * num2Case "/"If num2 <> 0 ThenReturn num1 / num2ElseMessageBox.Show("除数不能为零!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error)Return Double.NaNEnd IfCase ElseMessageBox.Show("运算符不合法!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error)Return Double.NaNEnd SelectEnd Function```这个函数接收两个数值和一个运算符作为参数,并根据运算符的值进行相应的计算。

如果运算符不合法或者除数为零,则会弹出一个错误提示框。

```vbPrivate Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.ClickDim num1 As DoubleDim num2 As DoubleIf Double.TryParse(txtNum1.Text, num1) AndAlsoDouble.TryParse(txtNum2.Text, num2) ThenDim result As Double = Calculate(num1, num2, cmbOperator.SelectedItem.ToString()If Not Double.IsNaN(result) ThenlblResult.Text = result.ToStringEnd IfElseMessageBox.Show("请输入有效的数值!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error)End IfEnd Sub```最后,我们可以在窗体的Load事件处理程序中为下拉列表框添加运算符选项。

验证数值积分求积公式及复合梯形公式程序设计

验证数值积分求积公式及复合梯形公式程序设计

《复合梯形公式》实验报告实验名称:验证数值积分求积公式及复合梯形公式程序设计成绩:___________专业班级:数学与应用数学1202班姓名:王晓阳学号:2012254010228 实验日期:2014 年10月20日实验报告日期:2014年11月3日一.实验目的1掌握定积分的数值求解方法,验证数值积分求积公式.2.掌握数值积分的基本思想.3.掌握matlab实现数值积分函数的调用格式.4.编写复合梯形公式matlab程序及学会调用.5.学会用复合梯形公式求函数近似解.二、实验内容1.数值积分的实现(1)被积函数是一个解析式Matlab提供了quad函数和quadl函数来求定积分.它们的调用格式为:Quad(filename,a,b,tol,trace)Quadl(filename,a,b,tol,trace)其中filename 是被积函数名。

a 和b 分别是定积分的下限和上限。

Tol 用来控制积分精度,默认时取610tol -=。

Trace 控制是否展现积分过程,若取非0则展现积分过程,取0则不展现,默认时取trace=0。

例6.20 用两种不同的方法求210x I e dx -=⎰. (2)被积函数由一个表格定义在matlab 中,对由表格形式定义的函数关系的求定积分问题用trapz(X,Y)函数。

其中向量X 、Y 定义函数关系Y=f(X).X 、Y 是两个等长的向量;()12,,n X x x x =,()12,,n Y y y y =,并且12n x x x <<<,积分区间是[]1,n x x 。

例6.21用trapz 函数计算210x I e dx -=⎰. (3)二重积分数值求解Matlab 提供的dblquad 函数可以直接求出二重定积分的数值解。

该函数的调用格式为:I=dblquad(f,a,b,c,d,tol,trace)该函数求f(x,y)在[a,b]*[c,d]区域上的二重定积分。

变步长梯形求积法计算定积分(word文档良心出品)

变步长梯形求积法计算定积分(word文档良心出品)

变步长梯形求积法计算定积分1.原理:变步长求积法的思想是利用若干小梯形的面积代替原方程的积分,当精度达不到要求时,可以通过增加点数对已有的区间再次划分,达到所需精度时即可;其中由于新的式子中有原来n点中的部分项主要公式:T2n=T n/2+(h/2)*Σf(x k+0.5);2.源程序如下:#include"math.h"#include"iostream.h"double f(double x){double s;s=log(x*x);return(s);}double ffts(double a,double b,double eps){int n,k;double fa,fb,h,t1,p,s,x,t;fa=f(a);fb=f(b);n=1;h=b-a;t1=h*(fa+fb)/2;p=eps+1;while(p>=eps){s=0;for(k=0;k<=n-1;k++){x=a+(k+0.5)*h;s=s+f(x);}t=t1/2+h*s/2;p=fabs(t1-t);cout<<"步长n为:"<<n<<"时的"<<"Tn="<<t1<<'\t'<<"T2n="<<t<<'\t'<<"误差变化:"<<p<<endl;t1=t;n=n*2;h=h/2;}return(t);}void main(){double result,a,b,eps;cout<<"需要求解的积分式为f(x)=log(x^2)"<<endl;cout<<"输入边界值a="<<'\t';cin>>a;cout<<"输入边界值b="<<'\t';cin>>b;cout<<"输入误差限"<<'\t';cin>>eps;result=ffts(a,b,eps);cout<<"经过变步长梯形求积法得方程结果为:"<<result<<endl;}3.运行结果:根据程序提示依次输入积分上限和积分下限,然后输入误差限;本程序需要预先在程序中输入需要积分方程的表达式。

VB求积分设计报告

VB求积分设计报告

求积分设计报告学院班级学号姓名成绩一、设计思路1.要达到的目的①能够完成常用内部函数的绘制。

②能够在Picturebox控件中完成自定义坐标系,包括绘制原点及添加注释性文字,如所选曲线的名称“迷彩抛物线”等。

坐标轴和文字的颜色可自定。

③曲线的像素点的颜色要求包括两种以上的颜色。

④“范围”框架处要求根据所绘制的曲线段给出最佳显示范围,以便使积分曲线达到最佳的可视化。

2.关键问题的解决①求积分至少使用“矩形法”、“梯形法”和“辛普森法”三种方法。

②函数的选择要求使用Combobox 控件实现。

③积分方法的选择要求使用Option控件实现。

④函数曲线的绘制可以使用Line方法或Pset方法。

⑤积分小矩形或小梯形使用Line方法实现。

二、模块之间的调用关系,或程序流程图(不含曲线平移和缩放)三、部分程序关键源代码及注释'载入函数Private Sub Form_Load()Combo1.AddItem "sin(x)"Combo1.AddItem "x^2"End SubPicture1.ClsPicture1.BackColor = RGB(0, 0, 100)Dim i As Single'自定义坐标系Picture1.ScaleMode = 3Picture1.Scale (-m - 3, m * m + 2)-(m + 3, -2)Picture1.ForeColor = RGB(255, 255, 0)Picture1.DrawWidth = 3'绘制X,Y坐标轴Picture1.Line (0, m * m + 2)-(0, -2)Picture1.Line (-m - 3, 0)-(m + 3, 0)'绘制原点Picture1.DrawWidth = 4Picture1.PSet (0, 0), RGB(0, 0, 255)Picture1.ForeColor = RGB(255, 0, 0)'为原点注释文字Picture1.CurrentX = 0.1Picture1.CurrentY = -0.1Picture1.Print "O"'为曲线注释文字Picture1.CurrentX = 1Picture1.CurrentY = -1Picture1.Print "迷彩抛物线"'绘制抛物线For i = -m - 3 To m + 3 Step 0.001Picture1.PSet (i, i * i)'交替变换抛物线的像素点颜色If Picture1.Point(i, i * i) = &HFF& ThenPicture1.ForeColor = &HFF00&ElsePicture1.ForeColor = &HFF&End IfNext I‘求积分a = Val(Text1)b = Val(Text2)h = 0.2Picture1.CurrentX = aPicture1.CurrentY = a * aPicture1.FillStyle = 0Picture1.ForeColor = RGB(255, 255, 0)jifen = 0'矩形法求积分If k = 0 ThenFor i = 1 To (b - a) / hPicture1.Line -(a + i * h, 0), , B '画小矩形Picture1.CurrentX = a + i * hPicture1.CurrentY = (a + i * h) * (a + i * h) '准备下一个起点jifen = jifen + (a + i * h) * (a + i * h) * h '求积分Next iEnd If'梯形法求积分If k = 1 ThenFor i = 1 To (b - a) / hPicture1.Line (a + i * h, (a + i * h) * (a + i * h))-(a + i * h, 0) '画小梯形Picture1.Line (a + (i - 1) * h, (a + (i - 1) * h) * (a + (i - 1) * h))-(a + i * h, (a + i * h) * (a + i * h))Picture1.CurrentX = a + i * hPicture1.CurrentY = (a + (i + 1) * h) * (a + (i + 1) * h) '准备下一个起点jifen = jifen + ((a + i * h) * (a + i * h) + (a + (i + 1) * h) * (a + (i + 1) * h)) * h / 2 '求积分Next iEnd If'辛普森法求积分If k = 2 Thene = 0.01he = 0.02jifen = xinpusen(a, b, e, he)End IfLabel3 = jifen '积分值输给label控件' 创新:输出数学积分算出的准确值,并求误差zq = 1 / 3 * (b * b * b - a * a * a)Label4 = zqda = Abs(zq - jifen)Label5 = da'创新:曲线的平移Private Sub HScroll1_Change()Picture1.ClsPicture1.BackColor = RGB(0, 0, 100)Picture1.ScaleMode = 3Picture1.Scale (-10, 120)-(10, -20)Picture1.ForeColor = RGB(255, 255, 0)Picture1.DrawWidth = 3Picture1.Line (HScroll1.Value, -20)-(HScroll1.Value, 120)Picture1.Line (-10, 0)-(10, 0)Picture1.DrawWidth = 4Picture1.PSet (HScroll1.Value, 0), RGB(0, 0, 255)Picture1.ForeColor = RGB(255, 0, 0)Picture1.CurrentX = 0.1 + HScroll1.ValuePicture1.CurrentY = -0.1Picture1.Print "O"Picture1.CurrentX = 1Picture1.CurrentY = -1Picture1.Print "迷彩抛物线"Picture1.ForeColor = RGB(255, 0, 0)Picture1.DrawWidth = 6For i = -6 To 6 Step 0.001Picture1.PSet (i + HScroll1.Value, i * i)If Picture1.Point(i + HScroll1.Value, i * i) = &HFF& Then Picture1.ForeColor = &HFF00&ElsePicture1.ForeColor = &HFF&End IfNext iEnd Sub'创新:曲线的缩放'控件—滚动条参考课本《Visual Basic程序设计基础(第三版)》P190 Private Sub VScroll1_Change()Picture1.ClsPicture1.BackColor = RGB(0, 0, 100)Picture1.ScaleMode = 3Picture1.Scale (-10, 120)-(10, -20)Picture1.ForeColor = RGB(255, 255, 0)Picture1.DrawWidth = 3Picture1.Line (0, -20)-(0, 120)Picture1.Line (-10, 0)-(10, 0)Picture1.DrawWidth = 4Picture1.PSet (0, 0), RGB(0, 0, 255)Picture1.ForeColor = RGB(255, 0, 0)Picture1.CurrentX = 0.1Picture1.CurrentY = -0.1Picture1.Print "O"Picture1.CurrentX = 1Picture1.CurrentY = -1Picture1.Print "迷彩抛物线"Picture1.ForeColor = RGB(255, 0, 0)Picture1.DrawWidth = 6For i = -10 To 10 Step 0.001Picture1.PSet (i * VScroll1.Value * 0.1, i * i * VScroll1.Value * 0.1)If Picture1.Point(i * VScroll1.Value * 0.1, i * i * VScroll1.Value * 0.1) = &HFF& ThenPicture1.ForeColor = &HFF00&ElsePicture1.ForeColor = &HFF&End IfNext iEnd Sub'创新:函数—辛普森法求积分Private Function xinpusen(a As Single, b As Single, e As Single, he As Single) As Single k = 2s0 = 0h = (b - a) / kya = a * ayb = b * byi = (x = a + h) * (x = a + h)p = ya + ybd = yiDos = (p + 4 * d) * h / 3no = no + 1If Abs(s - s0) <= e And h < he Thenxinpusen = sExit FunctionElseh = h / 2k = k * 2s0 = sp = p + 2 * dd = 0For i = 1 To k - 1 Step 2yi = (a + i * h) * (a + i * h)d = d + yiNext iEnd IfLoopEnd Function四、设计方案的完善及目前存在的问题1.问题描述①程序界面较简单,如图.②创新部分不是很完善,需要改进 ,辛普森法求积分不会画图。

变步长梯形求积法计算定积分

变步长梯形求积法计算定积分

变步长梯形求积法计算定积分1.原理:变步长求积法的思想是利用若干小梯形的面积代替原方程的积分,当精度达不到要求时,可以通过增加点数对已有的区间再次划分,达到所需精度时即可;其中由于新的式子中有原来n 点中的部分项主要公式:T2n=T;/2+(h/2)* 艺f(x k+0.5);2.源程序如下:#include"math.h"#include"iostream.h"double f(double x){double s;s=log(x*x);return(s);}double ffts(double a,double b,double eps){int n,k;double fa,fb,h,t1,p,s,x,t;fa=f(a);fb=f(b);n=1;h=b-a;t1=h*(fa+fb)/2;p=eps+1;while(p>=eps){s=0;for(k=0;k<=n-1;k++){x=a+(k+0.5)*h;s=s+f(x);}t=t1/2+h*s/2;p=fabs(t1-t);cout<<" 步长n 为:"<<n<<" 时的"<<"Tn="vvt1<v'\t'vv"T2n="<<t<<'\t'<<" 误差变化:"<<p<<endl;t1=t;n=n *2;h=h/2;}return(t);}void mai n(){double result,a,b,eps;cout«"需要求解的积分式为f(x)=log(x A2)"<<endl;cout«"输入边界值a="vv'\t';cin> >a;cout«"输入边界值b="vv'\t';cin> >b;cout«"输入误差限"<<'\t';cin> >eps;result=ffts(a,b,eps);coutvv"经过变步长梯形求积法得方程结果为:"vvresultvvendl;}3.运行结果:根据程序提示依次输入积分上限和积分下限,然后输入误差限;本程序需要预先在程序中输入需要积分方程的表达式。

程序设计基础习题

程序设计基础习题

程序设计基础习题(总17页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--习题1. 编制一个C程序,从键盘输入一个正整数,如果该数为素数,则输出该素数,否则输出该数的所有因子(除去1与自身)。

2. 编制一个C程序,从键盘输入一个正整数N,然后计算并输出S=12||1222N++++最后计算并输出T=11213111 -+-+-+()KK其中K S=的整数部分。

3. 编制一个C程序,计算并输出多项式的值S x x xnnxnn =++-+--++--+1050505120505105230505105123..(.)!.(.)(.)!.(.)(.)!的值,直到 |Sn -Sn-1|< 为止。

其中x从键盘输入。

4. 编制一个C程序,计算下列级数和:sn =1+(2/1)+(3/2)+(5/3)+(8/5)+(13/8)+…+(an/an-1)其中n≥1,由键盘输入;s1=1。

5. 编制一个C程序,计算并输出下列级数之和:e x x x xnxn =+++++12323!!!其中n与x从键盘输入。

6. 编制一个C程序,输出能写成两个数平方之和的所有三位数。

7. 如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,则称之为“完数”。

例如,6的因子为1、2、3,且1+2+3=6,即6是一个“完数”。

编制一个C程序,计算并输出1000以内的所有“完数”之和。

8. 编制一个C程序,从键盘输入30个实数,分别计算并输出以下5个量:所有正数之和,所有负数之和,所有数的绝对值之和,正数的个数,负数的个数。

9. 100元钱买100只鸡,母鸡3元/只,公鸡2元/只,小鸡元/只。

编制一个C程序,制定买鸡方案。

10. 设A,B,C,D,E五人,每人额头上贴了一张或黑或白的纸。

五人对坐,每人都可以看到其他人额头上的纸的颜色,但都不知道自己额头上的纸的颜色。

五人相互观察后开始说话:A说:我看见有三人额头上贴的是白纸,一人额头上贴的是黑纸。

VB常用算法总结

VB常用算法总结

思考:打印上三角或下三角程序如何改动?要打印下 三角?
8. 打印图形
见下页
外循环用来控制输出 编写程序打印如右边图形: 的行数及每行第一个 字符的输出位置 Private Sub Form_Click()
For i = 1 To 4 Print Space(5 - i); For j = 1 To 2 * i - 1 Print "*"; Next j Print 内循环用来控制每行 Next i 输出的字符个数。 Print End Sub
2.求素数
判别某数m是否为素数最简单的方法是: 对于m 从i=2,3,…,m-1判别m能否被i整除,只要 有一个能整除,m不是素数,否则m是素数。
For m = 2 To 100 For i = 2 To m - 1
求100以内的素数 m是否为素数
If (m Mod i) = 0 Then exit for
'求行和 Private Sub Command3_Click() For I = 1 To 4 H(I) = 0 For J = 1 To 5 H(I) = H(I) + A(I, J) Next J Text1 = Text1 & Str(H(I)) & vbCrLf Next I End Sub ‘清除图片框和文本框 Private Sub Command4_Click() Picture1.Cls Text1 = "" Text2 = "" End Sub
该例题涉及两个问题: (1)用循环结构求级数和的问题。本例根据某项值的精度来控制循环 的结束与否。 (2)累加:e=e+t 循环体外对累加和的变量清零 e=0 连乘:n=n*i 循环体外对连乘积变量置1 n=1 Private Sub Form_Click() Dim i%,n&, t!, e! e = 0 : n = 1 ‘ e存放累加和、n存放阶乘 i = 0 : t = 1 ‘ i计数器、t第i项的值 Do While t > 0.00001 e = e + t : i = i + 1 ‘ 累加、连乘 n = n * i : t = 1 / n Loop Print "计算了 "; i; " 项的和是 "; e End Sub
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 文件名:梯形求积法.bas
' 模块名:梯形求积法
' 功能:用复化梯形求积公式计算定积分I=∫f(x)dx的近似值,使迭代法中相邻两项值的相对误差
' 小于给定的误差限Eps=10^(-6)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 文件名:梯形求积法.bas
' 模块名:梯形求积法
' 函数名:TrapeziumIntergal(a, b, s)
' 参数:a ——实型变量,输入参数,积分下限
' b ——实型变量,输入参数,积分上限
' s ——实型变量,输出参数,输出积分近似值
' 功能:以误差限Eps=10^(-6)和最大迭代步数20计算定积分的近似值
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub TrapeziumIntergal(a As Single, b As Single, s As Single)
Const Eps As Single = 0.000001 '影响计算速度
Const Jmax As Integer = 20 '影响计算速度
Dim Olds As Single: Olds = -1E+30
Dim j As Integer
For j = 1 To Jmax
Call TrapeziumIntergalStep(j, a, b, s)
If Abs(s - Olds) < Eps * Abs(Olds) Then Exit Sub
Olds = s
Next j
MsgBox "Too many steps."
End Sub
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' 文件名:梯形求积法.bas
' 模块名:梯形求积法
' 函数名:TrapeziumIntergalStep(n, a, b, s)
' 参数:n ——整型变量,输入参数,迭代的阶段
' a ——实型变量,输入参数,积分下限
' b ——实型变量,输入参数,积分上限
' s ——实型变量,输出参数,输出第n步的迭代值
' 功能:用于计算每一步的迭代值
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub TrapeziumIntergalStep(n As Integer, a As Single, b As Single, s As Single) Dim j As Single, it As Single, tnm As Single
Dim del As Single, x As Single, sum As Single
If n = 1 Then
s = 0.5 * (b - a) * (Func(a) + Func(b))
it = 1
Else
it = 2 ^ (n - 2)
tnm = it
del = (b - a) / tnm
x = a + 0.5 * del
sum = 0#
For j = 1 To it
sum = sum + Func(x)
x = x + del
Next j
s = 0.5 * (s + (b - a) * sum / tnm) End If
End Sub。

相关文档
最新文档