vb中线性拟合_vb曲线拟合
展开全部
我就给你贴出frm文件吧。其他的工程文件也贴不出。希望对你有用。
VERSION 5.00
Object = "{5E9E78A0-531B-11CF-91F6-C2863C385E30}#1.0#0"; "MSFLXGRD.OCX"
Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "COMDLG32.OCX"
Begin VB.Form Form1
Caption = "曲线拟合"
ClientHeight = 9330
ClientLeft = 60
ClientTop = 345
ClientWidth = 10590
Icon = "Form1.frx":0000
LinkTopic = "Form1"
ScaleHeight = 9330
ScaleWidth = 10590
StartUpPosition = 2 '屏幕中62616964757a686964616fe4b893e5b19e31333262356135心
Begin VB.CommandButton Command2
Caption = "曲线拟合"
Height = 615
Left = 720
TabIndex = 12
Top = 8280
Width = 2175
End
Begin VB.TextBox Text1
Height = 975
Left = 4200
MultiLine = -1 'True
ScrollBars = 3 'Both
TabIndex = 11
Top = 8160
Width = 6015
End
Begin VB.CommandButton Command1
Caption = "打开点文件"
Height = 495
Left = 1080
TabIndex = 9
Top = 840
Width = 1695
End
Begin VB.PictureBox Picture1
AutoRedraw = -1 'True
Height = 6000
Left = 4200
ScaleHeight = 5940
ScaleWidth = 5940
TabIndex = 7
Top = 360
Width = 6000
End
Begin VB.ComboBox Combo1
Height = 300
ItemData = "Form1.frx":030A
Left = 2040
List = "Form1.frx":032F
TabIndex = 6
Text = "6"
Top = 7320
Width = 615
End
Begin VB.Frame Frame1
Caption = "插值计算"
Height = 1215
Left = 5040
TabIndex = 0
Top = 6600
Width = 4335
Begin VB.TextBox Text2
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 720
TabIndex = 3
Top = 480
Width = 735
End
Begin VB.CommandButton Command3
Height = 345
Left = 1920
MaskColor = &H00FFFFFF&
Picture = "Form1.frx":0356
Style = 1 'Graphical
TabIndex = 2
Top = 480
UseMaskColor = -1 'True
Width = 340
End
Begin VB.TextBox Text3
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 3120
TabIndex = 1
Top = 480
Width = 735
End
Begin VB.Label Label2
Caption = "X="
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 360
TabIndex = 5
Top = 550
Width = 1215
End
Begin VB.Label Label3
Caption = "Y="
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 255
Left = 2760
TabIndex = 4
Top = 550
Width = 255
End
End
Begin MSComDlg.CommonDialog CommonDialog1
Left = 3120
Top = 1080
_ExtentX = 847
_ExtentY = 847
_Version = 393216
End
Begin MSFlexGridLib.MSFlexGrid MSFlexGrid1
Height = 4695
Left = 480
TabIndex = 8
Top = 1680
Width = 2775
_ExtentX = 4895
_ExtentY = 8281
_Version = 393216
Rows = 21
Cols = 3
FormatString = "^记录数|^ X|^ Y"
End
Begin VB.Label Label1
Caption = "拟合次数"
BeginProperty Font
Name = "宋体"
Size = 10.5
Charset = 134
Weight = 400
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 375
Left = 840
TabIndex = 10
Top = 7320
Width = 1215
End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Option Explicit
Dim X() As Single, Y() As Single
Dim A(20, 20) As Single, M As Integer, B() As Single '最多取20次的拟合
Dim N As Integer, I As Integer, J As Integer
Dim xiaoA() As Single
Dim Xmin As Single, Xmax As Single
Dim Ymin As Single, Ymax As Single
Dim Xo As Single, Yo As Single
Private Sub ZuoDian(X() As Single, Y() As Single)
Dim XL As Single
Dim YL As Single
N = UBound(X): Picture1.Cls
Xmin = X(1): Xmax = X(1): Xo = X(1): Yo = Y(1)
Ymin = Y(1): Ymax = Y(1)
For I = 1 To N
If Xmin > X(I) Then
Xmin = X(I)
Xo = Xmin: Yo = Y(I) '后面画曲线时用到。
End If
If Xmax < X(I) Then Xmax = X(I)
If Ymin > Y(I) Then Ymin = Y(I)
If Ymax < Y(I) Then Ymax = Y(I)
Next I
XL = Xmax - Xmin: YL = Ymax - Ymin
Picture1.Scale (Xmin - XL / 10, Ymax + YL / 10)-(Xmax + XL / 10, Ymin - YL / 10)
Picture1.DrawWidth = 5
For I = 1 To N
Picture1.PSet (X(I), Y(I)), vbRed
Next I
Picture1.DrawWidth = 1
Picture1.Line (Xmin, Ymin)-(Xmax, Ymax), vbBlue, B
Picture1.Refresh
End Sub
Private Sub HuaQuXian(xiaoA() As Single)
Call ZuoDian(X, Y)
Dim Ysum As Single, Ii As Single
For Ii = Xmin To Xmax Step (Xmax - Xmin) / 100
Ysum = 0
For J = 1 To M
Ysum = Ysum + xiaoA(J) * Ii ^ (J - 1)
Next J
Picture1.Line (Xo, Yo)-(Ii, Ysum)
Xo = Ii: Yo = Ysum
Next Ii
End Sub
Private Sub Command1_Click()
Dim FileName As String
Dim Xstr As String, Ystr As String
On Error GoTo errhandle
CommonDialog1.InitDir = App.Path '设置初始路径 数据导入
CommonDialog1.FileName = "" '清除文件名
CommonDialog1.ShowOpen '显示“打开”对话框
FileName = CommonDialog1.FileName '保存文件名
If Len(CommonDialog1.FileName) > 0 Then
'File = FreeFile() '获得可用文件号
Open FileName For Input As #1 '打开文件
End If
I = 0
MousePointer = 11
Do While EOF(1) = False
I = I + 1
ReDim Preserve X(I)
ReDim Preserve Y(I)
MSFlexGrid1.Rows = I + 1
Input #1, Xstr, Ystr ' 分别输入各数据
MSFlexGrid1.TextMatrix(I, 1) = Xstr
X(I) = Val(Xstr)
MSFlexGrid1.TextMatrix(I, 2) = Ystr
Y(I) = Val(Ystr)
MSFlexGrid1.TextMatrix(I, 0) = I
Loop
Close #1: N = I '检验一下N是否对???
Call ZuoDian(X, Y)
errhandle:
MousePointer = 0
Exit Sub
MousePointer = 0
End Sub
Private Sub Command2_Click()
Dim Xh As Integer
M = Val(Combo1.Text) + 1
Erase B: Erase xiaoA: Erase A '必不可少***********
ReDim B(M): ReDim xiaoA(1 To M)
'形成方程组的各元素
A(1, 1) = N
For I = 1 To N
B(1) = B(1) + Y(I)
Next I
For J = 2 To M
For I = 1 To N
A(1, J) = A(1, J) + X(I) ^ (J - 1)
Next I
Next J
For I = 2 To M
For J = 1 To M
For Xh = 1 To N
A(I, J) = A(I, J) + X(Xh) ^ (I + J - 2)
If J = 1 Then
B(I) = B(I) + X(Xh) ^ (I - 1) * Y(Xh)
End If
Next Xh
Next J
Next I
Call JieFangCheng(A, B, xiaoA)
For I = 1 To M
Text1.Text = Text1.Text & "a" & I - 1 & "=" & xiaoA(I) & ";"
Next I
Dim Str As String: Str = "y="
For I = 1 To M '写方程
If I < M Then
Str = Str & xiaoA(I) & "x^" & I - 1 & "+"
Else
Str = Str & xiaoA(I) & "x^" & I - 1
End If
Next I
Text1.Text = Text1.Text & vbCrLf & "曲线方程:" & vbCrLf & Str
Call HuaQuXian(xiaoA)
End Sub
Private Sub Command3_Click()
Dim Xzhi As Single, Yzhi As Single
Xzhi = Val(Text2.Text)
Yzhi = 0
For J = 1 To M
Yzhi = Yzhi + xiaoA(J) * Xzhi ^ (J - 1)
Next J
Text3.Text = Yzhi
End Sub
Private Sub Form_Load()
For I = 0 To 2
MSFlexGrid1.ColAlignment(I) = 4
Next I
For I = 1 To 20
MSFlexGrid1.TextMatrix(I, 0) = I
Next I
End Sub
Private Sub JieFangCheng(A() As Single, B() As Single, X() As Single)
N = UBound(B)
Dim TempA As Single, L As Integer, K As Integer, Kk As Integer
Dim Ii As Integer, ChuShu As Single, Sum As Single
For I = 1 To N
L = 0: Kk = 0
For J = I To N
If A(J, I) = 0 Then L = L + 1
Next J
For J = I To N - L
If A(J, I) = 0 Then
Kk = Kk + 1
For K = I To N
TempA = A(J, K)
A(J, K) = A(N - Kk + 1, K)
A(N - Kk + 1, K) = TempA
Next K
TempA = B(J): B(J) = B(N - Kk + 1): B(N - Kk + 1) = TempA
End If
Next J
For Ii = I To N - L
ChuShu = A(Ii, I)
For J = I To N
A(Ii, J) = A(Ii, J) / ChuShu
Next J
B(Ii) = B(Ii) / ChuShu
Next Ii
For Ii = I + 1 To N - L
For J = I To N
A(Ii, J) = A(Ii, J) - A(I, J)
Next J
B(Ii) = B(Ii) - B(I)
Next Ii
Next I
For I = 1 To N
For J = 1 To I - 1
A(I, J) = 0
Next J
Next I
X(N) = B(N) / A(N, N)
For I = N - 1 To 1 Step -1
Sum = 0
For J = I + 1 To N
Sum = Sum + A(I, J) * X(J)
Next J
X(I) = (B(I) - Sum) / A(I, I)
Next I
End Sub
已赞过
已踩过<
你对这个回答的评价是?
评论
收起
vb中线性拟合_vb曲线拟合相关推荐
- vb中线性拟合_VB做曲线拟合
本文主要是代码,附带详细注释 最小二乘法多次曲线拟合的VB实现 '窗体代码 Option Explicit '********************************************* ...
- 线性拟合与曲线拟合,直接在图上添加拟合曲线、拟合方程、判别系数R2和P值
1.什么是线性拟合? 线性拟合,顾名思义,针对两组数据或多组数据,找出一条最佳拟合直线,常用于处理与自变量呈线性关系的因变量.线性拟合是数据处理的常用方法,拟合的目的是对呈现一定数值关系的因变量与自变 ...
- 用matlab参数法拟合,MATLAB|曲线拟合基本介绍
曲线拟合工具箱cftool基本介绍 Tips mathworks官网的和help文件 https://cn.mathworks.com/help/curvefit/fit-comparison-in- ...
- Python04 直线拟合 多项式曲线拟合 指数曲线拟合(附代码)
1. 实验结果 (1)在定义的类中设置已知的函数值列表为: (2)在 test.py 中选择直线拟合: 输出:拟合的直线函数及图像: (3)选择多项式曲线拟合: 输入:多项式拟合函数的次数: 输出:拟 ...
- MATLAB多项式函数拟合和曲线拟合
MATLAB软件提供了基本的曲线拟合函数的命令. 多项式函数拟合:a=polyfit(xdata,ydata,n) 其中n表示多项式的最高阶数,xdata,ydata为将要拟合的数据,它是用数组的方式 ...
- Matlab负幂次拟合,matlab 曲线拟合函数中幂为负数该怎么写?比如实现y=a*x^(-1)+b*x^(-2) 的曲线拟合系数a,b...
答:用 nlinfit()函数或lsqcurvefit()函数,可以求得其曲线拟合系数a,b. 求解步骤: x=[...],y=[...] func=@(a,x)a(1)*x^(-1)+a(2)*x^ ...
- matlab怎么把导入的数据拟合,matlab曲线拟合怎么做,来研究下吧
Matlab是一个在数学领域中使用广泛的软件.它有很高的处理数据的能力.下面,小编就给大家讲解一下matlab曲线拟合怎么做. 工具/材料 matlab7.0及以上版本 操作方法 01 第一步,打开m ...
- matlab对矩阵拟合,matlab曲线拟合与矩阵计算.ppt
matlab曲线拟合与矩阵计算 Matlab应用重点(1)曲线拟合 曲线拟合定义 在实际工程应用和科学实践中,经常需要寻求 两个(或多个)变量间的关系,而实际去只能 通过观测得到一些离散的数据点.针对 ...
- vb 数组属性_VB中菜单编辑器的使用讲解及实际应用
大家好,今天我们共同来学习VB中菜单方面的知识. VB中菜单的基本作用有两个: 1.提供人机对话的界面,以便让使用者选择应用系统的各种功能: 2.管理应用系统,控制各种功能模块的运行. 在实际应用中, ...
最新文章
- 实验18:使用@Autowired注解实现根据类型实现自动装配★
- 文本编码-Python2.x处理中文字符串
- GNOME Shell Extensions开发介绍
- 配置VNC并远程控制服务器(电脑)
- 程序安装mysql数据库_安装Mysql数据库
- 标准的LSTM网络以及公式
- C#限制float有两位小数
- css文字覆盖线性渐变,利用css使文字渐变
- 笔记本电脑蓝牙设置开关消失不见的处理方法
- 中国电信“公板”计划主攻中端市场
- Win10 如何将FAT32格式磁盘不用格式化无损转化为NFTS格式
- 什么是套利?什么是套利交易
- 托管代码与非托管代码之间与托管程序
- 钉钉直播回放下载解决方案
- stm32 电机库生成代码出错原因 stm32 cuble生成代码出错原因
- 基于51单片机的波形发生器proteus仿真数码管LCD12864显示
- 无法访问 F:\。文件或目录损坏且无法读取。
- 【配电网重构】基于matlab负荷平衡的配电网重构【含Matlab源码 2180期】
- CheckBox设置Enabled为False后,无法修改ForeColor
- win10电脑没有声音