重庆分公司,新征程启航

为企业提供网站建设、域名注册、服务器等服务

关于vb.net多项式拟合的信息

跪求vb.net代码

新建窗口,添加picture控件

创新互联公司专注于企业全网营销推广、网站重做改版、盐湖网站定制设计、自适应品牌网站建设、H5技术商城网站建设、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为盐湖等各大城市提供网站开发制作服务。

利用line()方法画线

line(开始x坐标,开始y坐标)-(结束x坐标,结束y坐标),线的颜色,画线的方式(默认为线,B为矩形无填充,BF为填充的矩形)

For i = 1 To 16

Picture1.Line (0, Picture1.Height / 2)-(i * (Picture1.Width / 16), 0), RGB(255, 0, 0)

Picture1.Line (0, Picture1.Height / 2)-(i * (Picture1.Width / 16), Picture1.Height), RGB(255, 0, 0)

Picture1.Line (Picture1.Width, Picture1.Height / 2)-(i * (Picture1.Width / 16), 0), RGB(0, 255, 0)

Picture1.Line (Picture1.Width, Picture1.Height / 2)-(i * (Picture1.Width / 16), Picture1.Height), RGB(0, 255, 0)

Next i

如果要在窗口上画也可以调用窗口的line方法即form.line()

vb.net 排列组合算法

看了你说递归的效率低。那么你可以不用的。

给出的方法就是先生成第一个排列,然后每次调用下面的函数给出下一个排列,这样生成的效率很高,这个函数可以内联。

这个是很经典的排列组合算法啊?在网上能搜到一大堆。

大概是那种带指向的移动的算法。我给你搜一个吧。

我找了几个,这个是我觉得说的比较清楚的,你可以仔细参考一下,看不懂的话再搜点别的好了。。

全排列的算法跟这个不太一样的。需要有点改动的。

至于语言的话,应该不会有太大问题吧。。basic版的确实比较少,现在我也比较懒不想动手写。。还是要靠你自己啦。

★生成排列的算法:

比如要生成5,4,3,2,1的全排列,首先找出一个最小的排列12345, 然后依次调用n!次STL算法中的next_permutation()即可输出所有的全排列情况。所以这种算法的细节就是STL algorithm中next_permutation()的实现机制。详细的实现代码,大伙可以参考侯捷的《STL源代码剖析》,在这里我只说一下我的理解:

1 首先从最尾端开始往前寻找两个相邻元素,令第一个元素为*i,第二个元素为*ii,且满足*i*ii,找到这样一组相邻的元素后。

2 再从最尾端开始往前检验,找出第一个大于*i的元素,令为*k,将i,k元素对调。

3 再将ii及ii之后的所有元素颠倒排列,此即所求之"下一个"排列。

prev_permutation()算法的思路也基本相同,只不过它们寻找的"拐点"不同,在next_permutation()算法中寻找的是峰值拐点,而在prev_permutation()算法中寻找的是谷值拐点。另外,在第二步中,prev_permutation()要找的是第一个小于*i的元素而不是第一个大于*i的元素。

具体例子,有空再举,现在时间太晚了:)

★生成组合的算法:

如下面截图所示,分全组合和r-组合两种情况。

这里有一段核心代码:

//--------------------------------------------------------

// Generate next combination (algorithm from Rosen p. 286)

//--------------------------------------------------------

public int[] getNext () {

if (numLeft.equals (total)) {

numLeft = numLeft.subtract (BigInteger.ONE);

return a;

}

int i = r - 1;

while (a[i] == n - r + i) {

i--;

}

a[i] = a[i] + 1;

for (int j = i + 1; j r; j++) {

a[j] = a[i] + j - i;

}

numLeft = numLeft.subtract (BigInteger.ONE);

return a; //这里返回的a数组,存储的就是下标的排列组合。

}

到这里,也许大伙会有一个疑问,假如要求的不是数字的排列组合,而是字符或字符串的排列组合呢?怎么办?其实很简单,你只要拿数组的下标来做排列组合,返回他们下标的排列组合,然后再到原数组中读取字符串值,就可以输出全部的排列组合结果。

《VB.NET》中的“Randomize(x)”和“Rnd(x)”

Rnd[(number)]

number

的值决定了

Rnd

生成随机数的方式

如果

number

的值

Rnd

生成

小于

每次都使用

number

作为随机数种子得到的相同结果。

大于

序列中的下一个随机数。

等于

最近生成的数。

省略

序列中的下一个随机数。

====================

先讨论没有加randomize时

X小于0

rnd(-1)

以-1为种的随机数永远相同

X大于0

rnd(1)

系统会先生成随机数列表

有N个随机数

你每执行一次rnd(1)就获取列表中下一个随机数

比如有这么个列表

程序开始时

得到0.7055475

执行第二次rnd(1)得到0.533424

第三次0.5795186

你关闭程序重新打开

第一次得到还是0.7055475

.7055475

.533424

.5795186

.2895625

.301948

而你说的X0

X0没差别

是错的

Print

Rnd(1)

Debug.Print

Rnd(-2)

Debug.Print

Rnd(-2)

Print

Rnd(1)

结果是不一样的

X等于0

最近生成的数

一般为科学型数值

这个值也是不变的

rnd(x)

省略x不写

就和X0

效果一样

=========================

Randomize

number

Rnd

函数的随机数生成器初始化,该随机数生成器给

number

一个新的种子值。如果省略

number,则用系统计时器返回的值作为新的种子值。

如果没有使用

Randomize,则(无参数的)Rnd

函数使用第一次调用

Rnd

函数的种子值。

注意

若想得到重复的随机数序列,在使用具有数值参数的

Randomize

之前直接调用具有负参数值的

Rnd。使用具有同样

number

值的

Randomize

是不会得到重复的随机数序列的。

一般在使用rnd获取随机数

都是

randomize

int(rnd*(上限-下限+1)+下限)

这2个函数的X都是省略不写

VB.net中的求和问题

Private Sub Command1_Click()

MsgBox CalcResult(2)

End Sub

Public Function CalcResult(X As Long) As Double

Dim dblMinLevel As Double

Dim dblItem As Double

Dim dblN As Double

Dim dblMember As Double, dblBase As Double

Dim i As Double

Dim dblResult As Double

dblMinLevel = 10 ^ (-6)

dblN = 0

Do

dblMember = X ^ dblN

dblBase = 1

i = dblN

Do While i 1

dblBase = dblBase * i

i = i - 1

Loop

dblItem = dblMember / dblBase

dblResult = dblResult + dblItem

dblN = dblN + 1

Loop While dblItem = dblMinLevel

CalcResult = dblResult

End Function

怎么把三个VB.NET的项目合成一个

以一个项目为基础,在其工程上点右键,选添加,现有项,然后选择另外两个项目里的文件,用这种方式把所有的都添加上就行了

在你要引入的文件或文件夹上点右键,选包括在项目中

下次直接追问,要不我看不到

VB.net 高次曲线拟合并绘图

构造Pen的时候可以指定粗细,如果你指定为1,并且放大了10倍,最后就成10了,所以你指定小点就行了,比如 Dim p As New Pen(Color.Black, 0.01) 最终绘制的线的粗细不会小于1


新闻标题:关于vb.net多项式拟合的信息
当前链接:http://cqcxhl.com/article/dodeeoc.html

其他资讯

在线咨询
服务热线
服务热线:028-86922220
TOP