Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
12
返回列表 发新帖
楼主: caipiaofans

[已解决]代码 怎么运算不起来? 望修正

[复制链接]
 楼主| 发表于 2014-12-3 09:09 | 显示全部楼层
香川群子 发表于 2014-12-3 08:56
原问题帖的方程式为:
(1579-K1)*(1579-K1) + (5803-K2)*(5803-K2) + (1137-K3)*(1137-K3) = 217502634
...


s1,s2,s3未知

^2 是平方的意思

整体公式是这样
a3^2+ a2^2 + a1^2 + s1^2 + s2^2 + s3^2 - 2*(a3*s3 + a2*s2 + a1*s1) = 217502634

整理成这样:
(a1-s1)*(a1-s1) + (a2-s2)*(a2-s2) + (a3-s3)*(a3-s3) = 217502634

应该没错吧...


不然直接符合这个公式的运算也可以
a3^2+ a2^2 + a1^2 + s1^2 + s2^2 + s3^2 - 2*(a3*s3 + a2*s2 + a1*s1) = 217502634
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

 楼主| 发表于 2014-12-3 09:11 | 显示全部楼层
本帖最后由 caipiaofans 于 2014-12-3 09:16 编辑
香川群子 发表于 2014-12-3 08:56
原问题帖的方程式为:
(1579-K1)*(1579-K1) + (5803-K2)*(5803-K2) + (1137-K3)*(1137-K3) = 217502634
...

老师好...


是不是 我的限定错误了?

一个小数 减  一个 大数 ,负数的平方 是正.
我感觉
是另外一种考虑...
不知道我的理解是否正确


回复

使用道具 举报

发表于 2014-12-3 10:50 | 显示全部楼层
本帖最后由 香川群子 于 2014-12-3 11:51 编辑
caipiaofans 发表于 2014-12-3 09:00
应该 是 可以解的..

我去……上了帅哥的当了……他的算法是错误的。


回复

使用道具 举报

发表于 2014-12-3 12:09 | 显示全部楼层    本楼为最佳答案   
本帖最后由 香川群子 于 2014-12-3 12:15 编辑

用下面这个程序代码可以得到很多、很多解:

'要求例子:
(1579-k1)^2 + (5803-k2)^2 + (1137-k3)^2 = 217502634
或:
(x1)^2 + (x2)^2 + (x3)^2 = 217502634

  1. Sub test()
  2.     Dim ar&(1 To 65530, 1 To 3), a1&, a2&, a3&, s&, x1&, x2&, x3&, k&, tms#
  3.     tms = Timer
  4.    
  5.     a1 = Range("a2"): a2 = Range("b2"): a3 = Range("c2"): s = Range("d2") '从单元格读取参数
  6.     a1 = 9342: a2 = 9462: a3 = 7007: s = 217502634 '或直接赋值
  7.    
  8.     For x1 = 0 To Int(Sqr(s))
  9.         For x2 = 0 To Int(Sqr(s - x1 ^ 2))
  10.             x3 = Int(Sqr(s - x1 ^ 2 - x2 ^ 2))
  11.             If x1 ^ 2 + x2 ^ 2 + x3 ^ 2 = s Then
  12.                 k = k + 1: ar(k, 1) = x1: ar(k, 2) = x2: ar(k, 3) = x3
  13.                 If k > 0 Then GoTo Ext '如果只需一组解则马上停止
  14.             End If
  15.         Next
  16.     Next
  17. Ext:
  18.     MsgBox Format(Timer - tms, "0.000s ") & k
  19.     If k Then Range("a5").CurrentRegion.Offset(1) = "": Range("a6").Resize(k, 3) = ar
  20. End Sub
复制代码
当参数要求为:a1 = 9342: a2 = 9462: a3 = 7007: s = 217502634 时,
得到第一组解为:
x1 = 4: x2 = 10057: x3 = 10787

即:
k1 = 9342±4: k2 = 9462±10057: k3 = 7007±10787 这样就可以算一下子得到2*2*2=8组解了。


回复

使用道具 举报

 楼主| 发表于 2014-12-3 12:37 | 显示全部楼层
香川群子 发表于 2014-12-3 12:09
用下面这个程序代码可以得到很多、很多解:

'要求例子:

嗯..谢谢老师..

我自己再 写个 计算公式 实现后面的 + - 法运算 也是可以的
回复

使用道具 举报

 楼主| 发表于 2014-12-3 13:43 | 显示全部楼层
我测试 全部+的,得不到正确结果

4
10057
10787
10787
回复

使用道具 举报

 楼主| 发表于 2014-12-3 15:04 | 显示全部楼层
测试有效...

刚才 计算有误...

回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-28 18:07 , Processed in 0.579459 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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