level 5
我输出y=x^(-2)这个函数的图像,
自然x不能等于0,
所以我把x=0这点去掉了,但还是出错。
这是为什么?
程序代码:
Option Explicit
Private Sub Command1_Click()
Dim x As Single
For x = -5 To 5 Step 0.01
If x <> 0 Then PSet (500 * x + 5000, -(500 * x ^ -2) + 5000), vbRed
Next
End Sub
2021年03月02日 11点03分
1
level 5
If x <> 0 Then PSet (500 * x + 5000, -(500 * x ^ -2) + 5000), vbRed
这行语句的作用就是输出点时跳过0。
2021年03月02日 11点03分
3
level 15
简单测试了一下,For x = -5 To 5 Step 0.01这个循环过程中,x实际上不会等于0(因为浮点数计算有误差),所以当x接近0时,500*x^-2会很大,超出PSet可以接受的范围
你可以改成 For x = -500 To 500 (x也改成Integer类型),并且计算时用x/100代替x,这样可以消除浮点数误差
2021年03月02日 13点03分
4
同意你的判断。可是我根本就不得负指数的数学意义了……
2021年03月03日 06点03分
你说得对,用500确实不出错了。但如果幂函数的指数为-4就又出错了,指数为是-4的话x的值可能要再大几倍。我就限制输入的指数的范围,必须属于区间[-3.2, 9]。
2021年03月03日 07点03分
level 11
防止出错可以简单粗暴的用on error resume next,另外画函数图像最好用line使之看起来连续
2021年03月02日 16点03分
5
level 11
Option Explicit
Private Sub Command1_Click()
Dim i As Integer
Dim x(-500 To 500) As Single
Dim y(-500 To 500) As Single
Line (0, 5000)-(10000, 5000)
Line (5000, 0)-(5000, 10000)'帮你加个坐标线
For i = -500 To 500
If i <> 0 Then
x(i) = i / 100
y(i) = x(i) ^ -2
End If
If i <> -500 And i <> 0 And i <> 1 Then
Line (500 * x(i - 1) + 5000, -500 * y(i - 1) + 5000)-(500 * x(i) + 5000, -500 * y(i) + 5000)
End If
Next i
End Sub
2021年03月03日 00点03分
6
我并不是只单纯地编了个负二次方函数图像,我编的是较复杂的一个输出函数图像的程序,这个负二次方图像程序代码只是我取出来的一小段代码。
2021年03月03日 07点03分
level 11
不明白楼主为啥,只说出错。就是不愿意说出错的提示?
2021年03月03日 06点03分
7
level 5
有一个条件语句是这样:“If a <> a \ 1 And dot_hor < 0 Then”,执行时出错,错误提示为“编译错误:类型不匹配”,点“调试”后这个“\”也就是整除运算符号被选中。这是什么原因?
2021年03月03日 07点03分
8
不知道你这里为什么会报这个错误……不过你大概是想判断a是不是整数吧,那么你可以改写成a<>Int(a),即取整之后如果不相等,那么a就不是整数
2021年03月03日 08点03分
@初音✨七奈 我改成“a <> Int(a)”后,仍然显示“编译错误:类型不匹配”。这次点“调试”后不等号被选中,说明这次错误出在不等号上。
2021年03月03日 10点03分
level 11
在编程意义上,|x|<1e-154,x的-2次方就会溢出。再考虑到乘500那么|x|就不应大于5E-152。
但在图像意义上,如果要观察大趋势(|x|>1的部分)的话,x=±1时y=500,y最大就不应大于25000,否则想看到顶部时±1以外的部分只是趴在X轴上,这时候|x|就不应该小于0.14;如果要观察±1以内的部分,|x|=0.1时y=50000,已经是±1处的100倍了,也不能再靠近y轴了。上述都是极限情况,所以,建议步长用0.2,并跳过|x|<0.2的部分。
2021年03月03日 07点03分
9
level 11
我已经傻掉了,我发现在本帖中,我已经没有脑子了
我不能再浏览本帖了
2021年03月03日 08点03分
11
level 11
8楼、14楼:
例:
Dim a&()
If a <> int(a) Then
尝试运行,就会是提示
编译错误:类型不匹配
2021年03月03日 11点03分
15
我VB也不是特别精通,只找到当其声明为结构体或数组时,会提醒“编译错误:类型不匹配”,而当a$则是“实时错误:13 类型不匹配”
2021年03月03日 11点03分
@余思培 现在我找到原因了。是因为我将a()定义为数组,而这里我没写下标。
2021年03月03日 12点03分