求一般电路的两点间电阻——高斯消元法

题目描述:

以带权图的形式给出一个用n个结点和m个电阻连接的电路,求点1与点n两点间的电阻。


问题分析:

省队集训居然会出这种学霸题——太坑爹了啊= =!考的时候完全不会。


解法基于两个事实:

1.<基尔霍夫定律>:所有点的电流总流入等于总流出(除了1和n两点)。
2.<欧姆定律>:I=U/R=(Ex-Ey)/R


因为电流方向不好确定,不妨令电流可正可负,那么定律1可以表示成“总流出之和等于0”,于是对每个节点列一方程,高斯消元解之即可。


有几个值得注意的地方:

1.自环直接无视,重边用倒数和公式合成一条。

2.高斯消元每次找系数绝对值最大的一项,使除法得到的比值尽可能小。这样可以保证解出方程组,也能得到很高的精度。(浮点数貌似越小精度越高

(具体实现看代码)


Code:

#include<cstdio>
#include<cstring>
using namespace std;
#define abs(_) ({ double __=_; (__>0)?__:-__; })

int n,m,u,v,w,a[200][200]; double b[200][200];
double now,tot,gs[200][200],e[200],ans&
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值