g******s 发帖数: 733 | 1 matlab中为x=-100:2:100;请问用fortran该怎么写?先谢了!BOW! |
|
C***S 发帖数: 175 | 2 It depends what fortran you are using.
do xi=-100,100,2
x(i)=xi
end do
in Fortran90 or Fortran95, you may find something easier.
like
INTEGER D(3)
D = (/1:5:2/) ! Triplet form
D = (/(I, I=1, 5, 2)/) ! Implied-do loop form
check you fortran help file, coz this could also be version dependable.
Different companis have some specific function or syntax on this. |
|
g******s 发帖数: 733 | 3 thanks a lot! I am using Unix system. Matlab is too slow for me and I am
changing my matlab codes to Fortran.
Does Unix have Fortran90 or 95 compiler? How can I know if Unix have the
compiler or not? I have to do matrix adding, comlex, fourier tranform etc, any
good book recommend?
Thanks a lot! |
|
C***S 发帖数: 175 | 4 if you need to do FT, you better choose matlab. I do not know wether you can
find the library for FT under Fortran.
Also, since you are dealing matrix, matlab is a good choice.
If not too many loops, and you vectorized your program of matlab, it should
not be very slow.
Unix will have gcc, and mostly support fortran77.
You can check the help for detail, like man gcc
any |
|
|
L*******g 发帖数: 913 | 6 我在用numerical recipe的simplex方法找最小值,程序片段如下:
int ntmp;
float p[3][2], y[3];
float getfunc(float x[])
{...}
void amoeba(float **p, float y[], int ndim, float ftol,
float (*funk)(float []), int *nfunk);
p[0][0]=p[0][1]=0.5;
p[1][0]=p[0][0]-0.2;
p[1][1]=p[0][1]-0.2;
p[2][0]=p[0][0]+0.2;
p[2][1]=p[0][1]-0.2;
amoeba(p, y, 2, 1.0e-5, getfunc, &ntmp);
现在问题是amoeba子程序里不能读入p的初值。是不是p的类型有问题?多谢指教! |
|
j**u 发帖数: 6059 | 7 ☆─────────────────────────────────────☆
johnlee123 (no) 于 (Tue Jun 12 21:22:16 2007) 提到:
用牛顿迭代法求解非线性方程组,收敛非常慢,尽管最后能够收敛到预计的结果,但是
需要几百甚至上千步迭代。请问大虾这可能是什么原因引起的呢?多谢了!
按以往的经验,牛顿迭代收敛是很快的,只要初值合适,系数矩阵条件数不大,通常10
步以内就能收敛到合适的结果。如果系数矩阵条件数太大,那无论迭代多少步都无法收
敛,而不会像现在的情况这样迭代几百步之后收敛。
☆─────────────────────────────────────☆
longhei ($$$$$$$$$$$$) 于 (Tue Jun 12 21:44:49 2007) 提到:
who said Newton always converges in 10 steps (even with well-conditioned
coefficient matrix)?
10
☆────────────────────────────── |
|
i**g 发帖数: 134 | 8 来自主题: Computation版 - 请教个问题 可能不同的系统和编译器对于初值的处理不同,导致allocate时的变量大小
同原来不同?
或者浮点比较执行不同,导致变量值不同?
2^64是long integer了?所有位都是1?
追踪一下控制allocate大小的变量的值的变化? |
|
e*****n 发帖数: 124 | 9 目前用newton-raphson,但是解太依赖于给的初始值,想问问有没有办法能够大概估计个
解存在的区间,或者有没有方法能够不是这么以来初值.
另外,我的问题是解ODE方程组,用newton-raphson求fixed-point,然后再分析稳定性.但
newton-raphson好象很难收敛到在saddle point的fixed-point,想问问有啥方法找到这
些不稳定的解.
谢谢 |
|
s****h 发帖数: 921 | 10 x=[x1,x2,...,xn]
min g(x)
st. f1(x)=0
f2(x)=0
...
fm(x)=0
传统算法是Least Square加Gauss-Newton法迭代作.
但当x维数很大的时候,收敛性有一些问题.
但是我的问题有一个特殊之处:
迭代计算,
每次将f(x)从nonlinear方程变成linear方程,h(x).
h(x)和f(x)关系类似h(x)=f(x)/x
这样每次就可以用Least Square解线性方程算出x.
每次再重新迭代.
我发现有趣的是收敛性能更好了.
但是迭代步数增加了.
我感觉有点象Gaussian-Siedel和Newton-Raphson解非线性方程.
前者收敛性能好像好一点,主要对初值要求不高,但收敛步数的确比Newton-Raphson多.
当然,二个算法都没保证一定会收敛. |
|
|
|
s***h 发帖数: 592 | 13 十分感谢,还有一个问题还请指教
如果知道一个解明显是不合理的,有方法能跳过向这个解收敛的方向么? |
|
E*V 发帖数: 17544 | 14 approximately draw a graph to see the possible root |
|
l*****i 发帖数: 3929 | 15 “比较准确的解”这个概念本身就是因具体情况不同而不同的,你要看自己的applicat
ion去定义什么叫准确的解。画图观察是个办法,最起码看看你感兴趣的区间里是不是有
很多解... |
|
s****h 发帖数: 921 | 16 我有一个动态系统参数优化的问题。
参数有四个:a,b,c,d。
优化的目标是使系统的output达到理想的曲线g.
我从一个initial guess开始,用简单的sensitivity analysis进行迭代。效果还可以.
我知道sensitivity analysis对初值的依赖性很强,如果initial guess太差,可能无法
收敛.
实际运行中,我发现:
如果initial guess太差,H矩阵产生奇异,rank只有2,而非4.
这个就算是无法收敛吗?
还是因为我在计算梯度时候的步长取小了,造成H矩阵奇异呢? |
|
r****a 发帖数: 3249 | 17 我在做下面那个积分时老是告诉我“??? Attempted to access y(1); index out of
bounds because numel(y)=0.”,请各位老大帮我看看我什么地方搞错了,式中除积分
变量z,r外都是赋有初值的变量。
p1=dblquad(@(z,r) ((z-(y-q/cos(theta)+r*sin(theta))/thegema)/omegaC)^(1.5)*
thegema*exp(-0.5*(z/thegemaS)^2)/((2*pi)^0.5*thegemaS), (y-q/cos(theta)+r*
sin(theta))/thegema,(y-q/cos(theta)+r*sin(theta))/thegema+omegaC,-0.5/
thegema,0.5/thegema,1e-12);
先谢了! |
|
r****a 发帖数: 3249 | 18 明月清风,刚发现你给r赋了一个初值,但r是一个积分变量啊??呵呵
.5 |
|
l******n 发帖数: 9344 | 19 不能这么弄吧
好歹也得写成标准形式,看看性态吧
这和初值也有关系 |
|
o*d 发帖数: 72 | 20 【 以下文字转载自 Mathematics 讨论区 】
发信人: omd (omd), 信区: Mathematics
标 题: 请问一个matlab求解问题
发信站: BBS 未名空间站 (Mon Feb 25 09:39:19 2013, 美东)
现在有一个大概40至50维左右的任意协方差矩阵M和一个同维度的向量t
t的取值比较有规律,比如有5个1/5,9个1/9,10个1/15...的样子
然后要解同维度向量x使得,{x_i*M_i*x'} 约等于 t_i,任取i。
最初想法就是简单地用fminsearch或者lsqnonlin去逼近t
但是初值范围很难估计,解的效果都不好。
蒙特卡洛也不行。
不知道对于这种问题有没有什么较好的预估、迭代方法?十分感谢! |
|
b*******g 发帖数: 513 | 21 有时候看到有些matlab codes里有null matrix,譬如a=[],然后就直接用a来作运算。
感觉有点迷惑。null matrix到底是什么样的matrix在matlab里?是一个随机的矩阵?
然后这个随机矩阵的value都是随机的?那用null matrix进行iteration,和给a赋一个
初值再进行iteration结果一样吗?不懂,望指点。多谢。 |
|
e*****e 发帖数: 37 | 22 是哦,回头管他们要点广告费或者几个不要钱的lic。被告知是可以的,但试了一下,
8mt以上的受益不大,一般就用8个。最好一个mt一个core。
读一天?多大的电路啊,1M左右的混合电路读用不了多久啊,再大的用这个是不是找罪
受,呵呵。个人偏爱spectre,小的就用这个,可这个又贵又慢界面也烂,气人啊。
hspice的初值求解太烂了,老得手工。
楼上的童鞋,你得学会用必应,狗狗,摆渡,搜猪五的,别问这个是什以呀。 mt就是
多线程,xa是fastspice多用于管级功能验证, 那家的ultrasim很烂的。
免费的喜欢LTspice.
收费的喜欢xa啊。 |
|
e*****e 发帖数: 37 | 23 是哦,回头管他们要点广告费或者几个不要钱的lic。被告知是可以的,但试了一下,
8mt以上的受益不大,一般就用8个。最好一个mt一个core。
读一天?多大的电路啊,1M左右的混合电路读用不了多久啊,再大的用这个是不是找罪
受,呵呵。个人偏爱spectre,小的就用这个,可这个又贵又慢界面也烂,气人啊。
hspice的初值求解太烂了,老得手工。
楼上的童鞋,你得学会用必应,狗狗,摆渡,搜猪五的,别问这个是什以呀。 mt就是
多线程,xa是fastspice多用于管级功能验证, 那家的ultrasim很烂的。
免费的喜欢LTspice.
收费的喜欢xa啊。 |
|
e*****e 发帖数: 37 | 24 晒啥? 这玩意不是跑精度是跑功能和时间。spectre 8mt跑一星期(还要用liberal),
以前用nanosim起早贪黑的也得跑一天一夜的, 这家伙两三个小时搞定(一个core),
不过,前戏要足,初值啥的整的准点就中,结果也不难看。 |
|
g******g 发帖数: 292 | 25 我第一印象就是这是个二阶系统。然后导出来一看,发现终值定理和初值定理都不能用
(都出现无穷了)。 |
|
d*****n 发帖数: 3033 | 26 这都瞎掰什么呢,这是大学物理的经典题目,理想电容充电。
最终电容储存的能量是电源所供应能量的一半。
线路消耗的能量也是电源供应能量的的一半。
理想电容的意思就是电容本身没有电感(不会震荡),电阻无穷大(不会有漏电)。
数学表达式里就不需要考虑电容的电阻和电感了。
题目算起来非常简单,
假设一个电源和电容组成的简单回路,回路的电阻R。
电源内阻忽略,回路电感忽略。
V电源=V电容+IR
V电源 Idt= V电容 Idt + IR Idt
V电源 dq = V电容 dq + I^2 Rdt
两边积分,
V电容=q/C, q 初值=0, q 终值=V电源*C
最后一项就是电阻上面的能量消耗
(I^2 Rdt)的积分= 1/2 C V^2
可见,电阻上消耗的能量居然是不含R的。
所以R->0,消耗的能量仍然是严格的一半。
唯一的悖论是,如果是理想导线,
那么回路电阻R=0,不就没有热量损失了吗,能量跑哪儿去了?
首先,如果导线都是超导的,那么接通瞬间,
电流无穷大,会超过导线的临界电流Ic,超导线也不超导了,也有电阻。
也就会消耗能量。
其次,即使是理想导线,那么连接处也是有电阻的,
线路整... 阅读全帖 |
|
r********r 发帖数: 11248 | 27 来自主题: Mathematics版 - 问题求助 各位大侠,我有一个数列通项的问题如下.
X(n+1) = A/X(n) + B, 给定初值 X(0) = p, A 和 B均为常数.
怎么求出 X(n)关于p的一般表达?
多谢各位了! |
|
r********r 发帖数: 11248 | 28 这个问题我前两天问过,但是没有得到正确答案,希望各位大侠帮帮忙。
问题如下.
X(n+1) = A/X(n) + B, 给定初值 X(0) = p, A 和 B均为常数.
怎么求出 X(n)关于p的一般表达?
多谢各位了! |
|
j********3 发帖数: 560 | 29 【 以下文字转载自 Computation 讨论区 】
发信人: johnlee123 (no), 信区: Computation
标 题: 请教一个牛顿迭代的问题
发信站: BBS 未名空间站 (Tue Jun 12 21:22:16 2007)
用牛顿迭代法求解非线性方程组,收敛非常慢,尽管最后能够收敛到预计的结果,但是
需要几百甚至上千步迭代。请问大虾这可能是什么原因引起的呢?多谢了!
按以往的经验,牛顿迭代收敛是很快的,只要初值合适,系数矩阵条件数不大,通常10
步以内就能收敛到合适的结果。如果系数矩阵条件数太大,那无论迭代多少步都无法收
敛,而不会像现在的情况这样迭代几百步之后收敛。 |
|
d****r 发帖数: 135 | 30 independent 的话一定是normal。你可以随便设出两个normal distribution r.v.,然
后利用independence得到两个r.v.的乘积density function,进一步用积分计算他们的
和的density function,你会发现还是一个normal的density function。这个计算不难。
楼上给出的例子不是一个反例。因为nomarl distribution 有一个极限情况,可以被认
为是variance趋向无穷的情况。而那个反例恰好就是这样子的,它的density function
是在0点blow up,其它点值为0,这个在一些讲广义函数的书里被叫做delta 函数。因
为正规normal distribution实际上是热方程在一维情况下,初值为delta函数的基本解
的图像(似乎差个scalar),因此delta 函数恰好就是一个极限状态的normal
distribution。 |
|
|
f*******y 发帖数: 423 | 32 牛顿方法就不说什么了。。。换成其他方法能好点,但是基本上也只能找到local
maximum或者local minimum |
|
o*******w 发帖数: 349 | 33 函数f的值不可能大于1. 假设连续.
T_{i+1} = 1 - f(u_{i+1}), where u_{i+1} = u_{i} + 1/(n*SQRT(T_{i})),
0< u_{i} < 1, u的初值, u_{0}, 为一个常数
我猜想T_{i} 最小为O(1/n^(2/3)), 不能再小了.
直观上, 一开始, u的增量是 O(1/n) 因为f(u_{0}) 是一个小于1的常数. u_{i}是
递增的, 所以T_{i}是递减的(假设f在极大值点之前是增函数), 因此u的增长率也是递增
的. 所以f(u_{i})迅速接近1, 但永远也达不到1, 最小差距为 O(1/n^(2/3)).
这是我想要证明的, 但不知怎么证. |
|
y*2 发帖数: 81 | 34 方程组如下
F''' +3F*F''-2(F')^2+R=0
R''+3*P*F*R'=0
其中,F,R为变量t的函数,,F'''表示F的三阶导数,P是变化的常数,变化范围从1到
100,边界条件为:
t=0,F=F'=0,R=1
t->无穷,F'->无穷,R=0
该怎么转换边界条件呢?无穷的话是不是用shooting法没法命中初值?
多谢多谢~ |
|
b*******g 发帖数: 513 | 35 有时候看到有些matlab codes里有null matrix,譬如a=[],然后就直接用a来作运算。
感觉有点迷惑。null matrix到底是什么样的matrix在matlab里?是一个随机的矩阵?
然后这个随机矩阵的value都是随机的?那用null matrix进行iteration,和给a赋一个
初值再进行iteration结果一样吗?不懂,望指点。多谢。 |
|
p******g 发帖数: 66 | 36 初值不一样,但都是可求显表达式的。。。最讨厌猜数字游戏 |
|
S*E 发帖数: 3662 | 37 初始值ODE问题有解的存在和唯一性定理。
严格地说,如果我们把变换规则相同但是定义域不同的两个函数看成是
不同的,那么初值问题的解其实是不唯一的,依赖于定义域的大小。
所以,严谨地叙述是,定义域最大的解是唯一的。
我的问题是:定义域最大的解有没有专门的英语名称?比如说:
maximum solution 或者 maximal solution ? 谢谢! |
|
i****4 发帖数: 1906 | 38 我用最小化 解 现在有个解
这个比较粗糙而且受初值影响太大 因为不是用数学软件解的
Find min |(1+x^2+y^2)*z-a|+|(x+x*y)*z-b|+|x^2*z-c|
解析解软件能出?
还有别的数值解么? |
|
i****4 发帖数: 1906 | 39 那个最小化的方法 受初值影响很严重
我大致知道结果的范围但是三个参数任意一个波动之后 三个解变化挺大 都在可以有实
际解释的值域内
就是看有没有数学软件解决这个比较专业一些
我现在用的不是数学软件 |
|
|
a****a 发帖数: 5763 | 41 不能
三体在任意一刻的状态完全由初始条件决定,不存在几率的问题,混沌是由于
初值敏感 |
|
l*3 发帖数: 2279 | 42 你这个问题, 我觉得是可以做到的.
严格证明写起来太长了, 你看我思路对不对:
我们用 y'= epsl * y^2 (初值是y(a)=b,) 可以解出来一系列一次反比函数.
然后这每个函数都是在有限区域内blow up的,
但是你可以取每一段的函数值都足够大来构造你所要的函数, 这样函数值超过g是没有
问题的, 然后因为你只要求所构造的函数 "可微分", 这样你在拼接的地方用一次函数
把他们连起来就行了. |
|
s*****V 发帖数: 21731 | 43 【 以下文字转载自 Military 讨论区 】
发信人: saturnV (土星五号), 信区: Military
标 题: 刘克峰:知识,技巧与想象力
发信站: BBS 未名空间站 (Sun Jun 9 01:14:57 2013, 美东)
在国内工作一年多,接触了许多中学生,大学生和研究生。为了吸引优秀的学生到数学
中来,我与他们有了许多的对话与交流,这引发了我对数学教育从各方面的思考。迄今
已有许多文章对我们的教育体制提出批评,认为它扼杀了学生们的想象力。但我觉得我
们的教育从中学起就过分强调技巧,根本没有开拓学生的知识面才是根本的弊病。见多
才能识广,而没有宽广的知识面,想象力就是无源之水。在中学里,以奥数为甚的题海
战术使学生忘记了做题的目的是为了理解知识。在大学里,有些老师的知识就过于陈旧
和狭窄,将学生引入死胡同,更不可能拓宽学生的知识面了。我觉得对数学专业的学生
而言,要首先拓宽眼界,不仅在数学里的各个学科之间,更包括物理等相关学科。种种
感想促成了这篇文章,希望我自身的经历与体会能起到抛砖引玉的作用。
我将结合自己的治学经验讨论一下知识的重要性以及知识,技巧与想... 阅读全帖 |
|
发帖数: 1 | 44 受教,在此拜谢。很多名词术语都不知道,看来确实入行时间太短学习不够。能否另外
请教一个专门的问题,初值或边值属于索伯列夫空间 W^{k,p},在物理上的意义是什么
?改变 k, p,提升正则性,数学上的意义明显,是否具有物理意义?
的就
数值 |
|
发帖数: 1 | 45 当偏微分方程进入光滑性的研究之后,离物理实际就越来越远。冯康就是避开了偏微分
方程的初值问题,而直接考虑更加贴近物理的变分形式,才做出了有限元的伟大工作,
并及时地解决了当时中国最大的刘家峡水坝的应力分析问题(1964)。冯康说他的数学
工作都是从实际中来的。 |
|
|
s*********n 发帖数: 18 | 47 我试过改初值。
刚才我又用MATLAB的ODE SOLVER的ODE15S试了,从时间上来看,它在某一个时间点不停的
循环。从我自己编的程序计算结果发现,方程的解使得内嵌在方程中的函数值(实际是个
压力函数值)变成了复数,方程的解趋于无穷。 |
|
h****l 发帖数: 7290 | 48 先要确定微分方程属于椭圆,抛物,还是双曲型,
然后才能确定给什样的初值和边值条件,然后还要看看步长是否满足收敛条件。
然后才是收敛不收敛的问题。 |
|
m**********e 发帖数: 12525 | 49 非线性函数的迭代法对初值敏感,收敛域很小,况且还是4个变量的,
所以你这方法基本上只有理论价值 |
|
m**********e 发帖数: 12525 | 50 这个看具体情况吧
另外你确定解只有一个?怎么判断有几个解?如果有超过一个解,第二个怎么求?
用一个1维的情况来说明这个经典的不动点问题,看图,你这迭代可以沿1走,也
可以沿2走,一个收敛,一个不收敛,具体就取决你的初值是否在收敛域,另外这
个方法也无法解决多个解的问题(如图上,还有一个解怎么求?) |
|