プロが教えるわが家の防犯対策術!

数千のxyz座標データを、最小自乗法を用いて、二次曲面に近似したいのですが、どのようにしたらいいですか?
ご存知の方教えてください。
宜しくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

最小自乗法を適用するには、フィッテング関数の形を決めないといけません。


それには、座標データを3次元プロットして、データーが空間にどのように分布するかを把握して、どんな二次曲面の関数をフィッティング関数として採用すればいいかを決めないといけません。
例えば、データの空間分布が
z=f(x,y)=ax^2+bxy+cy^2+dx+ex+fy+g…(■)
でフィッテング可能かどうかを確認できるなら、最小自乗法を適用すればいいでしょう。
データの空間分布が(■)の形にそぐわない場合は、たとえ最小二乗法を使って(■)の関数形の関数が求まっても適切なフィッティング関数とは言えないかと思います。

まずは、データの二次曲面の関数形をxyz座標データの一部を3次元プロットして、三次元分布がどのような関数形で近似できるかを見極めることが一番ポイントだと思います。

関数形が
z=f(x,y),y=g(x,z),x=h(y,z),陰関数形の二次曲面など
どの関数形をフィッティング関数として選べばいいかを
見極めてください。

最小二乗法のフィッティングは
参考URLのフリーソフトのgnuplotを使えばいいでしょう。
そこに使い方や例題が載っていますので
未定係数のフィッティング関数を与えてやれば、未定係数が最小自乗法でフィッティングしてくれます。
ネット上にもgnuplotによるフィッテングの実例も沢山あると思いますので検索してみてください。

参考URL:http://t16web.lanl.gov/Kawano/gnuplot/intro/inde …
    • good
    • 1

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q2次曲面の最小二乗法

関数 f(x,y) = a(x+b)^2 + c(y+d)^2 + e
について、

http://home.hiroshima-u.ac.jp/tkurita/thesis/thesis/node151.html

の(392)式の形にしたいのですが、Xはどうなるでしょうか?

計算したところ、係数(a,b,c,d)が含まれてしまいます。
計算自体が間違っているのか、係数を消す方法があるのか、どうしてもわかりません。
ご教授お願いします。

計算の参考に用いたのは以下のページです。
http://www.eli.hokkai-s-u.ac.jp/~kikuchi/ma2/chap08.html

Aベストアンサー

無理です,あきらめましょう.

(390) を仮定して,2乗誤差 (391) の式を
a1 から a6 で偏微分して,偏微分が全て 0 となる
ように a1 から a6 を決める.

(390) の置き方では,偏微分が全て 0 の式が
a1 から a6 の連立一次方程式になるので,
(392) のように逆行列をかける形でかける.

あなたの関数の置き方で,2乗誤差 (391) 式を
a, b, c, d, e で偏微分すると,連立多次元方程式になるので,
(392) のような表記にはならない.

Q3次元曲面補間方法を探しています.

3次元データの補間方法のアルゴリズムを探しています.
不均等にサンプリングした3次元データ(x,y,z)を基に曲面補間を行いたいと思っています.
最初に,zを一定の基で基準データ(x,y)を取得し,データを基に係数を算出します.
システムは係数を用いて実際の取得データ(x,y)からzを補間したします.
現在のシステムは多項式で補間しています
しかし,もっとメモリを食わず,精度のよい補間補法がないか探しています.
一応候補として考えたものはスプライン曲面と細分割による処理です.
これらでは,問題点としてサンプリングした範囲を超えた(x,y)データでは補間ができないというものがあります.また,計算時間がかかるという問題点もあります.
これらに限らず,よい方法はありませんでしょうか.

Aベストアンサー

2変数関数フィッティング(2変数関数最小二乗法)などはだめですか?

スプライン曲面では個々のサンプリング点を必ず通りますが、誤差の大きいサンプリング点が入るとその近辺での補間誤差も大きく出ます。同じ系統に2次元パデ近似補間法が有ります(有限項数の2次元テーラー展開を多項式分数関数近似した補間法。展開範囲で平均的に補間誤差が少ないのが特徴)。

2変数関数フィッティング法は個々のサンプリング点を必ずしも通らず全体として誤差が少なくなるように補間しますので多少の領域外のデータの補間も可能です。フィッティング関数はデータの分布形に合った2変数関数を選ぶ必要があります。フィッテングにより2変数関数の中の係数パラメータが決定されます。(フリーソフトのgnuplotなど)

いずれも、自身のシステムに合わせて多少の作り込みや試行を行なってよりよい補間関数を求める必要があるかと思います。

Qエクセルで計算すると2.43E-19などと表示される。Eとは何ですか?

よろしくお願いします。
エクセルの回帰分析をすると有意水準で2.43E-19などと表示されますが
Eとは何でしょうか?

また、回帰分析の数字の意味が良く分からないのですが、
皆さんは独学されましたか?それとも講座などをうけたのでしょうか?

回帰分析でR2(決定係数)しかみていないのですが
どうすれば回帰分析が分かるようになるのでしょうか?
本を読んだのですがいまいち難しくて分かりません。
教えてください。
よろしくお願いします。

Aベストアンサー

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるための指数表記のことですよ。
・よって、『2.43E-19』とは?
 2.43×1/(10の19乗)で、
 2.43×1/10000000000000000000となり、
 2.43×0.0000000000000000001だから、
 0.000000000000000000243という数値を意味します。

補足:
・E+数値は 10、100、1000 という大きい数を表します。
・E-数値は 0.1、0.01、0.001 という小さい数を表します。
・数学では『2.43×10』の次に、小さい数字で上に『19』と表示します。→http://ja.wikipedia.org/wiki/%E6%8C%87%E6%95%B0%E8%A1%A8%E8%A8%98
・最後に『回帰分析』とは何?下の『参考URL』をどうぞ。→『数学』カテゴリで質問してみては?

参考URL:http://ja.wikipedia.org/wiki/%E5%9B%9E%E5%B8%B0%E5%88%86%E6%9E%90

★回答
・最初に『回帰分析』をここで説明するのは少し大変なので『E』のみ説明します。
・回答者 No.1 ~ No.3 さんと同じく『指数表記』の『Exponent』ですよ。
・『指数』って分かりますか?
・10→1.0E+1(1.0×10の1乗)→×10倍
・100→1.0E+2(1.0×10の2乗)→×100倍
・1000→1.0E+3(1.0×10の3乗)→×1000倍
・0.1→1.0E-1(1.0×1/10の1乗)→×1/10倍→÷10
・0.01→1.0E-2(1.0×1/10の2乗)→×1/100倍→÷100
・0.001→1.0E-3(1.0×1/10の3乗)→×1/1000倍→÷1000
・になります。ようするに 10 を n 乗すると元の数字になるた...続きを読む

Qエクセルの関数による近似式の求め方

(1)1,2,3,4 (2)5,6,7,8
(1)と(2)の二つの数字があります。
(1)をx軸、(2)をy軸としてエクセルの関数の式のみでy=a*x^2+b*x+cを求める事は可能ですか?
現状は(1)(x軸)と(2)(y軸)からグラフを書き近似曲線を描かせ、2次の多項式を表示させているんですが、大量にデータがあり、この作業に大変時間を要しています。調べに調べた結果、y=a*x+bの形は関数で表示可能なことは確認取れているんですが、2次の式は未だ発見できません。
非常に困っています。回答の方よろしくお願いします。また何か不明な点があったら何でも言って下さい。

Aベストアンサー

y の範囲 A2:A10
x の範囲 B2:B10
として、
C2=B2^2
C10までコピー。

と、しておけば
係数 a =INDEX(LINEST(A2:A10,B2:C10),1)
係数 b =INDEX(LINEST(A2:A10,B2:C10),2)
定数 c =INDEX(LINEST(A2:A10,B2:C10),3)

Q3次元での点群に対する最小二乗法での平面の算出について(点と平面の距離

3次元での点群に対する最小二乗法での平面の算出について(点と平面の距離。残差ではない。)

--

点と平面のZ軸方向の距離(残差)の二乗和を最小とする場合には、
平面をax+by+c=zとして、Σ(ax+by+c-z)^2をa,b,cのそれぞれで偏微分して
それを=0とした連立方程式を解くことで解を得ることが出来ました。
また、式の形も、ある点のxとyを平面の式へ代入した際の値と、点のz値の差分を見ており、
簡単に納得のできるものとなりました。

これに対して、点と平面の距離(空間的な最小距離)の二乗和を最小とする場合には、
どのような流れで計算すれば良いのでしょうか?
点と平面の距離は|Ax+By+Cz+D| (A,B,Cは単位ベクトル)として求まりますが、
これをどう使うのかが分かりません。
Σ(Ax+By+Cz+D)^2をA,B,C,Dのそれぞれで偏微分して=0としても、
定数項が無いため、連立方程式の解がすべてゼロとなってしまいます。
強引に、Σ(A'x+B'y+C'z+1)^2として変形させて解いてみましたが、
得られたA',B',C'からA,B,C,Dに戻すと、Dがきちんと出ませんでした。(他についても怪しい。)

こういった状況に迷い込んでしまい、どう考えるのが良いのか分からなくなってしまいました。
指南いただけませんでしょうか?

3次元での点群に対する最小二乗法での平面の算出について(点と平面の距離。残差ではない。)

--

点と平面のZ軸方向の距離(残差)の二乗和を最小とする場合には、
平面をax+by+c=zとして、Σ(ax+by+c-z)^2をa,b,cのそれぞれで偏微分して
それを=0とした連立方程式を解くことで解を得ることが出来ました。
また、式の形も、ある点のxとyを平面の式へ代入した際の値と、点のz値の差分を見ており、
簡単に納得のできるものとなりました。

これに対して、点と平面の距離(空間的な最小距離)の二乗和を最小とする場合に...続きを読む

Aベストアンサー

平面の式は、単に Ax+By+Cz+D=0 としたのでは、一意に決まりません。
同じ平面が、 2Ax+2By+2Cz+2D=0 とでも 3Ax+3By+3Cz+3D=0 とでも
書けるからです。
そのために、「(A,B,C) は単位ベクトル」としたのではありませんか?
だから、Σ(Ax+By+Cz+D)^2 を最小化するときに、単なる最小値でなく、
A^2+B^2+C^2=1 という制約下での最小値を探せばよいのです。
ラグランジュの未定乗数法が使えます。

あるいは、制約なしで、Σ(Ax+By+Cz+D)^2/√(A^2+B^2+C^2) を最小化
してもよいのだけれど。

Q近似曲線の数式を手計算で出したい。

エクセルを用いずに、近似曲線の数式をエクセルを用いずに算出したいです。

資料となるデータはあるし、計算機もあるのですが、エクセルは手元にないという状態です。

手計算で近似曲線のy=ax+bという数式を出すには、どのような計算をしたら算出できるのか、ご存じの方いらっしゃったら、どうか詳しく計算過程を教えて下さい。お願いします。

Aベストアンサー

線形近似においては、最小二乗法による推定が最も優れている(不偏かつ分散が小さい)ことがガウス=マルコフ定理によって証明されています。
最小二乗法とはデータが(X1,Y1),(X2,Y2),・・・(Xi,Yi)のように示されていると思うので、そのもとで
Σ(Yi-aXi-b)^2   (i=1,2,3・・・)
を最小化するようなa,bの組を見つけるという方法です。a,bの偏微分によって求めます。
具体的な式としては、Xの平均をX'、Yの平均をY'とし、データ数(標本数)をnとすると、
a=(ΣXiYi-nX'Y')/(ΣXi^2-nX'^2), b=Y'-aX'   (i=1,2,3・・・)
を得ます。
なお、ΣXiYiというのはX1・Y1+X2・Y2+・・・を意味し、ΣXi^2とはX1^2+X2^2+・・・を意味します。

例えば(X,Y)=(10,6),(12,9),(14,10),(16,10)というデータを考えると、標本数は4、Xの平均は13、Yの平均は8.75、ΣXi^2=696、ΣXiYi=468なので、これを代入して
a=(468-4×13×8.75)/(696-4×13^2)=0.65, b=8.75-0.65×13=0.3となり、
求める式はy=0.65x+0.3となります。

線形近似においては、最小二乗法による推定が最も優れている(不偏かつ分散が小さい)ことがガウス=マルコフ定理によって証明されています。
最小二乗法とはデータが(X1,Y1),(X2,Y2),・・・(Xi,Yi)のように示されていると思うので、そのもとで
Σ(Yi-aXi-b)^2   (i=1,2,3・・・)
を最小化するようなa,bの組を見つけるという方法です。a,bの偏微分によって求めます。
具体的な式としては、Xの平均をX'、Yの平均をY'とし、データ数(標本数)をnとすると、
a=(ΣXiYi-nX'Y')/(ΣXi^2-nX'^2), b=Y'-aX'   (i=1,2...続きを読む

Q3次元の近似直線

こんにちは。2次元で実験データなどの点列から近似直線を求めるのは、最小二乗法の基本問題ですが、3次元の点群から直線の方程式(x-x0)/a=(y-y0)/b=(z-z0)/cを求めるにはどんなアルゴリズムを使いますか?スマートな方法があれば教えていただけたら幸いです。よろしくお願いします。

Aベストアンサー

3次元空間の曲面ではなく、直線に乗ると仰るのだから、
(1) x, y, zのどれかを与えて、残りの2つを推定する問題。
(2) <x[i],y[i],z[i]>と直線との距離d[i]の二乗和が最小になる直線を求める問題。
と分類すべきでしょう。

(1)の場合は、たとえばzを与えてx,yを求めたいのであれば、
・zからxを求める問題。
・zからyを求める問題。
の二つを別々に解けばおしまいです。
それぞれの解は(x=Az+B, yは任意)という平面と、(y=Cz+D, xは任意)という平面を定めますから、この二つの平面の交線が、求める直線ということですね。

(2)の場合はやっかいです。
[1]ちょっと手抜きしながらも、まともにやってみましょう。
(i) 直線をどう表すか。
ご質問の式を見ると、この直線はx軸、y軸、z軸のどれとも平行でも垂直でもないことが仮定されています。
ですから、zをパラメータとして
x=az+c
y=bz+d
と書いても良いでしょう。a,b,c,dが決められれば良い訳です。
(ii) 点<p,q,r>と直線との最短距離を求める。
直線上の任意の点<az+c,bz+d, z>と点<p,q,r>の距離をdとすると
d^2 = (az+c-p)^2+(bz+d-q)^2+(z-r)^2
= (az)^2+2az(c-p)+(c-p)^2+(bz)^2+2bz(d-q)+(d-q)^2+z^2-2rz+r^2
です。これが最小になるzを求めると、
0=∂(d^2)/∂z = 2(az+c-p)a+2(bz+d-q)b+2(z-r)
ゆえに
z=(ap+bq+r-ac-bd)/(a^2+b^2+1)
であって、このときの最短距離h(p,q,r)は
h(p,q,r)^2 = (ap+bq+r-ac-bd)^2/(a^2+b^2+1)+2(ap+bq+r-ac-bd)(ac-ap+bd-bq-r)/(a^2+b^2+1)+(c-p)^2+(d-q)^2+r^2
わあ、とんでもないですね。
(iii) じゃあ、直線を求めるには?
S=Σ(h(x[i],y[i],z[i]))^2  (i=1,2,...,N)
を最小化するには
∂S/∂a = 0
∂S/∂b = 0
∂S/∂c = 0
∂S/∂d = 0
を解く必要があります。言い換えれば
∂(h(x[i],y[i],z[i]))/∂a
∂(h(x[i],y[i],z[i]))/∂b
∂(h(x[i],y[i],z[i]))/∂c
∂(h(x[i],y[i],z[i]))/∂d
を求めておいて
Σh(x[i],y[i],z[i]) (∂(h(x[i],y[i],z[i]))/∂a)=0
Σh(x[i],y[i],z[i]) (∂(h(x[i],y[i],z[i]))/∂b)=0
Σh(x[i],y[i],z[i]) (∂(h(x[i],y[i],z[i]))/∂c)=0
Σh(x[i],y[i],z[i]) (∂(h(x[i],y[i],z[i]))/∂d)=0
という連立方程式を解くことになります。
これがa,b,c,dについて非線形である(一次式でない)ことは言うまでもありません。一筋縄では行かず、反復計算で徐々に収束させていくしかありません。

[2]手抜き
もうすこし手抜きの方法を考えてみましょう。
この座標系を回転・平行移動した座標系をX-Y-Zとします。そして、求めたい直線がZ軸と一致するようにしたとします。回転と平行移動は行列を使って
X = R x + p
Y     y   q
Z     z   r
と表せます。Rは3×3の行列で Rの転置をR'とすると RR' = R' R = 単位行列
となる行列です。各点<x[i],y[i],z[i]>をこの変換で<X[i],Y[i],Z[i]>に写したとすると、
直線、すなわちZ軸との最短距離はX[i]^2 + Y[i]^2ですから、他のどんな回転・平行移動の仕方に比べても
U=Σ(X[i]^2 + Y[i]^2)  (i=1,2,....,N)
が最小になっている筈で、しかも
S=U
です。
 さて、UはZ[i]の値とは無関係ですからZ[i]を求める必要はない。さらに座標系をZ軸の周りで回転してもUは変化しません。従って、
X = R x + p
Y     y   q
      z
R =P(α)Q(β)
P(α)=cosα  0  -sinα
       0   1    0
Q(β)= 1  0     0
      0 cosβ -sinβ
      0 sinβ  cosβ
とすれば良いのです。展開すれば
X[i] = x[i]cosα-y[i]sinαsinβ-z[i]sinαcosβ+p
Y[i] = y[i]cosβ-z[i]sinβ+q
ですね。
ここでα、β、p、qを決めたい訳です。

 始めに(1)の問題を解けば、α、β、p、qの大体の値を求めることができます。これを使ってU(α,β,p,q)を計算します。
 それから、U(α,β,p,q)が小さくなるようにα、β、p、qをちょっとずつ改良して行けば良いでしょう。これには微小な角度Δα、Δβを使って、
P(Δα)=cosΔα  0  -sinΔα
        0    1    0
      sinΔα  0   cosΔα
Q(Δβ)= 1  0      0
       0 cosΔβ -sinΔβ
       0 sinΔβ  cosΔβ
を作り、P(α)、Q(α)にそれぞれ掛け算すれば良い。
P(α+Δα)=P(Δα)P(α)
Q(β+Δβ)=Q(Δβ)Q(β)
だからです。さらにここで、Δα、Δβは微小だから、
cosΔα≒1、cosΔβ≒1、sinΔα≒Δα、sinΔβ≒Δβ
(Δα)^2≒0、(Δβ)^2≒0、ΔαΔβ≒0
という近似をしても構わないでしょう。
この近似を利用すると計算は一層簡単になり、Uを最小にするようにΔα、Δβ、p、qを求める問題は線形最小二乗法(一次式の最小二乗法)になってしまい、簡単に解けます。
それを解いてから、真面目にP(α)、Q(α)を計算しなおし、また線形最小二乗法を解く。これを収束するまで繰り返せば良いのです。

なお、stomachmanは計算間違いの常習犯ですから、チェックは慎重に。

3次元空間の曲面ではなく、直線に乗ると仰るのだから、
(1) x, y, zのどれかを与えて、残りの2つを推定する問題。
(2) <x[i],y[i],z[i]>と直線との距離d[i]の二乗和が最小になる直線を求める問題。
と分類すべきでしょう。

(1)の場合は、たとえばzを与えてx,yを求めたいのであれば、
・zからxを求める問題。
・zからyを求める問題。
の二つを別々に解けばおしまいです。
それぞれの解は(x=Az+B, yは任意)という平面と、(y=Cz+D, xは任意)という平面を定めますから、この二つの平面の交線が、求め...続きを読む

QExcel近似曲線の仕組みについて

Excelグラフの近似曲線についての質問です。

業務でグラフを作成し、近似曲線を出す予定ですが、
Excelの近似曲線はどういった仕組みを使って書き込む方法がありますか?
当方は最小二乗法で書き込む方法しか存じ上げておりませんが、
それ以外にExcelグラフで近似曲線を求める方法はありますか?

業務上精度が悪いと使用できないため、もし他に近似曲線を出せる方法があれば
それも教えて頂きたいです。


よろしくお願いいたします。

Aベストアンサー

どういった近似をしたいのか不明なので,近似全般についてお話しします。

エクセルでは「最小二乗法」を使った近似と,他に「移動平均」を利用することも出来ます。
一般的な意味での「近似曲線」としては,定式化に応じて
・線形近似(直線近似)
・多項式の近似(二次以上の近似)
・指数近似
・対数近似
・累乗近似
などが出来ますが,いずれも最小二乗法を使っているので,基本的な計算方法や精度は同じです。
「グラフに近似曲線を追加する」だけなら,グラフを描いてプロットを右クリック,近似曲線の追加によって希望の近似曲線を追加します。
近似曲線のオプションで「R2」と「近似式」を表示させ,原則としてはR2の値が0.8以上であれば概ね信頼できる近似だと判定します。



>業務上精度が悪いと使用できない

しばしば寄せられるご相談ですが,グラフに表示させた近似曲線の式を「近似値の計算」に使ってはいけません。

「近似値を計算したい」が目的であれば,
・簡単な直線近似なら,FORECAST関数
・一次を含む多項式近似ならTREND関数
・指数近似ならGROWTH関数
を使います。

「近似式のパラメータ(近似係数)を得たい」のが目的であれば
・直線近似ならSLOPE関数とINTERCEPT関数
・多項式近似ならLINEST関数
・指数近似ならLOGEST関数
を使います。具体的な計算方法は,各関数のヘルプをよく読んで計算してください。



参考:
たとえば
A2:A11にXの数値
B2:B11にYの数値
があるとすると
C2に
=LN(A2)
D2に
=LN(B2)
を置いて11行までコピー

=SLOPE(B2:B11,A2:A11)と=INTERCEPT(B2:B11,A2:A11)で線形近似のパラメータ
=SLOPE(D2:D11,A2:A11)と=EXP(INTERCEPT(D2:D11,A2:A11))で指数近似のパラメータ
=SLOPE(B2:B11,C2:C11)と=INTERCEPT(B2:B11,C2:C11)で対数近似のパラメータ
=SLOPE(D2:D11,C2:C11)と=EXP(INTERCEPT(D2:D11,C2:C11))で累乗近似のパラメータ
をそれぞれ得ることも出来ます。


#補足
Excel2002までの近似曲線の計算式にはバグがあるので,近似の計算をしたいときにはExcel2003以降を利用する必要があります。
またExcel2003以降でも,グラフに表示させた近似式には計算間違いしたパラメータが現れる場合があります。


#既にオナカイッパイと思いますので,多項式近似の計算の仕方は下記などを参考に。
http://atiboh.sub.jp/t09takoushiki2.html

どういった近似をしたいのか不明なので,近似全般についてお話しします。

エクセルでは「最小二乗法」を使った近似と,他に「移動平均」を利用することも出来ます。
一般的な意味での「近似曲線」としては,定式化に応じて
・線形近似(直線近似)
・多項式の近似(二次以上の近似)
・指数近似
・対数近似
・累乗近似
などが出来ますが,いずれも最小二乗法を使っているので,基本的な計算方法や精度は同じです。
「グラフに近似曲線を追加する」だけなら,グラフを描いてプロットを右クリック,近似曲線の追加...続きを読む

QLNK2019: 未解決の外部シンボルのエラーが出る

Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す)
----------------------------------------------------------------
 プログラム

 mymain.cpp
#include "myhelper.h"
#include "mymain.h"

//自キャラのデータ
Point2D g_jikipos = {40, 400};//自キャラの座標

//画像ハンドル
int g_jikiimage[11];

//色々なファイルの読み込み
int LoadFiles(){
//画像ファイル読み込み
if(LoadDivGraph("media\\player01.bmp",
11,11,1,64,64,g_jikiimage) == -1) return -1;

return 1;
}


 mymain.h
//他から呼び出させるMyMainの関数
void MyMain();
int LoadFiles();


 myhelper.h(サンプルなので打ちミスはない)
#include "DxLib.h"
#include <limits.h>
#include <math.h>

//構造体宣言
//座標またはベクトルを記録する構造体
struct Vector{
float x,y;
};
typedef Vector Point2D;
//線を記録する構造体
struct Line2D{
Point2D startpos, endpos;
float katamuki;//傾きをラジアン値で記録
Vector speed;//移動している場合は速度をセット
};
//球体を記録する構造体
struct Ball2D{
Point2D position;
float hankei;//半径
};
//四角形を記録する構造体
struct Rect2D{
Point2D lefttop;
Point2D rightbottom;
float width;
float height;
};


//ライブラリ関数
Point2D PosInView(Point2D in);
int XInView(float inx);
int YInView(float iny);
void ScrollToLeft(float jikiposx);
void ScrollToRight(float jikiposx);
void ScrollToUp(float jikiposy);
void ScrollToDown(float jikiposy);
void DrawLineInView(float x1, float y1, float x2, float y2, int Color, int Thickness);
void DrawCircleInView(float x, float y, float r, int Color, int FillFlag);
void DrawAnimation(float x, float y, double ExtRate, double Angle,int TurnFlag,
int *imgarray, int allframe, float fps);
//ベクトル関数
Vector CreateVector(Vector in, float veclen);
Vector AddVector(Vector v1, Vector v2);
Vector SubVector(Vector v1, Vector v2);
Vector AddVectorInFrameTime(Vector pos, Vector speed);
Vector AddVectorInFrameTime2(Vector pos, Vector speed, Vector accel);
Vector Normalize(Vector in);
Vector RotateVector(Vector in, float radian);
float VectorLengthSquare(Vector in);
float DotProduct(Vector v1, Vector v2);
float CrossProduct(Vector v1, Vector v2);
void SetLine2DKatamuki(Line2D *in);
void DrawLine2D(Line2D in, int Color, int Thickness);
void DrawBall2D(Ball2D in, int Color, int Fill);
//当たり判定関数
bool HitTestLineAndBall(Line2D linein, Ball2D ballin);
bool IsPointAtLineFace(Line2D linein, Point2D ptin);
bool HitTestLineAndLine(Line2D line1, Line2D line2);
bool HitTestBallAndBall(Ball2D a, Ball2D b);
bool HitTestPointAndBox(Rect2D rect, Point2D pt);
//タイマー関数
void SetSimpleTimer(int idx, int time);
int GetPassedTime(int idx);


//グローバル変数
extern float g_frametime;
extern Rect2D g_framerect;//画面領域(当たり判定)
extern Point2D g_current_field_pos;//現在の左上座標
extern Rect2D g_stagesize;//ステージサイズ

//定数宣言
const float ZEROVALUE = 1e-10f;
const float PIE = 3.1415926f;
const int SCROLL_LIMIT = 200;
----------------------------------------------------------------
 エラー内容
1>myhelper.obj : error LNK2019: 未解決の外部シンボル "void __cdecl MyMain(void)" (?MyMain@@YAXXZ) が関数 _WinMain@16 で参照されました
1>C:\Documents and Settings\Owner\My Documents\Visual Studio 2008\Projects\my\Debug\my.exe : fatal error LNK1120: 外部参照 1 が未解決です
1>my - エラー 2、警告 0
ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ
----------------------------------------------------------------
画像を貼り付けときます
(見えにくい場合→http://www.dotup.org/uploda/www.dotup.org154142.jpg.html)
初心者なのでわかりやすくお願いします

Microsoft Visual Studio 2008
Version 9.0.21022.8 RTM
Microsoft .NET Framework
Version 3.5 SP1
----------------------------------------------------------------
新しいプリジェクト→Win32 コンソール アプリケーション(ソリューションのディレクトリを作成 チェック外す)→Windows アプリケーション(空のプロジェクト チェック外す)
----------------------------------------------------------------
 プログラム

 mymain.cpp
#include "myhelper.h"
#include "mymain.h"

//自...続きを読む

Aベストアンサー

ファイル構成から推測するに
mymain.cpp というファイルに
void MyMain(void) {
// ここに処理を書く
}
という関数が必要なようです。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング