| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1134 人关注过本帖
标题:如何实现4次曲线y=ax^4+bx^3+cx^2+dx+e的平移,绕点(x1,y1)旋转?
只看楼主 加入收藏
pengzihan
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2011-4-28
结帖率:0
收藏
 问题点数:0 回复次数:6 
如何实现4次曲线y=ax^4+bx^3+cx^2+dx+e的平移,绕点(x1,y1)旋转?
请提供方法或源码
搜索更多相关主题的帖子: 如何 旋转 
2011-05-27 22:56
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
离开学校太久了次方解早忘光了~只能假设 -100<= X<= 100 ~依公式求Ÿ值存到数组中~~
平移的话应该就是加减X值吧~旋转就要靠版主了~

但是又觉得不大对~4次方应该一次有4组解~程序可能要倒过来写~用Ÿ值去求X值~
将座标存到数组中~最后再输出到EXCEL的图表~

但是X=?y+?y+?y+? 这我不会算~

这是试玩版的~

程序代码:
Option Explicit

Const a = 1
Const b = 1
Const c = 1
Const d = 1
Const e = 1

Dim Result() As String
Dim iCount As Long

Private Sub Command1_Click()
Dim i As Long, Temp() As String

    Text1.Text = Val(Text1.Text)
    For i = 0 To UBound(Result)
        Temp = Split(Result(i), ",")
        If UNound(Temp) = 1 Then
            Temp(0) = CStr(CLng(Temp(0)) + CLng(Text1.Text))
            Result(i) = Temp(0) & "," & Temp(1)
        End If
        Erase Temp
    Next i
End Sub

Private Sub Form_Initialize()
    iCount = 0: ReDim Result(iCount)
End Sub

Private Sub Form_Load()
    Call AAA
End Sub

Private Sub AAA()
Dim x As Double, y As Double

    iCount = 0: ReDim Result(iCount)
    For x = -100 To 100
        ReDim Preserve Result(iCount)
        y = (((a * x) ^ 4) + ((b * x) ^ 3) + ((c * x) ^ 2) + (d * x) + e)
        Result(iCount) = x & "," & y
        iCount = iCount + 1
    Next x

End Sub


这样应该不对吧?

不要選我當版主
2011-05-28 00:16
pengzihan
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2011-4-28
收藏
得分:0 
不管对不对,多谢了!
2011-05-29 23:32
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
如果能求的出4次方解~抱歉数学都忘记该怎求了~

我这只是先求出解(需求的4分之一吧)~之后存到数组中~
输出到EXCEL中的制图的XY散布图中(这样类似曲线的积分吧?不过EXCEL中有内建将点连线的功能)~
才算完成一半~再找方法旋转~才是全部~

不好意思~您还是等专家来吧~打扰了~

不要選我當版主
2011-05-30 00:28
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
我不会解方程。

如果绘制的图形需要旋转,有几种方法,有一种 是:
针对这个方程变化,加上角度去 ,把它变成 通过 X1,Y1 的另一个 同等方程。然后再根据结果绘图。

不会这个方程,所以也无法弄。也没看懂题目。

授人于鱼,不如授人于渔
早已停用QQ了
2011-05-30 09:17
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1820
专家分:3681
注 册:2011-3-24
收藏
得分:0 
不相信做不出来~害我想到失眠~

程序代码:
Option Explicit

Dim Conster() As Double, Result() As String, Result1() As String, Result2() As String
Dim a As Double, b As Double, c As Double, d As Double, e As Double
Dim x As Double, y As Double

Private Sub Form_Initialize()
    a = 0: b = 0: c = 0: d = 0: e = 0
    ReDim Conster(0): ReDim Result(0): ReDim Result1(0): ReDim Result2(0)
End Sub

Private Sub Form_Load()
Dim i As Long, j As Long, k As Long, m As Long

    'y = ax^4+bx^3+cx^2+dx+e    'Sample Function
    
    Do While i < 5    '依序输入a,b,c,d,e的值~~若输入错误则该项会一直跳出~直到正确输入为止~
        a = Val(InputBox("", "" & i + 1 & " 個字"))
        If a <> 0 Then
            ReDim Preserve Conster(i)
            Conster(i) = a
            i = i + 1
        End If
    Loop
    
    If UBound(Conster) = 4 And Conster(4) = Conster(0) * Conster(1) * Conster(2) * Conster(3) Then    '若输入值总数 = 5个~或第5个数字无法被前4个数整除~则跳出Sub~表示此方程式无法做正常的因式分解~
    
        a = Conster(0)    '通过验证后开始赋值~
        b = Conster(1)
        c = Conster(2)
        d = Conster(3)
        e = Conster(4)
        
        i = 0: j = 2: k=0: ReDim Conster(0)
        
        For y = -5 To 5 Step 1    '-5 ~ 5 之間求Ÿ值各公因数(数值可依需求调整~CPU不够力~当然就别搞太大~会死机)
            Do While y = 0
                If y Mod j = 0 Then
                    y = y / j
                    ReDim Preserve Conster(i)
                    Conster(i) = j
                    i = i + 1
                Else
                    j = j + 1
                End If
            Loop
            if Ubound(Conster)<3 then 
                ReDim Conster(0)    '若Ÿ值公因数总数少于4个~则为非正常可分解之4次方程式模式~于此跳过重计~
            else
                if Ubound(Conster)=3 then
                    for m=0 to Ubound(Conster)
                        Result1(m) = x & "," & y
                    next m
                else
                    for m=0 to UBound(Conster)
                        Result2(m)=x & "," & y
                    next m
                endif
            endif
        next y 
    Else
        MsgBox "不是標準函式~無法做因式分解求值~"
        Exit Sub
    End If

End Sub


'之后要加写公因数多余4组以上的状况处理~
'最后汇集成一个数组解集合后再开始搞偏移偏移就很简单~~看要左移或右移~只需对X值做加减即可得出最终曲线解集合~
'然后看有没有内建附座标轴之控件可直接用~或输出到EXCEL中的XY散布图(散布图其实可当成取限的积分值~最终验证在套公式算曲线斜率~和微分后的结果比较是否相同)~再用的VBA做图形旋转的动作~
'只记得一次微分是算斜率~二次微分就忘了~
'待高手补足后段代码~或等我有灵感之后再说~先这样了~
'也许用为积分算会更容易~可惜年代久远~已不复记忆~

'程式逻辑大概是这样没错吧~还望各路高手指教~

P.S 参考网址来自 http://zhidao.baidu.com/question/132520820

[ 本帖最后由 wube 于 2011-5-31 04:50 编辑 ]

不要選我當版主
2011-05-31 04:47
快速回复:如何实现4次曲线y=ax^4+bx^3+cx^2+dx+e的平移,绕点(x1,y1)旋转?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052944 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved