明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: 风花飘飘

[风花飘飘] 【一元三次方程的通解公式】

[复制链接]
发表于 2013-4-10 18:09 | 显示全部楼层
风花飘飘 发表于 2013-4-10 17:03

楼主可考虑了这个公式在
(m^2-(4a^2-12b)^3) 小于零的时候,该如何考虑这个公式?
譬如
x^3+x^2-0.05=0 时候?

点评

虚数开立方问题很容易解决。  发表于 2013-4-10 22:10
 楼主| 发表于 2013-4-10 19:32 | 显示全部楼层
这时,有3个实根。
 楼主| 发表于 2013-4-10 19:35 | 显示全部楼层
代码如下:
Private Sub Command1_Click()
Dim a1, b1, c1, k
k = Text1.Text
a1 = Text2.Text
b1 = Text3.Text
c1 = Text7.Text
Print "           "; "鲍丰武原理 王彦会程序设计"
Print "           "; "免费试用 贩卖必究"; "                 "; "WB2.9试用版"
Print "           "; "编制于2013年3月28日"
If k = "" Or k = "Text1" Then
Text4.Text = "a不能为空或为0"
Else
a = Val(a1) / Val(k)
b = Val(b1) / Val(k)
c = Val(c1) / Val(k)

If c = 0 Then
   Text4.Text = "a d 不能为 0"
   Text5.Text = "a 或d 为 0可能已不是1元3次方程"
   
    Else
   
   
m = 36 * Val(a) * Val(b) - 8 * Val(a) ^ 3 - 108 * Val(c)
n1 = Val(m) ^ 2 + (12 * Val(b) - 4 * Val(a) ^ 2) ^ 3
If n1 < 0 Then
n2 = Sqr(Abs(n1))
Else
n2 = Sqr(Val(n1))
End If
If n1 < 0 And m < 0 Then
jq = (Sqr(Val(m) ^ 2 + Val(n2) ^ 2)) ^ (1 / 3)
jq1 = Atn(Val(n2) / Val(m))
q = -Val(jq) * Cos(Val(jq1) / 3)
p = q
Else
If n1 < 0 And m > 0 Then
jq = (Sqr(Val(m) ^ 2 + Val(n2) ^ 2)) ^ (1 / 3)
jq1 = Atn(Val(n2) / Val(m))
q = Val(jq) * Cos(Val(jq1) / 3)
p = q
Else
If Val(m) + Val(n2) < 0 Then
p = -(Abs(Val(m) + Val(n2))) ^ (1 / 3)
Else
p = (Val(m) + Val(n2)) ^ (1 / 3)
End If
If Val(m) < Val(n2) Then
q = -(Val(n2) - Val(m)) ^ (1 / 3)
Else



q = (Val(m) - Val(n2)) ^ (1 / 3)
  
  
  

End If



  End If
  
  
  End If
  



If a = 0 And b = 0 Then
Text4.Text = (Val(p) + Val(q) - 2 * Val(a)) / 6
Text5.Text = -(Val(p) + Val(q) + 4 * Val(a)) / 12 & "+" & Abs((3 ^ (1 / 2) * (Val(p) - Val(q)))) / 12 & "i"
Text6.Text = -(Val(p) + Val(q) + 4 * Val(a)) / 12 & "-" & Abs((3 ^ (1 / 2) * (Val(p) - Val(q)))) / 12 & "i"
Else
d = (Val(p) + Val(q) - 2 * Val(a)) / 6
jb = Val(a) + Val(d)
jc = Val(b) + Val(d) * (Val(a) + Val(d))
jd = Val(jb) ^ 2 - 4 * Val(jc)
If Val(n1) <= 0 And Val(jd) >= 0 Then
Text4.Text = d
Text5.Text = -Val(jb) / 2 + Sqr(Val(jd)) / 2
Text6.Text = -Val(jb) / 2 - Sqr(Val(jd)) / 2
Else
If Val(n1) > 0 And Val(jd) < 0 Then
Text4.Text = d
Text5.Text = -Val(jb) / 2 & "+" & Sqr(Abs(jd)) / 2 & "i"
Text6.Text = -Val(jb) / 2 & "-" & Sqr(Abs(jd)) / 2 & "i"
Else
If Val(n1) > 0 Then
Text4.Text = (Val(p) + Val(q) - 2 * Val(a)) / 6
Text5.Text = -(Val(p) + Val(q) + 4 * Val(a)) / 12 & "+" & Abs((3 ^ (1 / 2) * (Val(p) - Val(q)))) / 12 & "i数据太大有误差"
Text6.Text = -(Val(p) + Val(q) + 4 * Val(a)) / 12 & "-" & Abs((3 ^ (1 / 2) * (Val(p) - Val(q)))) / 12 & "i可选大数据高精度的"
Else
Text4.Text = (Val(p) + Val(q) - 2 * Val(a)) / 6
Text5.Text = -(Val(p) + Val(q) + 4 * Val(a)) / 12 + Abs((3 ^ (1 / 2) * (Val(p) - Val(q)))) / 12 & "参考值可另选高精度的"
Text6.Text = -(Val(p) + Val(q) + 4 * Val(a)) / 12 - Abs((3 ^ (1 / 2) * (Val(p) - Val(q)))) / 12 & "或可x2,3的和/2为实部,差/2为虚部"
End If
End If
End If
End If
End If
End If

End Sub
Private Sub Command2_Click()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
Text5.Text = ""
Text6.Text = ""
Text7.Text = ""
Form1.Cls
End Sub

 楼主| 发表于 2013-4-10 22:07 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2013-5-31 01:07 | 显示全部楼层


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2013-5-31 01:11 | 显示全部楼层
本帖最后由 风花飘飘 于 2013-5-31 01:24 编辑



这个程序不是免费试用的,收一枚金币,呵呵。。。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2013-6-8 11:50 | 显示全部楼层
楼上的这个东东比较实用!
 楼主| 发表于 2013-9-8 17:24 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2022-7-8 02:34 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2022-7-8 02:37 | 显示全部楼层
本帖最后由 风花飘飘 于 2022-7-10 18:42 编辑

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-16 14:59 , Processed in 0.240218 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表