首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Gnuplot生成菲涅耳方程的怪异图

Gnuplot生成菲涅耳方程的怪异图
EN

Stack Overflow用户
提问于 2019-11-02 05:31:52
回答 1查看 81关注 0票数 0

我试图为菲涅尔系数生成图形,但图形是错误的。

代码语言:javascript
复制
#! /usr/bin/gnuplot -p

#Gnuplot script Fresnel equation
set term postscript eps enhanced color lw 2 "Arial" 20
set title "Fresnel do ar para vidro"
#set name for file
set output "fresnel.eps"
#Define refractive index middle 1
ni = 1
#Define refractive index middle 2
nt =  3/2
#Define constant
k = ni/nt
#Define conversion
TRAD = pi/180.0
#define cos, sin conversion
sind(x) = sin(x*TRAD)
cosd(x) = cos(x*TRAD)
#Define sqrt
sq(x) = sqrt( 1 - k**2 * sind(x)*sind(x) )
sqd(x) = sq(x*TRAD)
#R perpendicular
ri(x) = (ni*cosd(x) - nt*sqd(x)) / (ni*cosd(x) + nt * sqd(x))
#R paralelo
rii(x) = - (nt*cosd(x) - ni*sqd(x)) / (ni*sqd(x) + nt*cosd(x))
#Function
p(x) = (ri(x) - rii(x)) / (ri(x) + rii(x))

set ylabel "ress"
set xlabel "Angulo de incidencia"
set yrange [-1:2.5]
set autoscale x
#ploting graph
plot p(x), ri(x) with line, rii(x) w line

我需要得到一个类似于链接的图表:

https://www.geogebra.org/m/wKk62nUk

EN

回答 1

Stack Overflow用户

发布于 2019-11-02 16:04:52

不是一个完整的解决方案,但有几点意见:

  • nt = 3/2使用整数除法并产生nt = 1。您希望将nt = 1.5.
  • The或nt = 3.0/2.0角度参数乘以TRAD。这是从度到弧度的转换。因此,应该将xrange设置为类似于set xrange [0:90]
  • You sqd(x) = ...sq(x*TRAD)...sq(x) = ...sind(x)...sind(x) = sin(x*TRAD)的值。这个链会将初始参数乘以TRAD*TRAD。最有可能的是,您希望将sq(x) = ...sind(x)...更改为sq(x) = ...sin(x)...

我们越来越接近所需的图形,但我们还没有完成。我想你应该再检查一下源方程。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58666148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档