打印

一个简单的电路的复杂数学问题

[复制链接]
楼主: ljm810010
手机看帖
扫描二维码
随时随地手机跟帖
楼主
a5566255| | 2008-11-11 17:31 | 显示全部楼层 回帖奖励 |倒序浏览

即便计算难(好像不太难啊),

编个PC程序(比如穷举下)算下嘛 。。。。。。

使用特权

评论回复
沙发
a5566255| | 2008-11-11 19:35 | 显示全部楼层

不会真成超越方程吧?

有空我看看~~看新闻要紧。。。。。

使用特权

评论回复
板凳
a5566255| | 2008-11-12 10:03 | 显示全部楼层

这三个差值再做平均,并求最大值不太合适吧

如果一个差是0。001,另二个是0。999,那么差值之平均值也会很大,从实际应用来说应该求一个三个差值都很大(并且尽量相等),这样才有用嘛~~
r3 = 1000
r2 = 1368
r1 = 2308
这样得来的应是最佳实用值~~
下面是VB计算程序(只要建个工程,加入下面代码运行就可,不用加任何东东)
Private Sub form_Click()
Dim u(3) As Single, r1 As Long, r2 As Long, r3 As Long
Dim max(3) As Single, maxu(3) As Single, maxr(3) As Long, maxx As Single
i = 0
r3 = 1000
For r1 = 1 To 6000
For r2 = 1 To 6000
u(1) = 5 * r3 / (r1 + r3)
u(2) = 5 * r3 / (r2 + r3)
u(3) = 5 * r3 / ((r1 * r2 / (r1 + r2)) + r3)
max(1) = u(2) - u(1)
max(2) = u(3) - u(2)
If Int(max(1) * 10) = Int(max(2) * 10) And max(1) > maxx Then
maxx = max(1)
maxr(1) = r1: maxr(2) = r2: maxr(3) = r3
End If
DoEvents
Next
Next
Print maxx, maxr(1), maxr(2), maxr(3)
End Sub

使用特权

评论回复
地板
a5566255| | 2008-11-12 10:06 | 显示全部楼层

回52楼PWM

是的,和R3无关,R3变了,R1,R2成比例变就行~~
那个1。8和1。1不太黄金的很哦~~
PS:此贴真是炙手可热啊,刚写了几个字,又多了那么多回贴。。。。。。

使用特权

评论回复
5
a5566255| | 2008-11-12 10:20 | 显示全部楼层

回PWM

哦,不对,是HWM~~
除了比例(我是说出现最大值的情形成比例,不是成比例时最大值就会相等)和0点,还有什么关系?

使用特权

评论回复
6
a5566255| | 2008-11-12 10:45 | 显示全部楼层

65楼HWM大师:我的意思是R1,R2,R3间满足这种比例关系:

x:ax:bx(a,b为定值)
66楼 PowerAnts :黄金比例的电阻并联所得的最大差貌似只适用相等的情形。。。
有实用价值的适合的电阻:
r3 = 1000
r2 = 1368
r1 = 2308
再小不行,再大的话会有些不好吧~~

发完看到正主的论点,OK,再试试~~

使用特权

评论回复
7
a5566255| | 2008-11-12 13:41 | 显示全部楼层

好像确实是1.8141和1.1110

一定要用算术方法的话,那到最后应该都是求一组数的方差,取求最小的为最佳值,不过计算量不小这样的话,总是得“穷举”出一些差数的(比如平均值>0.59V的),然后取这类阻值中方差最小的
虽然这种方法不如用一个逻辑关系式表达下那么简洁,但人家作为一门数学分支——统计学而存在应该是有道理的~~
那个不用一味追求手算,这世上只能机器算的数学题至少比我吃过的米都多,圆周率你有本事用祖冲之的方法更新现代记录看看.....


VB程序(可以列出主要可行值):
Option Explicit
Dim i As Integer
Dim rr(2000, 4) As Single
Private Sub Command2_Click()
    Dim u(3) As Single, r1 As Long, r2 As Long, r3 As Long
    i = 0
    r3 = 10000
    For r1 = 18000 To 19000
        For r2 = 11000 To 12000
            u(1) = 5 * r3 / (r1 + r3)
            u(2) = 5 * r3 / (r2 + r3)
            u(3) = 5 * r3 / ((r1 * r2 / (r1 + r2)) + r3)
            max(1) = u(2) - u(1)
            max(2) = u(3) - u(2)
            If Int(max(1) * 10000) > 5916 And Int(max(2) * 10000) > 5916 Then i = i + 1: rr(i, 1) = r1: rr(i, 2) = r2: rr(i, 3) = max(1): rr(i, 4) = max(2)
            DoEvents
        Next
    Next
    Do While i <> 0
    If rr(i, 1) <> 0 Then List3.AddItem rr(i, 1) & " " & rr(i, 2) & " " & rr(i, 3) & " " & rr(i, 4)
    i = i - 1
    Loop
End Sub

使用特权

评论回复
8
a5566255| | 2008-11-12 13:51 | 显示全部楼层

列出一些值

使用特权

评论回复
9
a5566255| | 2008-11-19 13:37 | 显示全部楼层

100楼我来顶呵呵~~

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则