打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
人人小组

利用单变量求解和VBA进行批量求解2544

杨海从2012-05-10 00:45
楼主

十多天前,对水质模型参数K2的率定让笔者甚是头疼,特别是用VB编的程序后进行参数输入过程,输的苦逼啊。前几天专门学了一些文件和驱动的东西,感觉对处理现存问题不够实用,就琢磨着寻求简便的方法,还真被我找到了,很简单,现记下来与大家分享。

 

一般地,遇到非线性一元方程,我们常用二分法、不动点迭代法、牛顿迭代法等数值方法编程求解。然而,当需要处理大批量,多参数的此类方程时,用编程的方法求解将是十分愚笨的方法。因为仅对数据的输入(键入)或者格式(文件输入)就会让我们烦闷不已。那么EXCEL的单变量求解将是一个十分快捷简便的方法。现叙述方法如下:

 

问题,有10个方程A*X*X+B*X-30=0,其中A={1,2,3,4……,9,10};B={2,3,4,……10,11}求解个方程的一个根(因为我们经常只需要求一个合适的参数,所以这里不讨论该方程根的分布情况)。

 

解决方法:

打开EXCEL,在A列输入参数A的值,在B列输入参数B的值,C列作为解X得盛放列,D列作为函数值,其中的函数当然为A*X*X+B*X-30。

 

各项输入完毕,请打开工具/宏/录制新宏->在填入需要的各项之后点击确定,即可录制新宏了。(不要着急,您并不需要熟悉VBA,仅需要一点点的编程或者英语基础;当然你可以查词典)

录制的宏当然需要解决这个问题了。步骤是打开工具/单变量求解->填入各项

其中目标单元格为D1,目标值0,可变单元格C1;(各项很容易懂)

单击确定,这个时候第一个方程的一个解应该在C1单元格里。

下面进行批量求解。

按alt+F11,打开EXCEL的VBA模块,找到录制的宏,你可以看的一行刚才录制的代码如下:

Sub Macro1()

' Macro1 Macro

' 宏由 微软中国 录制,时间: 2012/5/10

'

    Range("D1").GoalSeek Goal:=0, ChangingCell:=Range("C1")

End Sub

大部分需要处理这类问题的同学都基本能看明白吧(录制宏的目的就是要我们自己弄够明白EXCEL的内部命令是怎么实现的,这种方法在学习和工作中经常用到)

下面要对上面代码进行修改,已处理批量方程。

需要处理的方程有10个,处理代码如上,故而代码如下

 

Sub Macro1()

' Macro1 Macro

' 宏由 微软中国 录制,时间: 2012/5/10

Dim i As Integer

    For i = 1 To 10

        Range("D" & i).GoalSeek Goal:=0, ChangingCell:=Range("C" & i)

    Next i

End Sub

 

点击运行,就搞定啦。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
超实用excel小技巧之时间倒计时及动态显示
ExcelVBA技巧
vba编程基础2
excel:如何批量导入图片
Excel之VBA常用功能应用篇:倒计时的制作
Office VBA 入门 | Microsoft Learn
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服